首页> 中国专利> 用于高速内存在线分析处理查询和操作的加速查询操作器

用于高速内存在线分析处理查询和操作的加速查询操作器

摘要

为压缩数据的列初始化附加数据结构以包括一前缀,所述前缀为该列中的值的每一块存储比特向量内先前块中设置的比特的总数。为多个块中的目标块确定块号,例如通过检查指定行号是否位于所述前缀中。如果所述指定行号位于所述前缀中,则返回所述前缀的前缀值。如果指定行号内的比特向量中的相应比特不在所述前缀中,则返回最频繁出现的值,或返回指定行在该列的索引向量中的位置。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-17

    授权

    授权

  • 2014-12-03

    著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20120928

    著录事项变更

  • 2014-11-12

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20120928

    实质审查的生效

  • 2013-06-26

    公开

    公开

说明书

技术领域

在此描述的主题涉及数据库查询和其他操作的改进。

背景技术

多用户并行的对专用(ad-hoc)实时数据分析的需求正以与要处理的数据 量增长的方式相同的方式增长。为了跟上当前经济气候的竞争,具有关于组 织(例如公司)内和/或市场中的过程的最新信息以便能够迅速作出正确决定 是至关重要的。因此,尽可能快地处理由分析工具生成的查询是重要的。由 于对主存储器和外部存储器的访问时间之间的较大间隔,而导致完成这些需 求的限制因素一般是对外部存储器的访问。解决该问题的多个方法可以包括 将从外部存储器读取的数据限制为最小并且最快的可能访问,通过在主存中 保存和处理数据,避免输入和输出访问,以及并行处理分布于多个适合的服 务器系统(也称为“刀片”)的查询。

对主存中的所有数据的管理实际上相对快速地达到上限,特别是在数据 密集型应用中,数据密集型应用例如包括但不限于商业软件解决方案,商业 软件解决方案例如企业资源规划(ERP)系统。系统存储器(例如,随机访 问存储器或RAM)与盘空间相比通常更昂贵并且也被系统扩展能力限制到一 个上限。例如,既减少数据量(data volume)又允许高效使用单独的元组(tuple) 和域(field)的适当的压缩技术是非常有用的。所处理的数据单元大小的缩减凭 借CPU高速缓存的改善的使用率以及需要处理的数据量的缩减也能够提供额 外的速度益处。

在线事务处理(OLTP)和在线分析处理(OLAP)是两个潜在的应用, 其中高速数据处理可能是有用的。OLTP一般用于公司运营的日常业务,其中 许多短小事务并行执行并且需要高吞吐量。为写访问优化的数据库,例如按 行来组织数据(行存储)的典型的关系数据库管理系统(DBMS),能够适于 必须为最新的非常详细的事务数据。相比之下,支持决策制定的、在较长时 间段上对操作数据的分析更典型地集中于OLAP操作。一般地,OLAP查询 更复杂并且结果所需的详细程度较低。在读模式中与OLAP关联的较长时间 运行的事务通常仅仅访问某些列。因而,为读访问优化的数据库对于支持 OLAP过程来说是有益的。

发明内容

在一个方面,一种方法包括:访问表格中压缩数据的列,其至少包括在 该列中寻找一个或多个特定值而不必解压缩该列;从该列中删除最频繁出现 值的所有出现并在比特向量中存储所删除值的位置;初始化包含前缀的附加 数据结构,所述前缀为该列中值的每一块存储比特向量内的先前块中设置的 比特总数;确定多个块中的目标块的块号,其包括检查指定行号是否位于所 述前缀内;和如果所述指定行号位于所述前缀内则返回所述前缀的前缀值, 如果指定行号内的比特向量中的相应比特不在所述前缀中则返回最频繁出现 的值,或计算指定行在该列的索引向量中的位置。

在某些变化中,一个或多个以下特征可选地包括在任意可行的组合内。 确定块号可以进一步可选地包括基于所述索引向量内的命中位置估计所述块 号。所述命中位置可以可选地包括遍历该列的索引向量并且对未设置的比特 的数量进行计数的结果。该列中的数据可以可选地划分为多个固定长度的块。 该列中的同样的相邻值可以可选地被分组在一起以形成不同大小的块。所述 分组可以可选地包括管理包括不同大小块的起始位置的第一索引向量和与不 同大小块中的值相关联的第二索引向量。所述管理可以可选地包括通过仅存 储每个值和该值的出现次数来将连续值分组在一起。至少部分地通过对所述 比特向量中的比特进行计数,可以可选地确定压缩块和未压缩块的数目。可 以可选地使用先前命中的结果,例如至少部分地通过对于尚未遍历的列的区 域递增地调整先前命中的结果来使用先前命中的结果。

当前主题的实现方案包括但不限于具有一个或多个所描述的特征的系统 和方法,以及包含有形地具体化的机器可读介质的物品,所述介质可操作以 引起一个或多个机器(例如计算机等)产生这里描述的操作。类似地,也描 述了包括一个或多个处理器和耦合到一个或多个处理器的一个或多个存储器 的计算机系统。存储器,其可以包括计算机可读存储介质,可以对一个或多 个程序进行包括、编码、存储等等操作,所述一个或多个程序使得一个或多 个处理器执行这里描述的一个或多个操作。与当前主题的一个或多个实现方 案相一致的计算机实现的方法可以由驻留在单个计算系统或多个计算系统中 的一个或多个数据处理器实现。这样的多个计算系统可以经由一个或多个连 接(包括但不限于通过网络(例如因特网、无线广域网、局域网、广域网、 有线网等等)的连接)、经由一个或多个所述多计算机系统之间的直连,等等, 进行连接并能够交换数据和/或命令或其它指令等等。

此处描述的主题的一个或多个变化的细节在附图及以下的说明中阐述。 从附图和说明中以及从权利要求中此处描述的主题的其它特征和优点将显而 易见。虽然出于说明的目的、与企业资源软件系统或其它业务软件解决方案 或架构相关联地描述了当前公开主题的某些特征,但是应当容易理解这样的 特征并不是为了限制。所附权利要求目的在于定义所保护的主题的范围。

附图说明

并入并组成说明书的一部分的附图示出此处公开的主题的特定方面,并 连同说明书一起帮助解释与所公开的实现方案关联的一些原理。在附图中,

图1A、图1B、图1C和图1D示出例示各种数据压缩技术的表格的例子;

图2是示出具有一个或多个与当前主题的实现方案相一致的特征的方法 的方面的处理流程图;

图3是示出与当前主题的至少一些实现方案相一致的业务软件系统架构 的特征的示图;

图4是示出与当前主题的至少一些实现方案相一致的数据库管理系统架 构的特征的示图;和

图5是示出与当前主题的至少一些实现方案相一致的另一数据库管理系 统架构的特征的示图;

应用中,同样的参考标号表示同样的结构、特征或元件。

具体实施方式

加速数据库操作的基于硬件的方法可以包括在系统主存(main memory) 中维护全部或部分数据库,其不断地在每单位数据存储容量方面逐渐变得不 是很昂贵。在内存(in-memory)数据库系统中,对查询做出响应所需要的数据 可以保存在快速主存中以避免或至少减少发生对外部存储器的昂贵的访问。 传统数据库通常被优化用于面向块的外部存储器访问,而内存数据库可以使 用其它数据结构,该其它数据结构直接对存储器地址操作并且可以绕过缓存 管理或页面访问。如果应用要求特定的短的可预测的响应时间,则使用内存 方法也是有益的。然而,主存的易失性通常要求数据被保存在外部存储器中。 此外,具有包含二进制数据(BLOB)并且不能如此频繁地被访问的域的数据 库中的属性可以可选地保留在外部存储介质中,从而所请求的值仅在要求时 加载到存储器中。

为了能够在快速主存中操作大量数据,适当地压缩数据是必要的。由于 计算机可读介质的费用,基本从数字数据存储器开始,在数据库中使用压缩 就已经成为研究的主题。然而,对数据库压缩的可能改进的许多先前的研究 主要地集中于减少存储空间和数据转移,而较新的研究领域涉及速度的增加, 这能够通过使用压缩的数据来实现。例如,由于压缩的数据,系统只好比较 用于操作(例如连接(join)或选择)的较小数据量,并且另外可用的存储器允 许其在高速缓存中保存较大量的频繁使用的页面。

为了实现现代业务应用和其它数据密集型计算应用的需求,适当地优化 和调整查询操作器以及有效地压缩数据是必要的。可能的方法可分为软件优 化和硬件优化。关于软件优化,可在压缩数据结构或索引结构基础上应用高 级算法。这样的算法可基于程序员或其它专业人员的专业知识,利用特定属 性来加速扫描、单独访问、聚合、连接以及其它基本的数据库操作器。

数据压缩的适当应用可单独有效地减少数据仓库中的查询所需要的存储 器的量和运行时间。然而在查询执行的上下文中,由于在查询执行的中间步 骤需要解压已压缩数据而阻碍了最佳结果的取得。不管从处理立场还是在主 存的使用率方面,这样的过程都相当昂贵。

为了解决这些以及潜在的其它困难,与当前主题的一个或多个实现方案 相一致的当前可用的解决方案、方法、系统、制造物品等除了其它可能的优 势之外能够提供软件优化,所述软件优化能够提高数据库操作对压缩的数据 执行的速度,所述数据库操作包括但不限于扫描、单独访问、聚合、连接等 等。

描述了用于扫描操作器(operator)、单独访问操作器、聚合操作器等等 的有效算法。在某些实现方案中,这些操作器能够直接在压缩的数据上工作, 至少部分地由于用于进一步优化的特殊反向索引(special inverted index)结 构的实现。除了数据库操作器的软件优化之外,也可使用硬件优化。

如果查询执行要求昂贵的数据解压或额外的存储器的使用,压缩的益处 将大大地降低甚至消失。因此,可以期望查询操作器(和/或其它数据库操作) 尽可能直接地工作于压缩的数据上并且利用所使用的各个数据结构的特定属 性。使用依赖于所使用的数据分布和压缩数据技术的当前主题的一个或多个 实现方案可以实现有效的速度提升。

在线分析处理(OLAP)环境中的最基本的操作器是扫描操作器,其允许 对具有可选地指定的谓词(predicate)的数据的过滤。与一般在公司运营的日常 业务中使用的、其中许多短小事务并行执行并且需要高吞吐量的在线事务处 理(OLTP)环境不同,OLAP环境更典型地集中于用于支持决策制定的在较 长时间段上对操作数据的分析。OLTP优化的数据库一般强调写访问,例如按 行组织数据(行存储)的关系数据库管理系统(DBMS),尤其适于必须为最 新的非常详细的事务数据。相反,其中按列组织数据的列存储方法有益于 OLAP环境。

扫描操作器的能力(power of scan operator)有重要意义,尤其在具有海量 数据(mass data)和非选择性谓词的情况下。另外的重要操作器是单独访问操作 器,其使得能够对于特定行号直接读取列中的值(或对字典的参考)。两种操 作器的速度依赖于结果(比特向量或整数向量)所使用的数据结构、所使用 的压缩技术、和潜在的一个或多个其它因素。

除了直接工作于压缩的数据结构之外,反向索引可以如此处描述的那样 使用以加速面向块的压缩技术上的扫描。与传统的索引结构相对比,数据库 管理系统不需要知道每个值的行号,但是改为存储其中出现该值的块的列表。 在扫描期间,只有这些块需要被处理。其中出现值的块越少,必须检查的数 据越少,并且速度的增益越大。

域编码(domain coding)可以用作此处描述的附加编码技术的开始基础。在 域编码中,列中的值以特定顺序存储在字典中并且接着仅保存比特压缩的链 接(索引向量)。因此,如图1A的表100所示具有n个整数和u个不同值的 最小比特长度的编码仅需要个比特,其中索引向量102中的每一值由 字典104中的两个比特表示,并且以斜体显示的列仅逻辑地存在因为它们从 上下文隐含地产生。另外,使用整数而不是原始值在速度方面带来益处,这 是因为要处理的数据量降低并且针对这类数据对处理器进行了优化。例如, 这意味着更多数据适合快得多的高速缓存并且可以利用特殊处理器命令根据 SIMD原理(单指令、多数据)并行处理若干值。

如果一个值在数据中出现得非常频繁,则可以使用稀疏编码,例如图1B 的表110中所示。在该方法中,最频繁出现的值vf的所有出现都被删除并且 位置被存储在比特向量Bnf112中,由此如果相应行的值不是vf则设置比特。 如果存在前缀,所述前缀偏移量op指定其中该值不同于所述前缀值vp的第 一行。不同于vf的所有剩余值都存储在比特压缩的索引向量Inf114中。此外, 向比特向量应用前缀编码是可能的,由此大前缀p也会带来相当大的额外节 约。利用该技术,所需要的存储器的量(比特)由给 出。

在图1B中,示例数据的未压缩的索引向量116与在应用稀疏编码后的压 缩的索引向量114相对比地显示。如果一个值出现在所有行的超过大约90% 的行中,则稀疏编码可在存储器和速度方面特别有效。如果值出现得较不频 繁,通过比特向量的间接访问的成本通常超过压缩的益处。

为了加速对所设置的比特的计数,附加的数据结构可以被初始化。这个 附加的数据结构可包括前缀p,所述前缀p为每一块存储在先前块中设置的 比特的总数。此外,可以对于尚未考虑的区域使用并且递增地调整先前命中 (previous hit)的结果。单独访问操作器可首先检查要读取的行是否位于所述前 缀内。如果是,则操作器返回vp。否则,在Bnf112中测试相应的比特。如 果该比特没有被设置,则查询最频繁出现的值并返回vf。如果两个条件都不 符合,则必须通过对Bnf112中的比特和所抽取的关联值计数来计算Inf中的 位置。

如图1C表120中所示移除前缀后可使用聚类编码(cluster coding)将数 据划分成固定长度的块,其包括两个值的块大小。这些数据块包含尽可能少 量的不同值以实现优良的压缩率。因此,在聚类编码情况下,只有具有一个 不同值的块通过仅仅存储出现的该值来压缩。比特向量122记录哪些块被压 缩,以便能够恢复原始数据。元素的数量可以有利地为2的幂,其能够允许 取代乘法和取模而使用比特移动(bit-moving)及比特链接(bit-linking)的更快 的方法。

如果块中仅存在一个不同值,则相应值仅写入索引向量Iv124中一次并 且在比特向量Bc122中注释该块被压缩。否则,块中的所有值都存储在Iv124 中。

如果由于可能存在压缩块而导致不知道正确的块号,则首先基于命中位 置(hit position)估计正确的块号。基于该信息,压缩块和未压缩块的数量可 通过对Bc122中的比特进行计数来确定并且用于计算Iv124中的位置。只要 该位置与命中位置不匹配,系统就不得不进一步对块进行分析并且更新该信 息。一旦正确的块被确定,则绝对行号能够从前缀偏移量、压缩值的数量、 和未压缩值的数量中计算出来。如果当前块没有被压缩,则一行被加入到结 果中。否则,命中可以对应于未压缩数据中的多于一行。

对于稀疏编码,中间结果被再次使用并且附加的辅助结构被创建以加速 计算。为了访问单个值,执行检查以确定指定的行号r是否位于前缀(op) 中以及是否有必要返回所述前缀值。如果不是这样,需要的值位于其中的块 b可以被确定。接着,比特向量Bc122可以被用来确定b前面的压缩块的数 量(nc)和未压缩块的数量(nu)并且可以从其计算临时索引i。例如,为了 访问Iv124:压缩块的数量依下式计算:i=op+nc+(nu*1024)。如果块b被 压缩,则该值使用i从索引向量中读取。否则,该值在块中的偏移量o接着 可以加入到该索引:o=r-(b*1024)。

在如果数据块包含多于一个但非常少的不同值则能够被使用的间接编码 的情况下,如图1D的表130中所示,用于列中的值的代码能够被指定为具 有可变和固定长度并且忽略所述前缀。因此,每一压缩数据块包含其自己的 迷你字典。在这种情况中,域编码可以被用于值得此编码的块,其引入另一 间接程度并且制作每个块所需的单独迷你字典。为了减少字典的数量并且由 此减少它们的存储空间,如果新的条目不增加表示它们所需的比特数量,则 相邻的块使用相同的字典。在具有ucol个不同值的列的情况下,如果字典的 大小和引用(reference)小于未压缩数据(仅域编码),即, 则具有k个条目和ublock个不同值的块是 值得的:

在未压缩块的情况下,所有值都被存储,即使它们出现不止一次。基于 图1D例子示出了实现方案中所使用的数据结构,由此一个块由四个值组成 并且压缩元素显示在水平分界(cutoff)线之上。字典和未压缩数据可以存储 在块字典索引向量132中并且使用整数开始位置134在逐块的基础上被编址。 压缩块也具有包含到关联的块字典132的引用的字典偏移量索引向量136。

对每一块的局部字典(local dictionary)的引用一般具有固定长度。对列 的全局字典(global dictionary)的引用可以被存储而无需用于具有太多不同 值的未压缩块的附加的间接。对全局字典的引用具有固定长度。因此它们可 以被存储在比特压缩的索引向量(Iv)中。此外,关于Iv中的局部字典的开 始位置的信息以及每一块的局部引用(O)存储在向量Vbi中。

一旦已经对于对全局字典的每一引用检查了谓词P,为所有命中(hit)重建 行号。为此,首先可以基于开始位置s确定关联的块b。从Vbi中读取对局部 字典的引用O。如果该块未被压缩并且不包含任何局部引用,则基于该块中 的位置(命中位置-开始位置)计算绝对行号。否则,确定对该局部字典的 引用的值并且可以检查对该局部字典的所有局部引用。使用所关联的位置j 为每一匹配计算绝对行号。

为了抽取给定行号r的值,可以首先确定相应块b并从Vbi中读取其开 始位置s。如果该块未被压缩,则依下式计算用于访问Iv的索引i: i=r-(b*1024)+s。否则,可以确定相应的局部引用的值并且将其加入到开始位 置以获得正确的索引。局部引用的位置通过从该行号中减去先前块(b*1024) 中的值的数量来确定。

在游程编码(run-length coding)中,同样的相邻值被一起分组到不同大小 的块。为此,管理包含块的开始位置(Is)和所关联的值(Iv)的两个索引向 量,从而通过仅存储值和出现的次数来将连续值分组在一起。为了更快地访 问,可以可选地创建反向索引。反向索引可以为每个值存储到索引向量的进 入点。利用该压缩技术,对于其中值变化的数量并不比不同值的数量大得多 的数据可以取得最佳结果。因此,个别值连续出现的频率越低,所使用索引 向量可以变得越大,从而导致扫描速度越低。

在扫描的开始,系统检查是否存在该可选索引。如果存在,则使用该可 选索引确定要考虑的块。为每一块从Is中读取起始和结尾行号并且可以将相 应范围插入到结果中。如果反向索引结构不存在,则必须对Iv中的所有值测 试测试该谓词以确定块。

为了访问单个值,可以对索引向量Is执行对于所请求的行号的二进制搜 索。一发现正确的块,就从Iv中读取并返回所关联的值。

除了以上针对扫描操作器讨论的实现方案之外,本主题的实现方案可以 提供了用于聚合的最优化选择。在压缩列上的分组及聚合可以被实现为扫描 的一部分,并因此使得使用谓词的过滤能够实现,而无需附加的努力。此外, 可仅使用字典而不必扫描来分析一些聚合函数,例如MIN(最小)和MAX(最 大)。在进一步的实现方案中,也可以计算用于多种压缩技术的列的COUNT (计数)聚合。对总数的计算可以以同样的方式来进行并且在对频率进行计 数之后可以要求对列的字典的附加访问以将实际值与每一组的数量相乘。为 了存储每组的值的数量,可以使用阵列G,阵列G可以使用字典引用(索引 向量中的值)来访问。

在稀疏编码的情况下,通过比特向量Bnf112中的比特的删除来标记最频 繁出现的值vf的出现并且剩余的值被写入到索引向量Inf114中。对于具有值 vp的大小为op的前缀,考虑到谓词P的COUNT聚合的最优算法按如下方 式来构造。

首先,可以检查前缀,并且如果必要的话,可以复制前缀值的频率。接 着,通过对未设置的比特计数,可以以同样的方式确定最频繁出现的值的出 现次数。最后,可以遍历索引向量Inf114并且对于每次命中使所关联的频率 递增。

由于聚类编码的应用,数据可以被分割成固定长度的块,由此对于具有 一个不同值的块,该值仅存储在索引向量中一次并且相应地在比特向量中被 注释。在聚合期间,索引向量和比特向量可以被遍历并且在压缩块的情况中 (比特被设置),关联值的频率被增加1024。

在间接编码的情况下,系统必须在包含块信息的向量上迭代,并且依赖 于偏移量的出现,在索引向量中查找条目。相反,当使用游程编码时聚合具 有更好的优化潜力。在该情况下,使用开始行好的差简单地计算每一值的频 率,而不必处理许多数据。

图2示出在本主题实现方案中包括的一个或多个方法特征的处理流程图 200。在202,在表中访问压缩数据的列。所述访问可以包括在该列中寻找一 个或多个特定值而不必将该列解压缩。在204从该列中删除最频繁出现的值 的所有出现并且可以将所删除值的位置存储在比特向量中。在206初始化附 加的数据结构,该附加的数据结构包括前缀,所述前缀为该列中的值的每一 块存储比特向量中的先前块中设置的比特的总数。每一压缩数据块包含其自 己的迷你字典。在210可以确定多个块中的目标块的块号,例如通过检查指 定行号是否位于前缀内来执行该确定。在212,如果指定行号位于前缀内, 则前缀的前缀值被作为结果返回,或者如果指定行号内的比特向量中的相应 比特不在前缀内,则最频繁出现的值被作为结果返回,或者指定行在该列的 索引向量中的位置被计算并且被作为结果返回。

图3示出实现当前主题的一个或多个特征的系统的示图。计算系统302 可以包括提供包括数据库管理特征的业务软件系统或其它软件的一个或多个 特征的一个或多个核心软件平台模块304。该计算系统也能够聚合或者以其 它方式提供网关,经由该网关用户可访问由一个或多个外部软件组件306提 供的功能。一个或多个客户机308可经由直连、本地终端、或经网络310(例 如局域网、广域网、无线网、因特网等等)来访问该计算系统。

数据库管理代理(agent)312或其它相当的功能可访问包括至少一个表 格316的数据库314,表316能够进而包括至少一个列。数据库管理代理312 可实现此处讨论的实现方案的一个或多个特征。数据库表格可存储任意类型 的数据,潜在地包括但不限于业务情景、业务过程、和一个或多个业务配置 的定义,以及事务数据、元数据、主数据等等,所述事务数据、元数据、主 数据等等涉及业务情景、业务过程、和一个或多个业务配置的实例或定义, 和/或与业务情景或业务过程等的特定实例相关的数据对象和/或业务对象的 具体实例。

当前主题的各种实现方案的一种可能的使用可以包括处理企业资源计划 (ERP)系统、其它业务软件架构、或其它数据密集型计算应用或软件架构 的数据库需求。在某些例子中,这样的应用可以被提供为在特定组织控制下 的一个或多个处理器上运行的独立的、定制的软件安装。该布置对于具有非 常复杂的内部信息技术(IT)的职员的大规模组织,以及对于在需要定制商 业可用的业务软件解决方案以与组织特定的商业过程和功能一起工作的计算 硬件和咨询服务中的相当大的资金投资是可行的组织,非常有效。图1的示 图描述了这样的系统的例子。

可选地或附加地,将表格或表格内的区域分配给不同的数据库分区,所 述不同的数据库分区被分配给不同的主机,例如出于数据分发和/或扩容 (scalability)的原因。图4示出与包含用于扩容原因的数据分发的实现方案 相一致的企业资源系统架构400的例子。这样的配置可以用于具有高性能需 求的大的、定制(on-premise)或独立的系统。每一数据服务器过程402及其所 关联的数据分区404可以被分配给离散的主机406。主机406可为具有一个 或多个物理处理器的独立机器或如图4中描述的较大系统302上的虚拟机。 图4中标记为名称服务器412的中央组件知道系统的拓扑以及如何分发数据。 在具有数据分发的系统中,名称服务器知道哪些表格和表格中的哪些分区位 于哪个数据服务器过程402上。一个或多个客户端414(例如客户机308)可 以经由直连或经网络416访问名称服务器412。

在数据分发情景中,分区可通过表格方式或通过拆分表格来进行。利用 表格方式分区,名称服务器基于表格的当前分布(分配给每一数据库服务器 过程402的表格的数量),分配新的表格给数据库服务器过程402。接着,用 于该表格的数据将仅仅驻留在数据库服务器过程402上。指定在多个数据库 服务器过程402上拆分表格也是可能的。基于通过应用指定的大小估计,命 称服务器412可选地将表格分区。当记录插入到拆分的表格中时,可以基于 名称服务器信息将记录分发给其它数据库服务器过程402。

较小的组织也可受益于业务软件功能的使用。然而,这样的组织可能缺 乏必要的硬件资源、IT支持、和/或利用独立业务软件软件架构产品所需要的 咨询预算,并且在某些情况下可以通过软件即服务(SaaS)配置提供更有效 的服务,在软件即服务配置中,业务软件系统架构被托管(hosted on)在诸如服 务器和数据储存库的计算硬件上,所述服务器和数据储存库被保持在远离组 织位置处并且由在组织处的授权用户经由诸如网络浏览器的瘦客户机或通过 网络来访问。

在软件递送(delivery)配置中,被提供给多个组织中的每一个的业务软件 系统的服务被托管在专用系统上,该专用系统仅能够访问该组织,其中该专 用系统处的软件安装可以以与以上描述的单独的例子相同的方式来定制和配 置,所定制的软件安装局部地运行于组织的硬件上。然而,为了更有效地使 用SaaS供应商的计算资源并且提供重要的性能冗余和更好的可靠性,能够有 利是在包括多个服务器并以安全的方式维护多个承租者的全部的数据的单个 系统上托管多个承租者,同时也提供为每一承租者的业务过程量身定制的定 制解决方案。

如图5的系统架构500中所示,与当前主题的实现方案相一致的数据分 区也可以用在多承租环境中。多个承租者502,每一个与另一个相隔离并且 可以由多个组织中的单独组织504中的客户机414经由网络416来访问,多 个承租者502可由同一主机406主控(host),主机406可以为图5中所示的 较大系统302上的虚拟机或包括一个或多个物理处理器的单独系统。承租者 502也可选地分布在多于一个的主机406上的多个数据库服务器过程402上。 以这种方式,由于扩容的原因,表格或表格内的区域被分配给不同的数据库 服务器过程402,所述不同的数据库服务器过程402分配给不同的主机406。 可替代地,一个或多个承租者502可由单个数据库服务器过程402来提供服 务,所述单个数据库服务器过程402访问与其他承租者502隔离的各个承租 者502的数据分区404(或多个数据分区404)。

为了提供由单个软件递送架构支持的多个组织中的每一个的业务过程的 定制,由数据库管理系统存储的数据和数据对象可以包括三种类型的内容: 核心软件平台内容(例如,业务过程的标准定义)、系统内容和承租者内容。 核心软件平台内容包括表示核心功能并且承租者不能修改的内容。在某些例 子中,系统内容可以由核心软件平台的运行时创建并且可以包括核心数据对 象,所述核心数据对象存储与可用每一承租者提供的数据修改的给定业务过 程的特定实例相关联的具体数据。保存在这些数据对象中的数据是特定于承 租者的:例如,承租者组中的每一承租者可存储关于其自身的库存、销售订 单等等的信息。与承租者组中每一承租者隔离的承租者内容包括数据对象或 到其它数据对象的延伸,所述数据对象或到其它数据对象的延伸是为承租者 组中每一特定承租者定制的、用于反映特定于该特定承租者并且仅能由相应 承租者处的授权用户来访问的业务过程和数据。这样的数据对象可包括关键 字域(key field)(例如库存跟踪情况下的“客户”)以及一个或多个主数据 (master data)、业务配置信息、事务数据等等。例如,承租者内容可反映对业 务过程的标准模板定义的特定于承租者的修改或改变以及涉及单个过程步骤 的业务对象的特定于承租者的定制(例如生成的条件表格中的记录、访问序 列、价格计算结果、其它特定于承租者的值等等)。访问软件平台内容、系统 内容和承租者组中的特定承租者的承租者内容的组合,以根据该承租者的定 制和业务数据提供业务过程定义和/或涉及业务过程的特定实例的状态信息, 从而为承租者组中的每一承租者提供对定制的解决方案的访问,该定制的解 决方案的数据仅可以由那个承租者中的用户访问。

此处描述的主题的一个或多个特征或方面可在数字电子电路、集成电路、 专门设计的专用集成电路(ASIC)、现场可编程门阵列(FPGA)计算机硬件、 固件、软件、和/或它们的组合中实现。各种这些特征或方面可以包括在包括 至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或多个计 算机程序中的实现方案,所述可编程处理器可以是专用或通用的,被耦合以 从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并向 存储系统、至少一个输入设备和至少一个输出设备传送数据和指令。所述可 编程系统或计算系统可包括客户机和服务器。客户机和服务器通常相互远离 并且一般通过通信网络交互。客户机和服务器的关系依据运行在各个计算机 上并且相互具有客户机-服务器关系的计算机程序而产生。

这些计算机程序,其也可以被称为程序、软件、软件应用、应用、组件、 或代码,包括用于可编程处理器的机器指令,并可以以高级过程和/或面向对 象的编程语言、和/或汇编/机器语言来实现。如此处所使用的,术语“机器可 读介质”是指任意计算机程序产品、装置和/或设备,例如磁盘、光盘、存储 器、和可编程逻辑器件(PLD),用于提供机器指令和/或数据给可编程处理器, 包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信 号”是指用于提供机器指令和/或数据给可编程处理器的任意信号。机器可读 介质可以非暂时性地存储这样的机器指令,例如可以像非暂时性固态存储器 或磁硬驱或任意等同的存储介质那样存储这样的机器指令。可替换地或附加 地,机器可读介质可以以暂时性的方式存储这样的机器指令,例如可以像与 一个或多个物理处理器内核相关联的处理器高速缓存或其它随机访问存储器 那样存储这样的机器指令。

为了提供与用户的交互,此处描述的主题的一个或多个方面或特征可实 现在具有显示设备和键盘和定点设备的计算机上,所述显示设备例如用于显 示信息给用户的阴极射线管(CRT)或液晶显示器(LCD)或发光二级管(LED) 监视器,所述键盘和点设备,例如鼠标或跟踪球,通过它们用户可提供输入 给计算机。其它类型的设备也可用于提供与用户的交互。例如,提供给用户 的反馈可以是任意形式的感觉反馈,例如视觉反馈、听觉反馈、或触觉反馈; 并且来自用户的输入可以任意形式接收,所述任意形式包括但不限于声音、 语言、或触觉输入。其它可能的输入设备包括但不限于触摸屏或其它触敏设 备例如单点或多点电阻或电容轨迹板、语音识别硬件和软件、光学扫描仪、 光学指针、数字图像捕获设备和所关联的解释软件等等。

此处描述的主题可以依赖于要求的配置以系统、装置、方法和/或物品来 具体实施。在前面的描述中阐述的实现方案并不代表与此处描述的主题相一 致的所有实现方案。相反,它们仅仅是与涉及所描述的主题的方面相一致的 一些例子。虽然上面已经详细描述了各种变化,但是其它的修改和增加也是 可能的。具体来说,除此处阐述的特征和变化之外,进一步的特征和/或变化 也可以被提供。例如,上面描述的实现方案针对所公开的特征的多种组合和 子组合和/或以上公开的若干进一步的特征的组合和子组合。另外,附图中描 绘的和/或此处描述的逻辑流程并不一定要求示出的特定顺序、或连续的顺序 以实现期望的结果。其它实现方案可以落在所附权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号