CN105630864B - 存储行标识符值的字典的强制排序 - Google Patents
存储行标识符值的字典的强制排序 Download PDFInfo
- Publication number
- CN105630864B CN105630864B CN201510813077.5A CN201510813077A CN105630864B CN 105630864 B CN105630864 B CN 105630864B CN 201510813077 A CN201510813077 A CN 201510813077A CN 105630864 B CN105630864 B CN 105630864B
- Authority
- CN
- China
- Prior art keywords
- row
- dictionary
- value
- persisted
- base
- 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
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- 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/24552—Database cache management
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
Abstract
本文公开的主题提供了用于基于行标识符值的字典的强制排序的方法。可在存储器内数据库中处理多个并发事务。这些事务中的至少一者可包括到字典的至少一个写入操作。每个写入操作可被指派行标识符(ID)。写入操作中的至少一者可被不按顺序地写入到字典。顺序可基于行ID。字典中的每个行ID可被映射到字典中的相应值标识符。字典可定位值标识符以使得相应行ID是按基于行ID的排序先后顺序的。也描述了相关的装置、系统、技术和物品。
Description
技术领域
本公开概括而言涉及利用字典压缩的数据库,具体而言涉及基于行标识符值的字典的强制排序。
背景技术
市售数据库管理系统(database management system,DBMS)支持的数据库大小随着基于盘的存储和系统存储器的可用性和单位成本存储的增大而持续增长。一般地,数据库的特征可以是数据的盘上存储,其中数据记录被存储在存储介质(例如,硬盘、光存储、固态存储等等)上的一个或多个表格或其他数据库结构中并且根据需要被读取到主系统存储器中以响应查询或其他数据库操作。或者,数据库的特征可以是数据的存储器内存储,其中数据记录被存储在主系统存储器中。随着主系统存储器的成本持续减小,对存储器内特征的显著使用的可行性增大了。然而,数据库系统的数据容量要求也持续增大。这样,涉及存储器内和盘上系统两者的特征的混合方案也是有利的。
在存储器内数据库的一些示例中,列式表格由增量部分和主部分组成。增量部分接收对表格的改变并且将这些改变存储在持续性日志中。在恢复时,从该日志重构建增量部分。这些存储器内数据库使用字典来保持跟踪涉及表格的不同行的各种事务(例如,写入操作)。一些字典——例如传统的推回字典——基于条目被写入的顺序将条目附加到字典的后面。因为这些字典未被排序,所以搜索特定行所需要的时间量可随着字典中的条目的数目增长而成为累赘。
发明内容
提供了用于基于行标识符值的字典的强制排序的方法和装置,包括计算机程序产品。
在一个方面中,在存储器内数据库中处理多个并发事务。这些事务中的至少一者包括到字典的至少一个写入操作。每个写入操作被指派行标识符(ID)。写入操作中的至少一者被不按顺序地写入到字典。顺序是基于行ID的。字典中的每个行ID被映射到字典中的相应值标识符。字典定位值标识符以使得相应行ID是按基于行ID的排序先后顺序的。
上述方法、装置和计算机程序产品在一些实现方式中还可包括以下特征中的一个或多个。
字典可包括具有多个连续的行ID的暂态部分。连续的行ID可与基本行ID和基本值ID相关联。基本行ID和基本值ID可代表暂态部分的起始点。
基本行ID和基本值ID可被存留到存储器内数据库。剩余的多个连续行ID可不被存留到存储器内数据库。
映射可通过从基本行ID确定进入行ID的偏移量并且将该偏移量加到基本值ID来为进入行ID确定相应的值标识符。
字典还可包括具有多个存留的行ID的存留部分。可利用搜索机制搜索存留部分以寻找进入行ID。当多个存留的行ID是有序的时,搜索机制可以是二分搜索。当多个存留的行ID不是有序的时,搜索机制可以是散列表搜索。
进入行ID可基于该映射被插入到字典中。
通过利用行ID的相应值标识符搜索索引字典可获得行ID的行位置。
该至少一个写入操作可不包括删除操作。
暂态部分中的值的数目可被存留到存储器内数据库。
也描述了存储指令的非暂态计算机程序产品(即,物理实现的计算机程序产品),这些指令在被一个或多个计算系统的一个或多个数据处理器执行时使得至少一个数据处理器执行这里的操作。类似地,也描述了计算机系统,这些计算机系统可包括一个或多个数据处理器和耦合到这一个或多个数据处理器的存储器。存储器可临时或永久地存储指令,这些指令使得至少一个处理器执行本文描述的操作中的一个或多个。此外,方法可由单个计算系统内的或者分布在两个或更多个计算系统间的一个或多个数据处理器实现。这种计算系统可被连接并且可经由一个或多个连接、经由多个计算系统中的一个或多个之间的直接连接等等来交换数据和/或命令或其他指令等等,所述一个或多个连接包括但不限于通过网络(例如,因特网、无线广域网、局域网、广域网、有线网络等等)的连接。
本文描述的主题提供了许多技术优点。例如,在一些实现方式中,通过对行标识符字典中的行标识符值排序,可迅速执行读取和查找操作。另外,因为可根据已知关系迅速确定按连续顺序的行标识符值,所以相应的字典条目不需要被存留到主存储,从而将空间释放用于其他数据结构。
本文描述的主题的一个或多个变化的细节在附图和下面的描述中记载。本文描述的主题的其他特征和优点将从描述和附图以及从权利要求中清楚显现。
附图说明
被并入在此并构成本说明书的一部分的附图示出了本文公开的主题的某些方面,并且与描述一起帮助说明与本文公开的主题相关联的一些原理。在附图中,
图1是图示出业务软件系统体系结构的特征的图;
图2是图示出业务软件系统体系结构的特征的另一幅图;
图3是主存储中存储的片段的示意性表示;
图4是图示出统一表格容器页链的特征的图;
图5是图示出统一表格增量的特征的图;
图6是图示出统一表格未排序字典的特征的图;
图7是图示出使用统一表格的增量合并操作和读取操作的功能框图;
图8是示出用于第一增量存储中的写入操作的行标识符指派和行位置指派的表格;
图9是示出用于第二增量存储中的写入操作的行标识符指派和行位置指派的表格;
图10A是行标识符值的未排序字典;
图10B是行标识符值的排序字典;
图11是索引字典;并且
图12是用于基于行标识符值对字典排序的流程图。
各幅图中的相似附图标记指示相似的元素。
具体实施方式
当前主题包括数个方面,这些方面可被单独应用或者将一个或多个这种方面组合应用,来支持一种统一数据库表格方案,该方案将存储器内数据库方案的性能优点与盘上数据库方案的降低的存储成本相集成。当前主题可在以下系统中实现:使用存储器内OLAP的数据库系统,例如包括大小为若干万亿字节(或更大)的数据库,具有数十亿(或更多)行的表格,等等;使用存储器内OLTP的系统(例如,企业资源规划或ERP系统等等),例如具有高事务量的大小为若干万亿字节(或更大)的数据库;以及使用盘上OLAP的系统(例如,“大数据”,用于高级分析的分析服务器、数据仓库、业务智能环境,等等),例如大小为若干千万亿字节或甚至更大的数据库、具有多达数万亿行的表格,等等。
另外,当前主题涉及并针对如本文所述的许多方面并且还涉及与本申请同时于2014年11月25日递交的以下专利申请:标题“In-Memory Database System ProvidingLockless Read and Write Operations for OLAP and OLTP Transactions”,发明人AnilKumar Goel、Ivan Schreter、Juchang Lee、Mihnea Andrei(代理人案卷号54874-063F01US/141088US01),其内容在此被通过引用完全并入。
当前主题可实现为企业资源规划(enterprise resource planning,ERP)系统的核心软件平台、其他业务软件体系结构或者在特定组织的控制下的一个或多个处理器上运行的其他数据密集型计算应用或软件体系结构。这个布置对于这样的大规模组织可能是非常有效的:这些组织具有非常富有经验的内部信息技术(IT)职员,并且对于这些组织,在定制市售的业务软件解决方案以结合组织特定的业务流程和功能一起工作所需要的计算硬件和咨询服务上的相当大的资本投入是可行的。图1示出了符合这种实现方式的系统的图100。计算系统110可包括提供业务软件系统的一个或多个特征的一个或多个核心软件平台模块120。该计算系统也可聚合或以其他方式提供一网关,经由该网关,用户可访问由一个或多个外部软件组件130提供的功能。客户端机器140可经由直接连接、本地终端或者通过网络150(例如,局域网、广域网、无线网络、因特网,等等)访问该计算系统。
数据库管理代理160或其他相当的功能可访问数据库管理系统170,数据库管理系统170存储并提供对数据的访问(例如,业务场景、业务流程和一个或多个业务配置的定义,以及与业务场景、业务流程和一个或多个业务配置的定义有关的数据、元数据、主数据等等,和/或与业务场景或业务流程的特定实例相关的数据对象和/或业务对象的具体实例,等等)。数据库管理系统170可包括至少一个表格180,并且还包括符合本文描述的那些的并行化特征。
图2示出了图示可包括在符合当前主题的实现方式的数据库或数据库管理系统中的特征的体系结构200的框图。可被保存在多个数据卷204之间的表格数据存储202可包括以下各项中的一个或多个:增量存储206(例如,分页增量部分,其可以可选地是OLTP优化的并且可以可选地包括合并过程208)、索引存储212(例如,一个或多个分段索引)以及主存储210。主存储210可包括符合本文描述的特征的分成片段的主部分。
为了实现最佳可能压缩并且也为了支持非常大的数据表格,表格的主部分可被划分成一个或多个片段。图3示出了主存储210中存储的各种片段的示意性表示300。一个或多个主片段或片段330可用于数据库的每个表格或列。小的、易管理的表格可利用单个片段来表示。非常大的表格可被分割成两个或更多个表格分区335。每个表格分区进而可包括两个或更多个片段330。片段330可以是其所属的表格的水平切片。每个片段330可包括一个或多个列片段340。每个列片段340可具有符合本文描述的特征的其自己的字典和值ID阵列。
片段330可有利地充分大以获得由于片段的最优化压缩和聚合和扫描的高存储器内性能而产生的最大性能。相反,这种片段可充分地小以将任何给定片段的最大列加载到存储器中并且在存储器内对该片段排序。片段也可充分地小以能够将两个或更多个部分为空的片段合并成更小数目的片段。作为这个方面的说明性而非限制性示例,一片段可包含十亿行,每列最多有100GB的数据。其他片段大小也在当前主题的范围内。片段可以可选地包括页的链。在一些实现方式中,列也可包括页的链。列数据可例如利用字典和/或任何其他压缩方法来加以压缩。表格片段可被实体化在存储器内的连续地址空间中以获得最大性能。数据库的所有片段可被存储在盘上,并且对这些片段的访问可基于对查询的数据访问要求的分析来作出。
再次参考图2,体系结构200的其他部分可包括数据操纵语言(data manipulationlanguage,DML)处理模块或类似功能214,一个或多个查询处理模块或类似功能216(例如包括多版本并发控制)、支持索引存储212的索引构建器220、查询语言引擎222(其可以例如是SQL引擎)、用于接收来自用户226的输入的复杂事件处理模块(例如,事件处理程序、流处理模块,等等)224,等等。
图4示出了图示统一表格容器页链400的示例的框图。如上所述,每个片段可以可选地包括页的链。一般地,容器可被表示为页链。页链一般可被表征为以给定顺序链接的页的集合。本文使用的术语“页”指的是数据库中的存储的基本单位。页大小一般是在构建数据库时确立的并且通常不能被改变。代表性的页大小可以是2kB、4kB、8kB、16kB等等级别的。一旦构建了服务器,该值通常就不能被改变。不同类型的页可存储不同类型的数据库对象。例如,数据页可以为表格存储数据行或列。索引页可以为索引的一个或多个级别存储索引行。大对象(large object,LOB)页可以为文本和图像列、为Java行外列等等存储数据。虽然图4图示了单个页链400,但也可使用多个页链。在一些实现方式中,可根据层次体系来布置多个页链。
也如图4所示,可对增量部分、主部分、字典、索引段(可选,在图2中没有示出)等等定义页链的子链,使得这些实体的每一者的“整体”包含一个或多个页。在当前主题的一些实现方式中,增量部分可包括“热”增量片段402和“冷”增量片段404两者,这两者可分开存储。主部分也可被再分成主片段330。包含字典压缩列式数据410的页可以指为它们包含字典的页。个体表格部分可根据需要被加载到主存储器中。合并过程可与事务处理解除耦合,使得合并过程可在恢复时(例如在日志重放期间)执行。页链,例如图4所示的示例,可由容器目录条目(container directory entry,CDE)412发起。
单个RowID空间可在页链中跨页使用。一般指代数据库中的逻辑行的RowID可用于指代数据库的存储器内部分中的逻辑行并且也指代数据库的盘上部分中的物理行。行索引通常指的是表格中的行的物理的基于0的索引。基于0的索引可用于对连续阵列中的行物理寻址,其中逻辑RowID表示行的逻辑顺序,而不是物理位置。在一些存储器内数据库系统中,用于数据记录位置的物理标识符可被称为UDIV或DocID。与逻辑RowID不同,UDIV或DocID(或者相当的参数)可指示行(例如数据记录)的物理位置,而RowID指示逻辑位置。为了允许表格的分区具有符合当前主题的实现方式的单个RowID和行索引空间,对于新插入的记录以及对于跨片段的更新记录的新版本,RowID可被指派单调递增的ID。换言之,例如,更新记录将改变其RowID,因为更新实际上是(具有RowID的)旧记录的删除和(具有新RowID的)新记录的插入。利用此方案,表格的增量存储可按RowID来排序,这可用于访问路径的最优化。分开的物理表格实体可按分区来存储,并且这些分开的物理表格实体可在查询级别被连接成逻辑表格。
当在列式合并操作期间执行最优化压缩以将增量存储中记录的改变添加到主存储时,表格中的行一般被重排序。换言之,合并操作之后的行通常不再是按其物理行ID排序的。因此,根据当前主题的一个或多个实现方式可使用稳定的行标识符。稳定行标识符可以可选地是逻辑RowID。对稳定的逻辑(而不是物理)RowID的使用可允许在提前写入日志和事务撤销日志中的REDO/UNDO条目中寻址行。此外,以这种方式可促进跨合并稳定、而不会保持对数据库的旧主版本的引用的光标。为了使能这些特征,可存储存储器内逻辑RowID到物理行索引的映射和相反方向的映射。在当前主题的一些实现方式中,RowID列可被添加到每个表格。RowID列在当前主题的一些实现方式中也可服从压缩。
每个行具有版本控制信息,该信息控制哪些事务可看到该行。此版本控制信息可包括例如表示行的状态的状态标识符、创建时间戳(create time stamp,CTS)、删除时间戳(delete timestamp,DTS),等等。行的状态可以是不可见或者始终可见。在一些实现方式中,行的状态也可指示出是否应当检查行的CTS值或者是否应当检查行的CTS和DTS值。行最初是不可见的(即,不能被其他事务看到)。当线程执行事务时,该行可接收临时CTS。此临时CTS可仅对该线程可见。当该事务被提交时,永久CTS可被添加到该行的版本控制信息。将永久CTS添加到行的版本控制信息允许了该行对更新的(即,更新近的)事务变得可见。在这样做时,行的状态可指示出其CTS值应当被检查。当线程执行事务来删除行时,该行可接收临时DTS。此临时DTS可仅对该线程可见。此时,删除的行可仍对其他线程可见。当该删除被提交时,该行可接收永久DTS并且该行的状态可被改变来检查CTS和DTS。在提交后,此行可不再对其他线程可见。
图5示出了符合当前主题的一个或多个实现方式的统一表格增量500的框图。在一些示例中,可使用“热”和“冷”增量方案,其中未压缩的数据被保存在“热”增量部分中,而字典压缩的数据被保存在“冷”增量部分中,在热和冷部分之间执行微型合并。这种增量部分可被认为是单个容器。如图5所示,每个增量子链可具有其自己的暂态结构。换言之,对于每个增量可使用单独的结构。页向量502可保持到个体页504的页句柄并且可允许页504上的快速迭代(例如作为列或表格扫描的一部分)。到个体页504的页句柄可包括被保持在存储器中的钉(pin)等等。当在本文中使用时,术语“钉”指的是将特定数据页(其也可能已被存储在盘上)保持在存储器中。作为示例,如果页未被钉住,则其可被从存储器清除。钉住通常在被活跃访问的数据页上进行以避免与将页从盘读取到存储器中相关联的潜在性能劣化。
RowID索引506可充当搜索结构以允许基于RowID值的给定间隔来找到页504。搜索时间可以是log n级别的,其中n非常小。RowID索引可经由RowID值提供对数据的快速访问。为了优化,“新”页在RowID和行索引之间可具有1:1关联,使得简单数学(没有查找)操作成为可能。在当前主题的至少一些实现方式中,只有被合并过程重组织的页需要RowID索引。
图6示出了统一表格未排序字典600的框图。根据当前主题的一个或多个实现方式,增量部分中的列数据可使用未排序字典。对每个增量列字典可提供暂态结构。页向量502可处理页在存储器中的钉住。从其他结构经由指针可提供直接访问。值向量间接602可允许每个字典块604相同数目的值。此能力对于按ValueID查找值可支持1级别的性能成本。字典可向每个唯一值指派唯一的ValueID(通常是数值),使得唯一值(通常在存储器大小上大于ValueID)可被存储一次而不是多次。值阵列是被字典用来在给定ValueID的情况下检索值或者在给定值的情况下检索ValueID的结构。此技术可减小在值不唯一的情况下存储一组值所需要的存储器量,其通常被称为字典压缩。值到ValueID映射606对于按值查找ValueID可支持1级别的或者log n级别的散列或B树大小。B树是一种使数据保持被排序并允许对数时间的搜索、顺序访问、插入和删除的树数据结构。此能力对于字典压缩可能是必要的。B树对于范围扫描可能更好,但维护起来可能是更昂贵的。
图7示出了用于在统一表格上执行读取操作720的功能框图700。一般地,读取操作可具有对所有片段(即,活跃片段712和关闭片段716)的访问。可通过仅加载包含来自特定查询的数据的片段来优化读取操作。不包含这种数据的片段可被排除。为了做出此决策,可对每个片段存储容器级元数据(例如,最小值和/或最大值)。可将此元数据与查询相比较来判定片段是否包含请求的数据。
功能框图700也图示了增量合并操作710。新的事务或变化可最初被写入到增量存储中。在一些实现方式中,增量存储可包括一个或多个存储,例如增量存储206-1和增量存储206-2。写入操作可最初被写入到增量存储206-1。
核心软件平台120可向每个写入操作指派行标识符(RowID)值和行位置(RowPOS)值。图8示出了多个写入操作的样本RowID值和样本RowPOS值的表格800。如上文参考图4所述,RowID值可表示行的逻辑位置,并且RowPOS值可表示行的物理位置。核心软件平台120可顺序地向操作指派RowID值和RowPOS值。例如,当客户端机器140发起写入操作810时,核心软件平台120可向此操作指派为1的RowID值和为1的RowPOS值。当客户端机器140(或任何其他客户端机器)发起新的写入操作820时,核心软件平台120可指派下一个可用的RowID和RowPOS。在图8的实现方式中,写入操作820可具有为2的RowID值和为2的RowPOS值。核心软件平台120可以按类似的方式为写入操作830和840指派RowID值和RowPOS值。本文描述的写入操作可与新数据的添加或插入相关联。然而,在一些实现方式中,写入操作可包括删除。与可被指派RowID值的数据插入不同,删除可不接收RowID值。
在增量合并操作710期间,被提交的写入操作可被从增量存储206-1存留到存储器内数据库中。在一些实现方式中,存储器内数据库可被存储在主存储210处。在图8的实现方式中,例如,写入操作810和840可被提交并被直接存留到主存储210。主存储210可包括一个活跃片段712和一个或多个关闭片段716。当更新被从增量存储206-1合并到主存储210中时,关闭片段716中的现有记录不能被改变。反而,记录的新版本可被添加到活跃片段712,并且旧版本可被标记为无效。
核心软件平台120可将未提交的写入操作(例如,写入操作820和830)从增量存储206-1拷贝到增量存储206-2。图9示出了对于增量存储206-2中存储的写入操作的RowID和RowPOS指派的表格900。因为RowID值表示行的逻辑位置并且因此是不可变的,所以写入操作820和830的RowID值保持相同(即,分别是2和3)。然而,核心软件平台120可更新写入操作820和830的RowPOS值以反映其在增量存储206-2中的新位置。由于写入操作820是增量存储206-2中的第一条目,所以核心软件平台120可向此操作指派为1的RowPOS值。类似地,核心软件平台120可向写入操作830指派为2的RowPOS值以指示其是增量存储206-2中的第二条目。
随着客户端机器140发起新的写入事务,核心软件平台120可将这些新事务记录在增量存储206-2中。例如,当客户端机器140发起写入操作940时,核心软件平台120可指派下一个可用的RowID值和RowPOS值。对于前者,核心软件平台120先前向操作840指派了为4的RowID值。因此,下一个可用的RowID值(即5)可被指派给写入操作940。对于后者,核心软件平台120可向操作940指派为3的RowPOS值以指示此操作是增量存储206-2中的第三条目。RowID值和RowPOS值可按类似的方式被指派给写入操作950、960和970。
表格900的RowID指派可被存储在RowID字典1000中,如图10A所示。与图6所示的字典600一样,字典1000可向每个RowID指派唯一的ValueID。在一些实现方式中,RowID字典1000可以是推回字典。在推回字典中,可基于RowID被写入到字典的顺序来向RowID指派ValueID。在图10A的实现方式中,例如,ValueID值0、1、2、3、4和5分别被指派给RowID值2、3、5、8、6和7。
从图10A明显可见,字典条目1020、1025和1030可以看起来是不按顺序的,因为其相应的RowID值未像字典条目1005、1010和1015那样按增序放置。例如,字典条目1020(其具有为8的RowID值)可在字典条目1025(其具有为6的RowID值)之前被添加到字典1000。类似地,字典条目1025(其具有为6的RowID值)可在字典条目1030(其具有为7的RowID值)之前被添加到字典1000。可能希望对字典1000排序以使得RowID值按先后顺序出现(即,RowID值是全部递增的或者全部递减的)。这样做可使能对期望的RowID值的快速查找。
图10B图示了排序的字典1040。与具有不按顺序的RowID值的推回字典1000不同,字典1040可具有按顺序排序的RowID值。在图10B的实现方式中,例如,字典条目1005、1010、1015、1045、1050和1055可分别具有顺序递增的RowID值2、3、5、6、7和8。为了生成排序字典1040,核心软件平台120可将每个RowID值映射到适当的ValueID值,使得相应的RowID被按先后顺序放置在字典中。在排序字典1040中,例如,RowID值被按递增的先后顺序排列。在一些实现方式中,可使用递减的先后顺序。核心软件平台120可利用以下式子来执行此映射:
新ValueID=(进入RowID–基本RowID)+基本ValueID
(式1)
在式1中,新ValueID可表示进入RowID应当被添加到字典1040的正确位置。将进入RowID放置在由新ValueID表示的位置可产生图10B所示的顺序排序。新ValueID可以是两个基本值(即,基本RowID和基本ValueID)的函数。基本RowID和基本ValueID可对应于跟随在提交的事务(例如,提交的写入操作)之后的RowID值的连续序列的起始点。在一些实现方式中,这些基本值紧跟在提交的事务之后,没有任何居间的操作。进入RowID和基本RowID之间的差别可表示字典条目的偏移量。此偏移量可被添加到基本ValueID以便确定新ValueID。
在图10B的实现方式中,例如,基本ValueID值为2,并且RowID值为5。此基本对表示分别在字典条目1015、1045、1050和1055处的RowID值5、6、7和8的连续序列的起始点。此基本对跟随提交的事务(即,先前提交的具有为4的RowID值的写入操作840,如上文参考图8所述)。
核心软件平台120可使用式1来确定写入操作在连续序列内的正确插入点。例如,在图10A中,字典条目1020可能是不按顺序的,因为其RowID值(即,8)大于字典条目1025中的RowID值(即,6)。将进入RowID值(即,8)、基本RowID值(即,5)和基本ValueID值(即,2)代入到式1中,核心软件平台120可确定此操作的新ValueID值是5。这样,核心软件平台120可将此RowID值插入到字典1040中的条目1055中,如图10B中所示。核心软件平台120可执行类似的计算来为进入RowID值6和7确定正确插入点以产生字典1040中的顺序排序的RowID值。
基本对可将字典1040分割成至少两个区段——存留区段和暂态区段。存留区段可包括基本对上方的字典条目。暂态区段可包括基本对和基本对下方的字典条目(即,连续序列内的字典条目)。在图10B的实现方式中,存留区段可包括字典条目1005和1010,并且暂态区段可包括字典条目1015、1045、1050和1055。
与将字典中的所有条目存留并实体化到存储器中的传统字典不同,字典1040中的二分组织可通过仅将存留区段中的条目存留来优化存储器存储。在一些实现方式中,存留区段中的条目可被存留或保存到存储器内数据库。在一些实现方式中,存储器内数据库可被存储在主存储210处。然而,可能不必存留或实体化暂态区段中的字典条目,因为此区段中的条目可容易利用如上所述的式1来重建(即,每个RowID的ValueID可容易利用式1来确定)。在一些实现方式中,暂态区段中的基本值可作为元数据被存留在存储器内数据库中。此元数据可被存储在这些基本值所属的片段的存留描述符中。存留描述符可包括与片段相关联的额外信息,例如包括与该片段相关联的表格、片段中的最小和最大RowID值,等等。在一些实现方式中,暂态区段中的值的数目也可被存留。这样做允许了核心软件平台120将暂态部分重建到恰当大小。虽然图10B的实现方式只包括一个存留区段和一个暂态区段,但其他变化也是可能的,例如包括两个或更多个存留区段的存在、两个或更多个暂态区段的存在或者两者都存在。这些额外的配置可出现在字典包括两个或更多个基本值对时。
除了上述的存储器相关优点以外,字典1040的二分性也在写入操作和搜索或查找操作期间高效利用了CPU资源。在例如字典1000那样的未排序字典中,可能需要索引结构来搜索字典。然而,这样做可花费不必要的存储器和处理资源来维护索引(即,在插入时间期间)以及在执行搜索时遍历索引。然而,字典1040对于其暂态区段可不需要索引,因为此区段中的条目可容易利用式1来重建。消除此索引可减少否则维护和搜索索引所需要的资源的量。
式1允许了核心软件平台120迅速地为字典的暂态区段内的RowID值确定ValueID。然而,有时,核心软件平台120可需要从字典的存留区段读取数据。例如,如果核心软件平台120接收到对小于基本RowID值的RowID值的读取操作,则核心软件平台可推断出期望的RowID值在字典的存留区段中。核心软件平台120可使用各种搜索机制来找到期望的RowID及其在存留区段内的相应ValueID。这些搜索机制可包括例如二分搜索、散列表搜索等等。使用的搜索机制可取决于各种因素,包括例如存留区段中的字典条目是否基于每个条目的RowID值被排序。字典是否被排序可利用存留字典描述符来指示。此描述符可包括指示出例如字典中存储的数据类型、字典的存留区段是排序的还是未排序的等等的元数据。核心软件平台120可检查存留字典描述符来确定使用哪个搜索机制。
当存留区段是按RowID值排序的时(例如,按递增顺序),核心软件平台120可使用二分搜索。在二分搜索中,核心软件平台120可定位存留区段的中间的RowID值并且将此RowID值与期望的RowID值相比较。如果期望的RowID值小于此中间RowID值,则核心软件平台120可在中间RowID值上方的RowID值的子区段上重复上述比较直到找到期望的RowID值为止。然而,如果期望的RowID值大于中间RowID值,则核心软件平台120可在中间RowID值下方的RowID值的子区段上重复上述比较直到找到期望的RowID值为止。
当存留区段未被排序时,核心软件平台120可执行散列表搜索。如上文参考图6所述,字典条目可被存储在散列表中。核心软件平台120可利用已知技术搜索此散列表以找到期望的RowID值。为了减少搜索时间并最小化散列表所需的存储量,可以只将存留字典条目存储在散列表中。然而,在一些实现方式中,散列表可包括来自存留区段和暂态区段两者的字典条目。
可对字典1040执行额外的操作。在一些实现方式中,核心软件平台120可能需要为给定的RowID值找到相应的行位置(即,RowPOS值)。如上所述,核心软件平台120可向写入操作指派RowPOS值。然而,这些值可在合并操作发生时变化。例如,当写入操作830被从增量存储206-1拷贝到增量存储206-2时,其RowPOS值可从3变化到2,如上文参考图8和图9所述。为了跟踪这些变化,增量存储206-2可维护将ValueID值关联到RowPOS值的索引字典。
图11示出了用于增量存储206-2的示范性索引字典1100。核心软件平台120可将索引字典1100与RowID字典1040结合使用来确定期望RowID值的RowPOS值。例如,如果核心软件平台120需要找到具有为6的RowID值的写入操作的当前行位置,则核心软件平台可首先从字典1040确定此操作的相应ValueID。由于期望RowID值大于基本RowID值,于是核心软件平台120可推断出此RowID值存在于字典1040的暂态区段内。这样,核心软件平台120可使用式1来确定相应的ValueID(即,3)。在做出此确定后,核心软件平台120随后可利用索引字典1100找到相应的RowPOS值。如图11的实现方式中所示,所确定的ValueID的相应RowPOS值为12。
图12图示了用于基于其RowID值对字典排序的流程图。在1210,核心软件平台120可处理多个并发事务。这些事务可包括到字典的至少一个写入操作,该字典例如是图10A所示的字典1000。
在1220,核心软件平台120可为每个写入操作指派行标识符,例如RowID值。写入操作可被不按顺序地写入到字典。在图10A的实现方式中,字典1000可以是推回字典。这样,写入操作可基于其到达的顺序被添加到字典。写入操作1020、1025和1030可以是不按顺序的,其各自的RowID值证明了这一点。
在1230,核心软件平台120可将字典中的每个行标识符映射到字典中的相应值标识符。此映射可根据如上文参考图10B描述的式1执行。基于此映射,值标识符可被布置成使得其相应的行标识符值按排序先后顺序出现,如字典1040中所示。
本文描述的主题的一个或多个方面或特征可在数字电子电路、集成电路、特殊设计的专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、计算机硬件、固件、软件和/或其组合中实现。这些各种方面或特征可包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现方式,该系统包括至少一个可编程处理器,该处理器可以是专用或通用的,其被耦合来从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令并且向它们发送数据和指令。可编程系统或计算系统可包括客户端和服务器。客户端和服务器一般可彼此远离并且通常通过通信网络来交互。客户端和服务器的关系是由于计算机程序在相应计算机上运行且相互之间具有客户端-服务器关系而发生的。
这些计算机程序——也可称为程序、软件、软件应用、应用、组件或代码——包括用于可编程处理器的机器指令,并且可以用高级别过程语言、面向对象的编程语言、功能性编程语言、逻辑编程语言和/或用汇编/机器语言来实现。当在本文中使用时,术语“机器可读介质”指的是用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备,例如磁盘、光盘、存储器和可编程逻辑器件(Programmable Logic Device,PLD),包括以机器可读信号的形式接收机器指令的机器可读介质。术语“机器可读信号”指的是用于向可编程处理器提供机器指令和/或数据的任何信号。机器可读介质可非暂时地存储这种机器指令,例如像非暂态固态存储器或磁性硬盘驱动器或者任何等同的存储介质那样。机器可读介质可以替换地或额外地以暂态方式存储这种机器指令,例如像与一个或多个物理处理器核心相关联的处理器缓存或其他随机访问存储器那样。
为了支持与用户的交互,本文描述的主题的一个或多个方面或特征可在具有诸如阴极射线管(cathode ray tube,CRT)或液晶显示器(liquid crystal display,LCD)或发光二极管(light emitting diode,LED)监视器之类的用于向用户显示信息的显示设备以及用户可用来向计算机提供输入的键盘和诸如鼠标或轨迹球之类的指点设备的计算机上实现。其他种类的设备也可用于支持与用户的交互。例如,向用户提供的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括但不限于音响、话音或触觉输入。其他可能的输入设备包括——但不限于——触摸屏或其他触摸敏感设备,例如单点或多点电阻或电容触控板、语音识别硬件和软件、光学扫描仪、光学指示器、数字图像捕捉设备和关联的解释软件,等等。
在以上描述中和权利要求中,诸如“……中的至少一者”或者“……中的一个或多个”之类的短语可跟在元素或特征的连接列表之后出现。术语“和/或”也可出现在两个或更多个元素或特征的列表中。除非与其所用于的上下文隐含地或明确地矛盾,这种短语打算意指列出的元素或特征中的任何单独的一个或者任何记载的元素或特征与任何其他记载的元素或特征的组合。例如,短语“A和B中的至少一者”、“A和B中的一个或多个”和“A和/或B”各自打算意指“A单独、B单独或者A和B一起”。类似的解释也打算用于包括三个或更多个项目的列表。例如,短语“A、B和C中的至少一者”、“A、B和C中的一个或多个”和“A、B和/或C”各自打算意指“A单独、B单独、C单独、A和B一起、A和C一起、B和C一起或者A和B和C一起”。此外,上文和权利要求中对术语“基于”的使用打算意指“至少部分基于”,使得未记载的特征或元素也是可允许的。
本文描述的主题取决于期望的配置可在系统、装置、方法和/或物品中实现。前文描述中记载的实现方式不表示符合本文描述的主题的所有实现方式。反而,它们只是符合与描述的主题有关的方面的一些示例。虽然上文详细描述了几个变化,但其他修改或添加是可能的。具体地,除了本文记载的那些以外,也可提供另外的特征和/或变化。例如,上文描述的实现方式可针对公开的特征的各种组合和子组合和/或上文公开的若干进一步特征的组合和子组合。此外,附图中描绘的和/或本文描述的逻辑流程要实现期望的结果并非必然要求所示出的特定顺序或者先后顺序。其他实现方式可在所附权利要求的范围内。
Claims (15)
1.一种用于执行字典的强制排序的方法,该方法包括:
在存储器内数据库中处理多个并发事务,所述事务中的至少一者包括到字典的至少一个写入操作;
为每个写入操作指派行ID,所述写入操作中的至少一者被不按顺序地写入到所述字典,所述顺序是基于所述行ID的;以及
将所述字典中的每个行ID映射到所述字典中的相应值ID,所述字典定位所述值ID以使得相应的行ID是按基于行ID的排序先后顺序的;
其中,所述字典包括具有连续序列内的多条字典条目的暂态部分、所述多条字典条目与基本行ID和基本值ID相关联,所述基本行ID和所述基本值ID代表所述暂态部分的起始点;
其中,所述基本行ID和所述基本值ID被存留到所述存储器内数据库,并且
其中,剩余的字典条目不被存留到所述存储器内数据库。
2.如权利要求1所述的方法,其中,所述映射通过从基本行ID确定进入行ID的偏移量并且将该偏移量加到基本值ID来为进入行ID确定相应的值ID。
3.如权利要求1所述的方法,其中,所述字典还包括具有多个存留的行ID的存留部分。
4.如权利要求3所述的方法,还包括利用搜索机制搜索所述存留部分以寻找进入行ID。
5.如权利要求4所述的方法,其中,当所述多个存留的行ID是有序的时,所述搜索机制是二分搜索,并且
其中,当所述多个存留的行ID不是有序的时,所述搜索机制是散列表搜索。
6.如权利要求1所述的方法,还包括基于所述映射将进入行ID插入到所述字典中。
7.如权利要求1所述的方法,还包括通过利用行ID的相应值ID搜索索引字典来为该行ID获得行位置。
8.如权利要求1所述的方法,其中,所述至少一个写入操作不包括删除操作。
9.如权利要求1所述的方法,还包括将所述暂态部分中的值的数目存留到所述存储器内数据库。
10.一种非暂态计算机可读介质,其包含指令来配置处理器执行操作,所述操作包括:
在存储器内数据库中处理多个并发事务,所述事务中的至少一者包括到字典的至少一个写入操作;
为每个写入操作指派行ID,所述写入操作中的至少一者被不按顺序地写入到所述字典,所述顺序是基于所述行ID的;以及
将所述字典中的每个行ID映射到所述字典中的相应值ID,所述字典定位所述值ID以使得相应的行ID是按基于行ID的排序先后顺序的;
其中,所述字典包括具有连续序列内的多条字典条目的暂态部分,所述多条字典条目与基本行ID和基本值ID相关联,该基本行ID和基本值ID代表所述暂态部分的起始点;
其中,所述基本行ID和所述基本值ID被存留到所述存储器内数据库,
其中,剩余的字典条目不被存留到所述存储器内数据库。
11.如权利要求10所述的非暂态计算机可读介质,其中,所述字典还包括具有多个存留的行ID的存留部分。
12.如权利要求11所述的非暂态计算机可读介质,其中,所述映射通过从基本行ID确定进入行ID的偏移量并且将该偏移量加到基本值ID来为进入行ID确定相应的值ID。
13.一种用于字典的强制排序的系统,包括:
至少一个处理器;以及
至少一个存储器,其中,所述至少一个处理器和所述至少一个存储器被配置为执行操作,所述操作包括:
在存储器内数据库中处理多个并发事务,所述事务中的至少一者包括到字典的至少一个写入操作;
为每个写入操作指派行ID,所述写入操作中的至少一者被不按顺序地写入到所述字典,所述顺序是基于所述行ID的;以及
将所述字典中的每个行ID映射到所述字典中的相应值ID,所述字典定位所述值ID以使得相应的行ID是按基于行ID的排序先后顺序的;
其中,所述字典包括具有连续序列内的多条字典条目的暂态部分,所述多条字典条目与基本行ID和基本值ID相关联,所述基本行ID和所述基本值ID代表所述暂态部分的起始点;
其中,所述基本行ID和所述基本值ID被存留到所述存储器内数据库,
其中,剩余的字典条目不被存留到所述存储器内数据库。
14.如权利要求13所述的系统,其中,所述字典还包括具有多个存留的行ID的存留部分。
15.如权利要求13所述的系统,其中,所述映射通过从基本行ID确定进入行ID的偏移量并且将该偏移量加到基本值ID来为进入行ID确定相应的值ID。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/553,892 | 2014-11-25 | ||
US14/553,892 US10725987B2 (en) | 2014-11-25 | 2014-11-25 | Forced ordering of a dictionary storing row identifier values |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630864A CN105630864A (zh) | 2016-06-01 |
CN105630864B true CN105630864B (zh) | 2020-12-08 |
Family
ID=54360855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510813077.5A Active CN105630864B (zh) | 2014-11-25 | 2015-11-20 | 存储行标识符值的字典的强制排序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10725987B2 (zh) |
EP (1) | EP3026579B1 (zh) |
CN (1) | CN105630864B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9792318B2 (en) | 2014-11-25 | 2017-10-17 | Sap Se | Supporting cursor snapshot semantics |
US10042552B2 (en) | 2014-11-25 | 2018-08-07 | Sap Se | N-bit compressed versioned column data array for in-memory columnar stores |
US10552402B2 (en) | 2014-11-25 | 2020-02-04 | Amarnadh Sai Eluri | Database lockless index for accessing multi-version concurrency control data |
US10558495B2 (en) | 2014-11-25 | 2020-02-11 | Sap Se | Variable sized database dictionary block encoding |
US9779104B2 (en) | 2014-11-25 | 2017-10-03 | Sap Se | Efficient database undo / redo logging |
US9513811B2 (en) | 2014-11-25 | 2016-12-06 | Sap Se | Materializing data from an in-memory array to an on-disk page structure |
US9875024B2 (en) | 2014-11-25 | 2018-01-23 | Sap Se | Efficient block-level space allocation for multi-version concurrency control data |
US9798759B2 (en) | 2014-11-25 | 2017-10-24 | Sap Se | Delegation of database post-commit processing |
US9824134B2 (en) | 2014-11-25 | 2017-11-21 | Sap Se | Database system with transaction control block index |
US9891831B2 (en) | 2014-11-25 | 2018-02-13 | Sap Se | Dual data storage using an in-memory array and an on-disk page structure |
US9965504B2 (en) | 2014-11-25 | 2018-05-08 | Sap Se | Transient and persistent representation of a unified table metadata graph |
US9898551B2 (en) | 2014-11-25 | 2018-02-20 | Sap Se | Fast row to page lookup of data table using capacity index |
US10725987B2 (en) | 2014-11-25 | 2020-07-28 | Sap Se | Forced ordering of a dictionary storing row identifier values |
US10474648B2 (en) | 2014-11-25 | 2019-11-12 | Sap Se | Migration of unified table metadata graph nodes |
US10127260B2 (en) | 2014-11-25 | 2018-11-13 | Sap Se | In-memory database system providing lockless read and write operations for OLAP and OLTP transactions |
US10255309B2 (en) | 2014-11-25 | 2019-04-09 | Sap Se | Versioned insert only hash table for in-memory columnar stores |
US10289709B2 (en) * | 2015-11-23 | 2019-05-14 | Sap Se | Interleaved storage of dictionary blocks in a page chain |
CN106445416B (zh) * | 2016-09-22 | 2019-08-09 | 飞天诚信科技股份有限公司 | 一种数据记录的存储、查询和检索的方法及装置 |
US11106670B2 (en) * | 2017-09-27 | 2021-08-31 | Sap Se | Local identifiers for database objects |
US11023430B2 (en) | 2017-11-21 | 2021-06-01 | Oracle International Corporation | Sparse dictionary tree |
US11169995B2 (en) | 2017-11-21 | 2021-11-09 | Oracle International Corporation | Relational dictionaries |
US10762294B2 (en) * | 2017-12-29 | 2020-09-01 | Dassault Systèmes Americas Corp. | Universally unique resources with no dictionary management |
US11126611B2 (en) | 2018-02-15 | 2021-09-21 | Oracle International Corporation | Code dictionary generation based on non-blocking operations |
US11379450B2 (en) | 2018-10-09 | 2022-07-05 | Oracle International Corporation | Relational method for transforming unsorted sparse dictionary encodings into unsorted-dense or sorted-dense dictionary encodings |
US11070618B2 (en) * | 2019-01-30 | 2021-07-20 | Valve Corporation | Techniques for updating files |
US11347705B2 (en) | 2019-04-02 | 2022-05-31 | Sap Se | Supporting scalable distributed secondary index using replication engine for high-performance distributed database systems |
CN110825737A (zh) * | 2019-10-18 | 2020-02-21 | 支付宝(杭州)信息技术有限公司 | 索引创建和数据查询方法、装置及设备 |
US11886391B2 (en) | 2020-05-14 | 2024-01-30 | Valve Corporation | Efficient file-delivery techniques |
US20220058179A1 (en) * | 2020-08-24 | 2022-02-24 | International Business Machines Corporation | Executing database transactions |
US11314934B1 (en) * | 2020-12-07 | 2022-04-26 | Sap Se | Smart push of values in spreadsheets |
CN112732174A (zh) * | 2020-12-25 | 2021-04-30 | 北京金山云网络技术有限公司 | 数据的处理方法和装置、电子设备和存储介质 |
US11537594B2 (en) | 2021-02-05 | 2022-12-27 | Oracle International Corporation | Approximate estimation of number of distinct keys in a multiset using a sample |
CN115774699B (zh) * | 2023-01-30 | 2023-05-23 | 本原数据(北京)信息技术有限公司 | 数据库共享字典压缩方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101311930A (zh) * | 2007-05-21 | 2008-11-26 | Sap股份公司 | 具有重复值的表的块压缩 |
CN103970870A (zh) * | 2014-05-12 | 2014-08-06 | 华为技术有限公司 | 数据库查询方法和服务器 |
Family Cites Families (147)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222235A (en) | 1990-02-01 | 1993-06-22 | Bmc Software, Inc. | Databases system for permitting concurrent indexing and reloading of data by early simulating the reload process to determine final locations of the data |
US5701480A (en) | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
US5280612A (en) | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
US5794229A (en) | 1993-04-16 | 1998-08-11 | Sybase, Inc. | Database system with methodology for storing a database table by vertically partitioning all columns of the table |
US5594898A (en) | 1994-03-25 | 1997-01-14 | Microsoft Corporation | Method and system for joining database tables using compact row mapping structures |
US5758145A (en) | 1995-02-24 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for generating dynamic and hybrid sparse indices for workfiles used in SQL queries |
US5717919A (en) | 1995-10-02 | 1998-02-10 | Sybase, Inc. | Database system with methods for appending data records by partitioning an object into multiple page chains |
JP3083742B2 (ja) | 1995-10-03 | 2000-09-04 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 表計算方法 |
US5870758A (en) | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US6604117B2 (en) | 1996-03-19 | 2003-08-05 | Siebel Systems, Inc. | Method of maintaining a network of partially replicated database system |
US6070165A (en) | 1997-12-24 | 2000-05-30 | Whitmore; Thomas John | Method for managing and accessing relational data in a relational cache |
JP3563257B2 (ja) | 1998-02-20 | 2004-09-08 | Necエレクトロニクス株式会社 | Atmスイッチ回路 |
US6275830B1 (en) | 1998-03-18 | 2001-08-14 | Oracle Corporation | Compile time variable size paging of constant pools |
US20020107837A1 (en) | 1998-03-31 | 2002-08-08 | Brian Osborne | Method and apparatus for logically reconstructing incomplete records in a database using a transaction log |
US6490670B1 (en) | 1998-04-24 | 2002-12-03 | International Business Machines Corporation | Method and apparatus for efficiently allocating objects in object oriented systems |
US6606617B1 (en) | 1998-09-24 | 2003-08-12 | International Business Machines Corporation | Optimized technique for prefetching LOB table space pages |
US6460051B1 (en) | 1998-10-28 | 2002-10-01 | Starfish Software, Inc. | System and methods for synchronizing datasets in a communication environment having high-latency or other adverse characteristics |
US6282605B1 (en) | 1999-04-26 | 2001-08-28 | Moore Computer Consultants, Inc. | File system for non-volatile computer memory |
US6453313B1 (en) | 1999-07-06 | 2002-09-17 | Compaq Information Technologies Group, L.P. | Database management system and method for dequeuing rows published to a database table |
US6397227B1 (en) | 1999-07-06 | 2002-05-28 | Compaq Computer Corporation | Database management system and method for updating specified tuple fields upon transaction rollback |
CA2281287C (en) | 1999-09-01 | 2003-03-11 | Ibm Canada Limited-Ibm Canada Limitee | Method and system for efficiently searching for free space in a table of a relational database having a clustering index |
GB9924523D0 (en) | 1999-10-15 | 1999-12-15 | Univ Strathclyde | Database processor |
US6598041B1 (en) | 2000-09-07 | 2003-07-22 | International Business Machines Corporation | Method, system, and program for processing modifications to data in tables in a database system |
US6865577B1 (en) | 2000-11-06 | 2005-03-08 | At&T Corp. | Method and system for efficiently retrieving information from a database |
US7054858B2 (en) | 2001-08-01 | 2006-05-30 | Oic Acquisition Corporation | System and method for retrieval of objects from object to relational mappings |
GB2379526A (en) | 2001-09-10 | 2003-03-12 | Simon Alan Spacey | A method and apparatus for indexing and searching data |
CN1585719A (zh) * | 2001-11-17 | 2005-02-23 | 毕万希恩纳有限公司 | 利用纸板制作的蛋品包装容器 |
US8738568B2 (en) | 2011-05-05 | 2014-05-27 | Oracle International Corporation | User-defined parallelization in transactional replication of in-memory database |
US8868544B2 (en) | 2002-04-26 | 2014-10-21 | Oracle International Corporation | Using relational structures to create and support a cube within a relational database system |
US6898608B2 (en) | 2002-04-26 | 2005-05-24 | Oracle International Corporation | Techniques for managing what-if analysis of data managed by a relational database system |
JP4214712B2 (ja) | 2002-05-16 | 2009-01-28 | 株式会社日立製作所 | データベースのページ確保処理方法 |
US7305386B2 (en) | 2002-09-13 | 2007-12-04 | Netezza Corporation | Controlling visibility in multi-version database systems |
US6981004B2 (en) | 2002-09-16 | 2005-12-27 | Oracle International Corporation | Method and mechanism for implementing in-memory transaction logging records |
US6804729B2 (en) | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
US20050027692A1 (en) | 2003-07-29 | 2005-02-03 | International Business Machines Corporation. | Method, system, and program for accessing data in a database table |
US7107396B2 (en) | 2003-10-31 | 2006-09-12 | International Business Machines Corporation | Chaining of blocks for optimal performance with DASD (Direct Access Storage Devices) free nonvolatile updates |
US20050234986A1 (en) | 2004-04-09 | 2005-10-20 | Microsoft Corporation | Systems and methods for fragment-based serialization |
US7376674B2 (en) | 2004-05-14 | 2008-05-20 | Oracle International Corporation | Storage of multiple pre-modification short duration copies of database information in short term memory |
US7774298B2 (en) | 2004-06-30 | 2010-08-10 | Sap Ag | Method and system for data extraction from a transaction system to an analytics system |
US7451146B2 (en) | 2004-06-30 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Almost non-blocking linked stack implementation |
US9208191B2 (en) | 2012-07-20 | 2015-12-08 | Sap Se | Lock-free, scalable read access to shared data structures |
US7302533B2 (en) | 2005-03-11 | 2007-11-27 | International Business Machines Corporation | System and method for optimally configuring software systems for a NUMA platform |
US7698712B2 (en) | 2005-07-21 | 2010-04-13 | Sap Ag | Selectively transmitting transaction data |
US7734593B2 (en) | 2005-11-28 | 2010-06-08 | Commvault Systems, Inc. | Systems and methods for classifying and transferring information in a storage network |
US7822932B2 (en) | 2006-08-18 | 2010-10-26 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
EP2115593B1 (en) | 2007-01-26 | 2018-10-24 | Intel Corporation | Hierarchical immutable content-addressable memory processor |
KR20080090934A (ko) | 2007-04-06 | 2008-10-09 | 삼성전자주식회사 | 정속 역 재생 방법 및 장치 |
US8364648B1 (en) | 2007-04-09 | 2013-01-29 | Quest Software, Inc. | Recovering a database to any point-in-time in the past with guaranteed data consistency |
US8024296B1 (en) | 2007-06-15 | 2011-09-20 | Symantec Corporation | Method and apparatus for agent-less auditing of server |
US9141435B2 (en) | 2007-07-30 | 2015-09-22 | Sybase, Inc. | System and methodology providing workload management in database cluster |
US8661204B2 (en) | 2007-08-15 | 2014-02-25 | University Of Rochester, Office Of Technology Transfer | Mechanism to support flexible decoupled transactional memory |
US7966343B2 (en) * | 2008-04-07 | 2011-06-21 | Teradata Us, Inc. | Accessing data in a column store database based on hardware compatible data structures |
US20090064160A1 (en) | 2007-08-31 | 2009-03-05 | Microsoft Corporation | Transparent lazy maintenance of indexes and materialized views |
US8127233B2 (en) | 2007-09-24 | 2012-02-28 | Microsoft Corporation | Remote user interface updates using difference and motion encoding |
US7836037B2 (en) | 2007-10-04 | 2010-11-16 | Sap Ag | Selection of rows and values from indexes with updates |
EP2203828A1 (en) | 2007-10-18 | 2010-07-07 | Nxp B.V. | Data processing system with a plurality of processors, cache circuits and a shared memory |
US20090287737A1 (en) | 2007-10-31 | 2009-11-19 | Wayne Hammerly | Architecture for enabling rapid database and application development |
US7761434B2 (en) | 2007-11-19 | 2010-07-20 | Red Hat, Inc. | Multiversion concurrency control in in-memory tree-based data structures |
JP4261609B1 (ja) | 2008-05-02 | 2009-04-30 | 透 降矢 | トランザクションの同時実行制御を備えたマルチオペレーション・プロセッシングを用いたデータベースのトランザクション処理システム |
US20130091162A1 (en) | 2008-07-25 | 2013-04-11 | Jerzy Jozef Lewak | Data Access Using Multilevel Selectors and Contextual Assistance |
US8255398B2 (en) | 2008-09-30 | 2012-08-28 | International Business Machines Corporation | Compression of sorted value indexes using common prefixes |
US20100088309A1 (en) | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
US8732139B2 (en) | 2008-12-18 | 2014-05-20 | Sap Ag | Method and system for dynamically partitioning very large database indices on write-once tables |
US8140495B2 (en) | 2009-05-04 | 2012-03-20 | Microsoft Corporation | Asynchronous database index maintenance |
US8161001B2 (en) | 2009-05-07 | 2012-04-17 | Bmc Software, Inc. | Relational database page-level schema transformations |
US8762333B2 (en) | 2009-07-08 | 2014-06-24 | Pivotal Software, Inc. | Apparatus and method for read optimized bulk data storage |
US9582525B2 (en) | 2009-09-08 | 2017-02-28 | Oracle International Corporation | Technique to gather statistics on very large hierarchical collections in a scalable and efficient manner |
US8205062B2 (en) | 2009-10-14 | 2012-06-19 | Inetco Systems Limited | Tiered data management method and system for high performance data monitoring |
US9262330B2 (en) | 2009-11-04 | 2016-02-16 | Microsoft Technology Licensing, Llc | Column oriented in-memory page caching |
US8443375B2 (en) | 2009-12-14 | 2013-05-14 | Verisign, Inc. | Lockless queues |
US8396831B2 (en) | 2009-12-18 | 2013-03-12 | Microsoft Corporation | Optimistic serializable snapshot isolation |
US8356007B2 (en) | 2010-10-20 | 2013-01-15 | Microsoft Corporation | Distributed transaction management for database systems with multiversioning |
CA2793429C (en) | 2010-03-18 | 2019-10-29 | Nuodb, Inc. | Database management system |
US9251214B2 (en) | 2010-04-08 | 2016-02-02 | Microsoft Technology Licensing, Llc | In-memory database system |
US8849773B2 (en) | 2010-04-28 | 2014-09-30 | Dell Products L.P. | Methods and apparatus for active optimization of data |
US20110276744A1 (en) | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US20110302143A1 (en) | 2010-06-02 | 2011-12-08 | Microsoft Corporation | Multi-version concurrency with ordered timestamps |
US8868506B1 (en) | 2010-06-17 | 2014-10-21 | Evolphin Software, Inc. | Method and apparatus for digital asset management |
CN102158345B (zh) * | 2010-06-23 | 2013-06-05 | 青岛海信传媒网络技术有限公司 | 一种数据管理方法、装置和系统 |
US10803066B2 (en) | 2010-06-29 | 2020-10-13 | Teradata Us, Inc. | Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators |
US8412689B2 (en) | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
US8510344B1 (en) | 2010-08-27 | 2013-08-13 | Amazon Technologies, Inc. | Optimistically consistent arbitrary data blob transactions |
US8601038B2 (en) | 2010-10-08 | 2013-12-03 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | Available-to-promise on an in-memory column store |
US8407419B2 (en) | 2010-11-30 | 2013-03-26 | Open Text S.A. | System and method for managing a cache using file system metadata |
US8170981B1 (en) | 2010-12-08 | 2012-05-01 | Dassault Systemes Enovia Corporation | Computer method and system for combining OLTP database and OLAP database environments |
US8868512B2 (en) | 2011-01-14 | 2014-10-21 | Sap Se | Logging scheme for column-oriented in-memory databases |
US8972696B2 (en) | 2011-03-07 | 2015-03-03 | Microsoft Technology Licensing, Llc | Pagefile reservations |
JP5158294B2 (ja) * | 2011-06-06 | 2013-03-06 | パナソニック株式会社 | Rc発振回路 |
US8688954B2 (en) | 2011-08-26 | 2014-04-01 | Microsoft Corporation | Remapping inoperable memory blocks using pointers |
US8504542B2 (en) | 2011-09-02 | 2013-08-06 | Palantir Technologies, Inc. | Multi-row transactions |
US20130097135A1 (en) * | 2011-10-17 | 2013-04-18 | Pie Digital, Inc. | Method and system for generating domain specific in-memory database management system |
US8838551B2 (en) | 2011-10-21 | 2014-09-16 | International Business Machines Corporation | Multi-level database compression |
US9483512B2 (en) | 2011-11-07 | 2016-11-01 | Sap Se | Columnar database using virtual file data objects |
US8892586B2 (en) | 2011-12-23 | 2014-11-18 | Sap Ag | Accelerated query operators for high-speed, in-memory online analytical processing queries and operations |
US8768891B2 (en) | 2012-04-27 | 2014-07-01 | Sap Ag | Ensuring database log recovery consistency |
US11010415B2 (en) * | 2012-04-30 | 2021-05-18 | Sap Se | Fixed string dictionary |
US10162766B2 (en) * | 2012-04-30 | 2018-12-25 | Sap Se | Deleting records in a multi-level storage architecture without record locks |
US9053003B2 (en) | 2012-06-21 | 2015-06-09 | Microsoft Technology Licensing, Llc | Memory compaction mechanism for main memory databases |
US9053160B2 (en) | 2012-06-26 | 2015-06-09 | Here Global B.V. | Distributed, real-time online analytical processing (OLAP) |
GB2504109B (en) | 2012-07-18 | 2020-02-12 | Open Cloud Nz Ltd | Combining scalability across multiple resources in a transaction processing system having global serializability |
US8938442B2 (en) * | 2012-08-07 | 2015-01-20 | Ca, Inc. | Systems and methods for efficient paging of data |
US9058268B1 (en) | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
US20140136571A1 (en) | 2012-11-12 | 2014-05-15 | Ecole Polytechnique Federale De Lausanne (Epfl) | System and Method for Optimizing Data Storage in a Distributed Data Storage Environment |
US9098522B2 (en) | 2012-11-29 | 2015-08-04 | Sap Se | Version garbage collection using snapshot lists |
US10381106B2 (en) | 2013-01-28 | 2019-08-13 | Hasso-Plattner-Institut Fuer Softwaresystemtechnik Gmbh | Efficient genomic read alignment in an in-memory database |
US9286336B2 (en) | 2013-03-12 | 2016-03-15 | Sap Se | Unified architecture for hybrid database storage using fragments |
US11030055B2 (en) | 2013-03-15 | 2021-06-08 | Amazon Technologies, Inc. | Fast crash recovery for distributed database systems |
US9275095B2 (en) | 2013-07-31 | 2016-03-01 | International Business Machines Corporation | Compressing a multi-version database |
US9659050B2 (en) | 2013-08-06 | 2017-05-23 | Sybase, Inc. | Delta store giving row-level versioning semantics to a non-row-level versioning underlying store |
US9378232B2 (en) | 2013-09-21 | 2016-06-28 | Oracle International Corporation | Framework for numa affinitized parallel query on in-memory objects within the RDBMS |
US9372743B1 (en) | 2013-09-30 | 2016-06-21 | Emc Corporation | System and method for storage management |
US9390115B2 (en) | 2013-10-11 | 2016-07-12 | Oracle International Corporation | Tables with unlimited number of sparse columns and techniques for an efficient implementation |
US9489409B2 (en) | 2013-10-17 | 2016-11-08 | Sybase, Inc. | Rollover strategies in a N-bit dictionary compressed column store |
US9977802B2 (en) | 2013-11-21 | 2018-05-22 | Sap Se | Large string access and storage |
US9483516B2 (en) | 2014-03-14 | 2016-11-01 | Sap Se | Multi-version concurrency control across row store and column store |
US9645844B2 (en) | 2014-03-28 | 2017-05-09 | Futurewei Technologies, Inc. | Systems and methods to optimize multi-version support in indexes |
US10042870B2 (en) | 2014-10-08 | 2018-08-07 | International Business Machines Corporation | Supporting transient snapshot with coordinated/uncoordinated commit protocol |
US20160125022A1 (en) | 2014-10-31 | 2016-05-05 | Microsoft Corporation | Efficient maintenance of column store indexes on memory-optimized tables |
US9965513B2 (en) | 2014-11-25 | 2018-05-08 | Sap Se | Set-orientated visibility state retrieval scheme |
US10127260B2 (en) | 2014-11-25 | 2018-11-13 | Sap Se | In-memory database system providing lockless read and write operations for OLAP and OLTP transactions |
US10255309B2 (en) | 2014-11-25 | 2019-04-09 | Sap Se | Versioned insert only hash table for in-memory columnar stores |
US9898551B2 (en) | 2014-11-25 | 2018-02-20 | Sap Se | Fast row to page lookup of data table using capacity index |
US9778991B2 (en) | 2014-11-25 | 2017-10-03 | Sap Se | Exporting and importing database tables in a multi-user database environment |
US9665609B2 (en) | 2014-11-25 | 2017-05-30 | Sap Se | Garbage collection of multi-version concurrency control (MVCC) data blocks |
US10409864B2 (en) | 2014-11-25 | 2019-09-10 | Sap Se | Transaction control block for multiversion concurrency commit status |
US10725987B2 (en) | 2014-11-25 | 2020-07-28 | Sap Se | Forced ordering of a dictionary storing row identifier values |
US9971770B2 (en) | 2014-11-25 | 2018-05-15 | Sap Se | Inverted indexing |
US9965504B2 (en) | 2014-11-25 | 2018-05-08 | Sap Se | Transient and persistent representation of a unified table metadata graph |
US9875024B2 (en) | 2014-11-25 | 2018-01-23 | Sap Se | Efficient block-level space allocation for multi-version concurrency control data |
US10474648B2 (en) | 2014-11-25 | 2019-11-12 | Sap Se | Migration of unified table metadata graph nodes |
US10558495B2 (en) | 2014-11-25 | 2020-02-11 | Sap Se | Variable sized database dictionary block encoding |
US9886464B2 (en) | 2014-11-25 | 2018-02-06 | Sap Se | Versioned bloom filter |
US9811549B2 (en) | 2014-11-25 | 2017-11-07 | Sap Se | Applying a database transaction log record directly to a database table container |
US9959178B2 (en) | 2014-11-25 | 2018-05-01 | Sap Se | Transactional and parallel log replay for asynchronous table replication |
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 |
US9779104B2 (en) | 2014-11-25 | 2017-10-03 | Sap Se | Efficient database undo / redo logging |
US10042552B2 (en) | 2014-11-25 | 2018-08-07 | Sap Se | N-bit compressed versioned column data array for in-memory columnar stores |
US9792318B2 (en) | 2014-11-25 | 2017-10-17 | Sap Se | Supporting cursor snapshot semantics |
US10552402B2 (en) | 2014-11-25 | 2020-02-04 | Amarnadh Sai Eluri | Database lockless index for accessing multi-version concurrency control data |
US9891831B2 (en) | 2014-11-25 | 2018-02-13 | Sap Se | Dual data storage using an in-memory array and an on-disk page structure |
US9953050B2 (en) | 2014-11-25 | 2018-04-24 | Sap Se | Garbage collection of versions driving the garbage collection of multi-version concurrency control timestamps |
US9798759B2 (en) | 2014-11-25 | 2017-10-24 | Sap Se | Delegation of database post-commit processing |
US9824134B2 (en) | 2014-11-25 | 2017-11-21 | Sap Se | Database system with transaction control block index |
US20160147813A1 (en) | 2014-11-25 | 2016-05-26 | Juchang Lee | Distributed transaction commit protocol |
US10747737B2 (en) | 2014-11-25 | 2020-08-18 | Sap Se | Altering data type of a column in a database |
US9513811B2 (en) | 2014-11-25 | 2016-12-06 | Sap Se | Materializing data from an in-memory array to an on-disk page structure |
US9817879B2 (en) | 2014-12-18 | 2017-11-14 | International Business Machines Corporation | Asynchronous data replication using an external buffer table |
-
2014
- 2014-11-25 US US14/553,892 patent/US10725987B2/en active Active
-
2015
- 2015-10-28 EP EP15003085.6A patent/EP3026579B1/en active Active
- 2015-11-20 CN CN201510813077.5A patent/CN105630864B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101311930A (zh) * | 2007-05-21 | 2008-11-26 | Sap股份公司 | 具有重复值的表的块压缩 |
CN103970870A (zh) * | 2014-05-12 | 2014-08-06 | 华为技术有限公司 | 数据库查询方法和服务器 |
Also Published As
Publication number | Publication date |
---|---|
US20160147804A1 (en) | 2016-05-26 |
US10725987B2 (en) | 2020-07-28 |
EP3026579B1 (en) | 2022-03-23 |
EP3026579A1 (en) | 2016-06-01 |
CN105630864A (zh) | 2016-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630864B (zh) | 存储行标识符值的字典的强制排序 | |
US9830109B2 (en) | Materializing data from an in-memory array to an on-disk page structure | |
CN105630409B (zh) | 使用存储器内阵列和盘上页结构的双重数据存储 | |
CN105630860B (zh) | 具有事务控制块索引的数据库系统 | |
US11119997B2 (en) | Lock-free hash indexing | |
US9779104B2 (en) | Efficient database undo / redo logging | |
US10311048B2 (en) | Full and partial materialization of data from an in-memory array to an on-disk page structure | |
CN105630865B (zh) | 用于内存列式存储的n比特压缩版本化列数据阵列 | |
US9792318B2 (en) | Supporting cursor snapshot semantics | |
US9898551B2 (en) | Fast row to page lookup of data table using capacity index | |
US10296611B2 (en) | Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes | |
US10474648B2 (en) | Migration of unified table metadata graph nodes | |
US9875024B2 (en) | Efficient block-level space allocation for multi-version concurrency control data | |
US9965504B2 (en) | Transient and persistent representation of a unified table metadata graph | |
US10552402B2 (en) | Database lockless index for accessing multi-version concurrency control data | |
US9286336B2 (en) | Unified architecture for hybrid database storage using fragments | |
US9348833B2 (en) | Consolidation for updated/deleted records in old fragments | |
US20140279963A1 (en) | Assignment of data temperatures in a framented data set |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |