CN103177062B - 用于高速内存在线分析处理查询和操作的加速查询操作器 - Google Patents
用于高速内存在线分析处理查询和操作的加速查询操作器 Download PDFInfo
- Publication number
- CN103177062B CN103177062B CN201210448474.3A CN201210448474A CN103177062B CN 103177062 B CN103177062 B CN 103177062B CN 201210448474 A CN201210448474 A CN 201210448474A CN 103177062 B CN103177062 B CN 103177062B
- Authority
- CN
- China
- Prior art keywords
- value
- block
- bit
- row
- prefix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
Abstract
为压缩数据的列初始化附加数据结构以包括一前缀,所述前缀为该列中的值的每一块存储比特向量内先前块中设置的比特的总数。为多个块中的目标块确定块号,例如通过检查指定行号是否位于所述前缀中。如果所述指定行号位于所述前缀中,则返回所述前缀的前缀值。如果指定行号内的比特向量中的相应比特不在所述前缀中,则返回最频繁出现的值,或返回指定行在该列的索引向量中的位置。
Description
技术领域
在此描述的主题涉及数据库查询和其他操作的改进。
背景技术
多用户并行的对专用(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中。
如果由于可能存在压缩块而导致不知道正确的块号,则首先基于命中位置(hitposition)估计正确的块号。基于该信息,压缩块和未压缩块的数量可通过对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)监视器,所述键盘和点设备,例如鼠标或跟踪球,通过它们用户可提供输入给计算机。其它类型的设备也可用于提供与用户的交互。例如,提供给用户的反馈可以是任意形式的感觉反馈,例如视觉反馈、听觉反馈、或触觉反馈;并且来自用户的输入可以任意形式接收,所述任意形式包括但不限于声音、语言、或触觉输入。其它可能的输入设备包括但不限于触摸屏或其它触敏设备例如单点或多点电阻或电容轨迹板、语音识别硬件和软件、光学扫描仪、光学指针、数字图像捕获设备和所关联的解释软件等等。
此处描述的主题可以依赖于要求的配置以系统、装置、方法和/或物品来具体实施。在前面的描述中阐述的实现方案并不代表与此处描述的主题相一致的所有实现方案。相反,它们仅仅是与涉及所描述的主题的方面相一致的一些例子。虽然上面已经详细描述了各种变化,但是其它的修改和增加也是可能的。具体来说,除此处阐述的特征和变化之外,进一步的特征和/或变化也可以被提供。例如,上面描述的实现方案针对所公开的特征的多种组合和子组合和/或以上公开的若干进一步的特征的组合和子组合。另外,附图中描绘的和/或此处描述的逻辑流程并不一定要求示出的特定顺序、或连续的顺序以实现期望的结果。其它实现方案可以落在所附权利要求的范围内。
Claims (19)
1.一种计算机程序产品,其包含计算机可读介质,该计算机可读介质存储指令,所述指令当被至少一个可编程处理器执行时引起该至少一个可编程处理器执行以下操作:
访问表格中的压缩数据的列,所述访问包括在该列中寻找一个或多个特定值,而不必解压缩该列,其中所述压缩数据包括来自字典的值,其中所述值包括所述一个或多个特定值,其中每个所述值用索引向量中的对应比特值进行编码;
从该列中删除出现最频繁的值的所有出现并将所删除的出现的位置存储在比特向量中,其中所述比特向量包括当相应行的值不是最频繁出现的值时设置的比特;
初始化包含前缀的附加数据结构,所述前缀为该列中的值的多个块中的每一块存储针对所述多个块中该块之前的块在所述比特向量中设置的比特的总数;
响应于所述访问,确定所述多个块中的目标块的块号,其中所述目标块包含所述一个或多个特定值,其中所述确定包括检查与要访问的块号对应的指定行号是否位于所述前缀中;以及
如果所述指定行号位于所述前缀中,则返回所述前缀的前缀值,
如果所述指定行号不在所述前缀中,则
如果用于所述指定行号的相应比特没有被设置在所述比特向量中,则查询最频繁出现的值并且返回最频繁出现的值,并且
如果用于所述指定行号的相应比特被设置在所述比特向量中,则通过对所述比特向量中的比特进行计数来计算所述指定行号在该列的索引向量中的位置并且返回该位置。
2.根据权利要求1所述的计算机程序产品,其中所述确定块号进一步包括基于索引向量内的命中位置估计块号,所述命中位置是遍历该列的索引向量并且对未设置的比特的数目进行计数的结果。
3.根据权利要求1所述的计算机程序产品,其中所述操作进一步包括将该列中的值划分为所述多个块,所述多个块中的块具有固定长度。
4.根据权利要求1所述的计算机程序产品,其中所述操作进一步包括将该列中的同样的相邻值分组在一起以形成不同大小的块,所述分组包括管理包含不同大小的块的起始位置的第一索引向量和与不同大小的块中的值相关联的第二索引向量,所述管理包括通过仅存储每一值及该值出现的次数来将连续值分组在一起。
5.根据权利要求1所述的计算机程序产品,其中所述操作进一步包括至少部分地通过对比特向量中的比特进行计数来确定压缩块和未压缩块的数量。
6.根据权利要求1所述的计算机程序产品,其中所述操作进一步包括使用先前命中的结果,所述使用包括对尚未被遍历的列的区域递增地调整先前命中的结果。
7.一种系统,包括:
至少一个可编程处理器;和
机器可读介质,其存储指令,所述指令当被至少一个可编程处理器执行时引起所述至少一个可编程处理器执行以下操作:
访问表格中的压缩数据的列,所述访问包括在该列中寻找一个或多个特定值,而不必解压缩该列,其中所述压缩数据包括来自字典的值,其中所述值包括所述一个或多个特定值,其中每个所述值用索引向量中的对应比特值进行编码;
从该列中删除出现最频繁的值的所有出现并将所删除的出现的位置存储在比特向量中,其中所述比特向量包括当相应行的值不是最频繁出现的值时设置的比特;
初始化包含前缀的附加数据结构,所述前缀为该列中的值的多个块中的每一块存储针对所述多个块中该块之前的块在所述比特向量中设置的比特的总数;
响应于所述访问,确定所述多个块中的目标块的块号,其中所述目标块包含所述一个或多个特定值,其中所述确定包括检查与要访问的块号对应的指定行号是否位于所述前缀中;以及
如果所述指定行号位于所述前缀中,则返回所述前缀的前缀值,
如果所述指定行号不位于所述前缀中,则
如果用于所述指定行号的相应比特没有被设置在所述比特向量中,则查询最频繁出现的值并且返回最频繁出现的值,并且
如果用于所述指定行号的相应比特被设置在所述比特向量中,则通过对所述比特向量中的比特进行计数来计算所述指定行号在该列的索引向量中的位置并且返回该位置。
8.根据权利要求7所述的系统,其中所述确定块号进一步包括基于索引向量内的命中位置估计块号,所述命中位置是遍历该列的索引向量并且对未设置的比特的数目进行计数的结果。
9.根据权利要求7所述的系统,其中所述操作进一步包括将该列中的值划分为所述多个块,所述多个块中的块具有固定长度。
10.根据权利要求7所述的系统,其中所述操作进一步包括将该列中的同样的相邻值分组在一起以形成不同大小的块,所述分组包括管理包含不同大小的块的起始位置的第一索引向量和与不同大小的块中的值相关联的第二索引向量,所述管理包括通过仅存储每一值及该值出现的次数来将连续值分组在一起。
11.根据权利要求7所述的系统,其中所述操作进一步包括至少部分地通过对比特向量中的比特进行计数来确定压缩块和未压缩块的数量。
12.根据权利要求7所述的系统,其中所述操作进一步包括使用先前命中的结果,所述使用包括对尚未被遍历的列的区域递增地调整先前命中的结果。
13.一种计算机实现的方法,包括:
访问表格中的压缩数据的列,所述访问包括在该列中寻找一个或多个特定值,而不必解压缩该列,其中所述压缩数据包括来自字典的值,其中所述值包括所述一个或多个特定值,其中每个所述值用索引向量中的对应比特值进行编码;
从该列中删除出现最频繁的值的所有出现并将所删除的出现的位置存储在比特向量中,其中所述比特向量包括当相应行的值不是最频繁出现的值时设置的比特;
初始化包含前缀的附加数据结构,所述前缀为该列中的值的多个块中的每一块存储针对所述多个块中该块之前的块在所述比特向量中设置的比特的总数;
响应于所述访问,确定所述多个块中的目标块的块号,其中所述目标块包含所述一个或多个特定值,其中所述确定包括检查与要访问的块号对应的指定行号是否位于所述前缀中;以及
如果所述指定行号位于所述前缀中,则返回所述前缀的前缀值,
如果所述指定行号不位于所述前缀中,则
如果用于所述指定行号的相应比特没有被设置在所述比特向量中,则查询最频繁出现的值并且则返回最频繁出现的值,并且
如果用于所述指定行号的相应比特被设置在所述比特向量中,则通过对所述比特向量中的比特进行计数来计算所述指定行号在该列的索引向量中的位置并且返回该位置。
14.根据权利要求13所述的计算机实现的方法,其中所述确定块号进一步包括基于索引向量内的命中位置估计块号,所述命中位置是遍历该列的索引向量并且对未设置的比特的数目进行计数的结果。
15.根据权利要求13所述的计算机实现的方法,进一步包括将该列中的值划分为所述多个块,所述多个块中的块具有固定长度。
16.根据权利要求13所述的计算机实现的方法,进一步包括将该列中的同样的相邻值分组在一起以形成不同大小的块,所述分组包括管理包含不同大小的块的起始位置的第一索引向量和与不同大小的块中的值相关联的第二索引向量,所述管理包括通过仅存储每一值及该值出现的次数来将连续值分组在一起。
17.根据权利要求13所述的计算机实现的方法,进一步包括至少部分地通过对比特向量中的比特进行计数来确定压缩块和未压缩块的数量。
18.根据权利要求13所述的计算机实现的方法,进一步包括使用先前命中的结果,所述使用包括对尚未被遍历的列的区域递增地调整先前命中的结果。
19.根据权利要求13所述的计算机实现的方法,其中所述访问、所述删除、所述初始化、所述确定和所述返回中的至少一个由至少一个可编程处理器来执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/336,962 | 2011-12-23 | ||
US13/336,962 US8892586B2 (en) | 2011-12-23 | 2011-12-23 | Accelerated query operators for high-speed, in-memory online analytical processing queries and operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103177062A CN103177062A (zh) | 2013-06-26 |
CN103177062B true CN103177062B (zh) | 2018-04-17 |
Family
ID=47010128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210448474.3A Active CN103177062B (zh) | 2011-12-23 | 2012-09-28 | 用于高速内存在线分析处理查询和操作的加速查询操作器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8892586B2 (zh) |
EP (1) | EP2608067B1 (zh) |
CN (1) | CN103177062B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9589036B2 (en) * | 2012-08-01 | 2017-03-07 | Oracle International Corporation | Query-level access to external petabyte-scale distributed file systems |
US9418101B2 (en) * | 2012-09-12 | 2016-08-16 | International Business Machines Corporation | Query optimization |
WO2014049594A1 (en) * | 2012-09-28 | 2014-04-03 | Sqream Technologies Ltd | A system and a method for executing sql basic operators on compressed data without decompression process |
US8983900B2 (en) * | 2012-10-23 | 2015-03-17 | Sap Se | Generic semantic layer for in-memory database reporting |
US9632944B2 (en) | 2013-04-22 | 2017-04-25 | Sap Se | Enhanced transactional cache |
US9477609B2 (en) | 2013-04-22 | 2016-10-25 | Sap Se | Enhanced transactional cache with bulk operation |
CN104252493B (zh) * | 2013-06-28 | 2017-12-12 | 国际商业机器公司 | 基于fpga的匹配引擎和匹配方法 |
US10042902B2 (en) * | 2014-01-29 | 2018-08-07 | International Business Machines Corporation | Business rules influenced quasi-cubes with higher diligence of data optimization |
US9753981B2 (en) | 2014-03-11 | 2017-09-05 | Sap Se | Hierarchical runtime settings within distributed query execution frameworks |
US10108622B2 (en) | 2014-03-26 | 2018-10-23 | International Business Machines Corporation | Autonomic regulation of a volatile database table attribute |
US10078521B2 (en) * | 2014-04-01 | 2018-09-18 | Oracle International Corporation | Hybrid bit-sliced dictionary encoding for fast index-based operations |
US10726005B2 (en) | 2014-06-25 | 2020-07-28 | Sap Se | Virtual split dictionary for search optimization |
US10248681B2 (en) * | 2014-07-08 | 2019-04-02 | Sap Se | Faster access for compressed time series data: the block index |
US10496656B2 (en) | 2014-07-08 | 2019-12-03 | Sap Se | Compressing time stamp columns |
US10545936B2 (en) * | 2014-07-08 | 2020-01-28 | Sap Se | Linear run length encoding: compressing the index vector |
US10042552B2 (en) * | 2014-11-25 | 2018-08-07 | Sap Se | N-bit compressed versioned column data array for in-memory columnar stores |
US10255309B2 (en) | 2014-11-25 | 2019-04-09 | Sap Se | Versioned insert only hash table for in-memory columnar stores |
US10558495B2 (en) | 2014-11-25 | 2020-02-11 | Sap Se | Variable sized database dictionary block encoding |
US10552402B2 (en) | 2014-11-25 | 2020-02-04 | Amarnadh Sai Eluri | Database lockless index for accessing multi-version concurrency control data |
US10474648B2 (en) | 2014-11-25 | 2019-11-12 | Sap Se | Migration of unified table metadata graph nodes |
US10725987B2 (en) | 2014-11-25 | 2020-07-28 | Sap Se | Forced ordering of a dictionary storing row identifier values |
US10296611B2 (en) | 2014-11-25 | 2019-05-21 | David Wein | Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes |
US9965504B2 (en) | 2014-11-25 | 2018-05-08 | Sap Se | Transient and persistent representation of a unified table metadata graph |
US9959299B2 (en) | 2014-12-02 | 2018-05-01 | International Business Machines Corporation | Compression-aware partial sort of streaming columnar data |
US10909078B2 (en) * | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US10078570B2 (en) | 2016-05-26 | 2018-09-18 | International Business Machines Corporation | Determining dynamic statistics based on key value patterns |
CN109844730B (zh) | 2016-09-12 | 2023-06-13 | 甲骨文国际公司 | 用于评估数据库查询的方法、计算机系统、介质和装置 |
US10198532B2 (en) * | 2017-03-15 | 2019-02-05 | Sas Institute Inc. | Reducing data storage, memory, and computational time needed for ad-hoc data analysis |
US11675761B2 (en) | 2017-09-30 | 2023-06-13 | Oracle International Corporation | Performing in-memory columnar analytic queries on externally resident data |
US11500842B2 (en) * | 2018-12-14 | 2022-11-15 | Sap Se | Adaptive compression optimization for effective pruning |
CN110908972B (zh) * | 2019-11-19 | 2022-09-02 | 加和(北京)信息科技有限公司 | 一种日志数据预处理方法、装置、电子设备和存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918225A (en) | 1993-04-16 | 1999-06-29 | Sybase, Inc. | SQL-based database system with improved indexing methodology |
US6879976B1 (en) * | 1999-08-19 | 2005-04-12 | Azi, Inc. | Data indexing using bit vectors |
CA2390350A1 (en) * | 2002-06-10 | 2003-12-10 | Ibm Canada Limited-Ibm Canada Limitee | Incremental cardinality estimation for a set of data values |
US7769729B2 (en) * | 2007-05-21 | 2010-08-03 | Sap Ag | Block compression of tables with repeated values |
US8583692B2 (en) * | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US8832142B2 (en) * | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
US8359316B2 (en) * | 2010-03-01 | 2013-01-22 | International Business Machines Corporation | Database table look-up |
US8417733B2 (en) * | 2010-03-04 | 2013-04-09 | Oracle International Corporation | Dynamic atomic bitsets |
US20120303633A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Systems and methods for querying column oriented databases |
-
2011
- 2011-12-23 US US13/336,962 patent/US8892586B2/en active Active
-
2012
- 2012-09-05 EP EP12006263.3A patent/EP2608067B1/en active Active
- 2012-09-28 CN CN201210448474.3A patent/CN103177062B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP2608067B1 (en) | 2018-11-07 |
EP2608067A1 (en) | 2013-06-26 |
CN103177062A (zh) | 2013-06-26 |
US8892586B2 (en) | 2014-11-18 |
US20130166566A1 (en) | 2013-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103177062B (zh) | 用于高速内存在线分析处理查询和操作的加速查询操作器 | |
US11789978B2 (en) | System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment | |
US10817534B2 (en) | Systems and methods for interest-driven data visualization systems utilizing visualization image data and trellised visualizations | |
US20230084389A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
CN107851123B (zh) | 在存储器中虚拟列单元内具体化表达式以加速分析查询 | |
US10146834B2 (en) | Split processing paths for a database calculation engine | |
EP2924594B1 (en) | Data encoding and corresponding data structure in a column-store database | |
AU2005201996B2 (en) | Combining multidimensional expressions and data mining extensions to mine OLAP cubes | |
US9934299B2 (en) | Systems and methods for interest-driven data visualization systems utilizing visualization image data and trellised visualizations | |
US9558251B2 (en) | Transformation functions for compression and decompression of data in computing environments and systems | |
CN109952569A (zh) | 用于基于字典的连接和聚合的技术 | |
US20140074771A1 (en) | Query optimization | |
US20140222418A1 (en) | Fixed string dictionary | |
WO2013033030A1 (en) | Column domain dictionary compression | |
US10977280B2 (en) | Systems and methods for memory optimization interest-driven business intelligence systems | |
US20240070685A1 (en) | Graph based processing of multidimensional hierarchical data | |
CN116982035A (zh) | 分布式数据系统中索引质量的测量与改进 | |
Lepikhov et al. | Query processing in a DBMS for cluster systems | |
Cai et al. | Effective temporal dependence discovery in time series data | |
US11216432B2 (en) | Index data structures and graphical user interface | |
CN106202408B (zh) | 基于olap的数据查询服务器、系统和方法 | |
US9412079B2 (en) | System and method of scenario versioning | |
RU2755568C1 (ru) | Способ параллельного выполнения операции JOIN при обработке больших структурированных высокоактивных данных | |
US11914589B2 (en) | Efficient computation of order by, order by with limit, min, and max in column-oriented databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: German Waldo Applicant after: SAP AG Address before: German Waldo Applicant before: SAP AG |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG |
|
GR01 | Patent grant | ||
GR01 | Patent grant |