《部分合并.pdf》由会员分享,可在线阅读,更多相关《部分合并.pdf(27页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103377148 A (43)申请公布日 2013.10.30 CN 103377148 A *CN103377148A* (21)申请号 201310156482.5 (22)申请日 2013.04.28 61/640,689 2012.04.30 US 61/646,162 2012.05.11 US 13/843,841 2013.03.15 US G06F 12/08(2006.01) G06F 17/30(2006.01) (71)申请人 SAP 股份公司 地址 德国瓦尔多夫 (72)发明人 F. 菲尔波 I. 施雷特 (74)专利代理机构 北京市柳沈律师。
2、事务所 11105 代理人 金玉洁 (54) 发明名称 部分合并 (57) 摘要 本发明公开了多级存储架构和执行部分合并 的方法。将主存储划分为被动主部分和主动主部 分, 主动主部分在部分合并开始时是空的, 被动主 部分存储主存储的、 不经历部分合并的已编码的 数据记录。将与被动主部分的已排序的字典相对 应的值索引设置为基数 n。将第二级存储结构的 数据记录合并到主动主部分, 主动主部分具有以 值 n+1 开始的字典, 从而到主动主部分的合并继 续按照被动主部分的值索引的编码方案。 (30)优先权数据 (51)Int.Cl. 权利要求书 2 页 说明书 13 页 附图 11 页 (19)中华人。
3、民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书13页 附图11页 (10)申请公布号 CN 103377148 A CN 103377148 A *CN103377148A* 1/2 页 2 1. 一种在具有多级存储架构的内存计算系统的统一表架构中执行部分合并的方法, 该 多级存储架构具有用于将传入的数据请求以逻辑行的格式存储为数据记录的第一级存储 结构、 用于以逻辑列的格式对数据记录进行编码和存储的第二级存储结构、 以及用于压缩 并存储已编码的数据记录以进行长期存储的主存储, 该方法包括 : 将主存储划分为被动主部分和主动主部分, 主动主部分在部分合并开始时是空的, 被。
4、 动主部分存储主存储的、 不经历部分合并的已编码的数据记录 ; 将与被动主部分的已排序的字典相对应的值索引设置为基数 n ; 以及 将第二级存储结构的数据记录合并到主动主部分中, 主动主部分具有以值 n+1 开始的 字典, 从而到主动主部分中的合并继续按照被动主部分的值索引的编码方案。 2. 如权利要求 1 所述的方法, 还包括在主存储的被动主部分的已排序的字典内解决点 访问操作。 3. 如权利要求 1 所述的方法, 还包括在被动主部分的已排序的字典和主动主部分的字 典二者内解决范围访问操作。 4. 一种计算机实施的方法, 包括 : 提供多级存储架构, 该多级存储架构具有用于将传入的数据请求以。
5、逻辑行的格式存储 为数据记录的第一级存储结构、 用于以逻辑列的格式对数据记录进行编码和存储的第二级 存储结构、 以及用于压缩并存储已编码的数据记录以进行长期存储的主存储 ; 将主存储划分为被动主部分和主动主部分, 主动主部分在部分合并开始时是空的, 被 动主部分存储主存储的、 不经历部分合并的已编码的数据记录 ; 将与被动主部分的已排序的字典相对应的值索引设置为基数 n ; 以及 将第二级存储结构的数据记录合并到主动主部分中, 主动主部分具有以值 n+1 开始的 字典, 从而到主动主部分中的合并继续按照被动主部分的值索引的编码方案。 5. 如权利要求 4 所述的计算机实施的方法, 还包括在主存。
6、储的被动主部分的已排序的 字典内解决点访问操作。 6. 如权利要求 4 所述的计算机实施的方法, 还包括在被动主部分的已排序的字典和主 动主部分的字典二者内解决范围访问操作。 7. 如权利要求 4 所述的计算机实施的方法, 其中, 划分、 设置和合并由一个或多个处理 器执行。 8. 一种系统, 包括 : 至少一个可编程处理器 ; 多级存储架构, 该多级存储架构具有用于将传入的数据请求以逻辑行的格式存储为数 据记录的第一级存储结构、 用于以逻辑列的格式对数据记录进行编码和存储的第二级存储 结构、 以及用于压缩并存储已编码的数据记录以进行长期存储的主存储 ; 以及 存储指令的机器可读介质, 该指令。
7、在被所述至少一个可编程处理器执行时, 使所述至 少一个可编程处理器执行操作, 包括 : 将主存储划分为被动主部分和主动主部分, 主动主部分在部分合并开始时是空的, 被 动主部分存储主存储的、 不经历部分合并的已编码的数据记录 ; 将与被动主部分的已排序的字典相对应的值索引设置为基数 n ; 以及 将第二级存储结构的数据记录合并到主动主部分中, 主动主部分具有以值 n+1 开始的 权 利 要 求 书 CN 103377148 A 2 2/2 页 3 字典, 从而到主动主部分中的合并继续按照被动主部分的值索引的编码方案。 9. 如权利要求 8 所述的系统, 还包括在主存储的被动主部分的已排序的字典。
8、内解决点 访问操作。 10. 如权利要求 8 所述的系统, 还包括在被动主部分的已排序的字典和主动主部分的 字典二者内解决范围访问操作。 权 利 要 求 书 CN 103377148 A 3 1/13 页 4 部分合并 0001 相关申请的交叉引用 0002 本申请要求于 2012 年 4 月 30 日提交的题为 “FIXED STRING DICTIONARY (固定字 符串字典) ” 的第 61/640,689 号美国临时申请和于 2012 年 5 月 11 日提交的题为 “UNIFIED TABLE USING MULTI-LEVEL STORAGE ARCHITECTURE(使用多级存。
9、储架构的统一表) ” 的第 61/646,162 号美国临时申请的优先权, 其全部公开通过引用并入本文。 技术领域 0003 这 里 描 述 的 主 题 涉 及 使 用 具 有 多 级 存 储 的 统 一 表 架 构 (unified table architecture) 的内存数据库 (in-memory database) 的数据管理, 而且更具体地, 涉及部分 合并的系统和方法。 背景技术 0004 现代化业务应用中的数据管理是如今软件产业中最具挑战性的课题之一。 不仅是 因为数据驱动如今的业务, 还因为提供了发展新颖的业务理念或业务案例的基础。所有不 同情况中的数据管理已成为每个组织。
10、的核心资产。此外, 数据管理已经得到高级管理层的 相当重视, 作为推动和发展当前业务的核心工具。 在系统侧, 数据管理场景已经变得极其复 杂且难以管理。 高效、 灵活、 健壮和具有成本效益的数据管理层是如今的业务环境中必不可 少的多个不同应用场景的核心。 0005 最初, 典型的企业资源规划 (ERP) 系统被实施为操纵 (handle) 这样的应用场景的 信息处理中枢 (backbone) 。从数据库系统的角度来看, ERP 系统的联机事务处理 (online transactional processing,OLTP)的工作负荷通常需要操纵成千上万的并发用户以及 具有高更新负荷和非常有选择。
11、性的点查询的事务。另一方面, 数据仓库系统 (通常被认为 是 OLTP 的对应物) 要么在巨大的数据量上运行聚集查询, 要么对存储在数据库中的伪影 (artifact) 计算供分析的统计模型。不幸的是, 像用于识别数据流中异常现象的实时分析 或者 ETL/ 信息集成任务的应用增加了种类繁多的不同的、 而且在某些情况下对于现代业 务应用环境中的数据管理层而言是绝对具有挑战性的要求。 0006 有些人已经推测, 传统的数据库管理系统不再能够提供针对各种不同要求的完整 答案。针对特定问题将涌现专门的系统。大型数据管理解决方案现在通常被看作是用于不 同应用场景的、 具有不同能力的不同系统的集合 (zo。
12、o) 。例如, 典型的行存储仍然主导着的 OLTP 领域。对于基于实体的交互模型而言, 在记录中保持逻辑实体和物理表示之间的 1:1 的关系似乎是显而易见的。基于列组织的数据结构在解析领域中获得越来越多的关注, 从 而避免所查询的列的投影并且实现显著更好的数据压缩率。 键值存储被大举引入商业数据 管理解决方案, 以便不仅应对 “大数据” 容量而且提供用于将并行执行的过程代码的平台。 此外, 分布式文件系统提供了廉价的存储机制和类似云的弹性的灵活的并行度, 从而分布 式文件系统使得键值存储成为数据管理领域中的一等公民。 三重存储使已经过多的系统更 加完整, 三重存储用于应对方案灵活的数据和基于图。
13、形的组织。 由于方案伴随着数据, 因此 说 明 书 CN 103377148 A 4 2/13 页 5 系统提供了高效的方式来显式地利用实体之间建模的关系、 运行分析图形算法、 并展示一 般用于弱类型实体的存储库。 0007 虽然专门的系统可以在首先注重性能的角度被认为是聪明的举动, 但是过多的系 统在链接不同的系统、 运行数据复制和传播作业、 或在多个系统之间协调查询场景方面产 生巨大的复杂性。 此外, 设置和维护这样的环境不仅是复杂且容易出错的, 而且还伴有显着 更高的总拥有成本 (total cost of ownership, TCO) 。 从高级角度来看, 对目前情况下的动 机可以做。
14、出以下观察 : 0008 使用前景 : SQL 不再被认为是唯一适合现代业务应用的交互模型。用户要么被应 用层完全屏蔽, 要么想要直接与他们的数据库进行交互。 在第一种情况下, 需要利用紧密耦 合机制来最佳地支持应用层。在第二种情况下, 需要利用用于特定应用域的内置数据库特 征的脚本语言。此外, 从编程的角度来看, 还需要全面支持域特定的和专有的查询语言, 而 且还对使用户能够直接解决并行性的机制存在巨大需求。 0009 成本意识 : 存在明确的要求 : 要求通过为不同类型的工作负荷和使用方案提供综 合的解决方案, 来为完整的数据管理栈提供较低的 TCO 解决方案, 范围从硬件成本到设置 成本。
15、到运营和维护成本。 0010 性能 : 性能被连续不断地确定为使用专门的系统的主要原因。挑战在于提供能够 在任何可能或需要的时候使用专门的运算符或数据结构的灵活的解决方案。 0011 不同的工作负荷特性不是使用专门的系统的集合的全部理由。 我们以往操纵业务 应用的经验使我们支持需要专门的运算符集合这样的假说。 存在对具有各自生命周期和管 理设置的单独系统的偏见。然而, 提供单一的封闭系统太受限制, 而且替代地, 具有公共服 务基本元素 (primitive) 的灵活的数据管理平台更受欢迎。 0012 不同的工作负荷特性 (范围从通过支持主要读取的分析的 DWH 工作负荷的大量事 务处理, 到流。
16、处理领域的高更新场景) 不是选择专门的系统的集合的全部理由。操纵业务应 用的经验导致对专门的运算符集合的需要。 0013 除了纯数据处理性能之外, 应用层和数据管理层之间缺乏适当耦合机制已经被确 定为最先进 (state-of-the-art) 系统的主要缺陷之一。此外, 具有各自生命周期和管理设 置的单独系统更难以设置和管理, 而单一的封闭系统通常又太受限制。需要的是灵活的数 据管理平台, 其一方面具有公共服务基本元素, 另一方面具有单独的查询执行运行时环境。 发明内容 0014 本文档描述了内存数据库平台, 而且描述了用于应对不同事务性工作负荷的数据 管理的一些具体方面的细节。 0015 。
17、在一方面, 系统和方法包括提供内存计算系统的统一表架构。统一表架构包括多 级存储架构, 该存储架构具有第一级存储结构, 用于将传入的数据请求以逻辑行的格式存 储为数据记录, 第二级存储结构, 用于以逻辑列的格式对数据记录进行编码和存储, 以及主 存储, 用于压缩并存储已编码的数据记录以进行长期存储。 0016 系统执行用于执行部分合并的方法。 该方法包括将主存储划分为被动主部分和主 动主部分, 主动主部分在部分合并开始时是空的, 被动主部分存储主存储的、 不经历部分合 并的已编码的数据记录。 该方法还包括将与被动主部分的已排序的字典相对应的值索引设 说 明 书 CN 103377148 A 5。
18、 3/13 页 6 置为基数n。 该方法还包括将第二级存储结构的数据记录合并到主动主部分, 主动主部分具 有以值 n+1 开始的字典, 从而到主动主部分的合并继续按照被动主部分的值索引的编码方 案。 0017 当前主题的实现方式可以包括, 但不限于, 包括所描述的一个或多个特征的系统 和方法以及物品, 所述物品包括有形地具体实施的机器可读介质, 可操作以使得一个或多 个机器 (例如, 计算机等) 产生这里所描述的操作。类似地, 还描述了计算机系统, 其可以包 括一个或多个处理器以及耦合到所述一个或多个处理器的一个或多个存储器。 存储器可以 包括计算机可读的存储介质, 而且可以包括、 编码、 存。
19、储等等一个或多个程序, 所述一个或 多个程序使得一个或多个处理器执行这里所描述的一个或多个操作。与当前的主题的一 个或多个实施方式相一致的计算机实施的方法可以由驻留在单一计算系统或多个计算系 统中的一个或多个数据处理器实施。这样的多个计算系统可以连接, 而且可以通过一个或 多个连接交换数据和 / 或命令或其他指令等, 所述一个或多个连接包括但不限于通过网络 (例如, 因特网、 无线广域网、 局域网、 广域网、 有线网络等) 的连接, 通过多个计算系统中的 一个或多个之间的直接连接等。 0018 这里所描述的主题的一个或多个变体的细节在附图和下面的描述中阐明。 根据说 明书和附图以及权利要求, 。
20、这里所描述的主题的其他特征和优点将是明显的。虽然出于说 明目的将当前公开的主题的某些特征与企业资源软件系统或其他业务软件解决方案或架 构联系起来, 但是应该容易理解的是, 这样的特征并非旨在进行限制。 要求保护的主题的范 围由权利要求限定。 附图说明 0019 附图被并入说明书并构成说明书的一部分, 其与说明书一起示出这里所描述的主 题的某些方面, 帮助解释与所公开的实施方式相关联的一些原理。附图中, 0020 图 1 是图示系统的一些方面的示图, 其示出了与当前的主题的实施方式相一致的 特征 ; 0021 图 2 图示了与当前的主题的实施方式相一致的系统一起使用的数据库分层架构 ; 0022。
21、 图 3 图示了计算模型图形 ; 0023 图 4 图示了统一表存储架构 ; 0024 图 5 是统一表的持久性和保存点机制的概述 ; 0025 图 6 图示了使用统一表的增量 (delta) 合并过程 ; 0026 图 7 图示了使用统一表的另一合并操作 ; 0027 图 8 图示了利用重新排序的合并 ; 0028 图 9 图示了部分合并操作 ; 0029 图 10 图示了用于统一表的主动主存储器和被动主存储器的范围查询执行 ; 0030 图 11 图示了根据当前主题的实施方式的数据库记录生命周期 ; 0031 图 12 图示了 L2 存储器或主存储器中数据的删除操作 ; 以及 0032 图。
22、 13 图示了从第一级数据存储到第二级数据存储的数据移动。 0033 实践时, 相似的参考标记表示相似的结构、 特征或元素。 说 明 书 CN 103377148 A 6 4/13 页 7 具体实施方式 0034 图 1 描绘了数据库系统 100, 其具有内存数据库系统 (in-memory database system, IMDS) 102, 诸如SAP的HANA数据库 (作为例子, 下文中有时可以互换使用) 。 IMDS102 包括内存数据库 104 和多引擎查询处理环境, 其提供支持从结构良好的关系数据到不规则 结构的数据图形到非结构化的文本数据的不同程度的结构的数据的不同的数据抽象。。
23、 处理 引擎的这个完整系列 (full spectrum) 基于作为底层物理数据表示的公共表抽象, 以允许 不同类型的数据的互操作性和组合。在示范性实现中, 内存数据库系统 102 还包括实时复 制服务 108 和数据服务 110, 它们分别与业务套件设计环境 112、 业务仓库设计环境 122 和 第三方设计环境 124 接口。 0035 IMDS102 支持特定于应用的业务对象 112 (诸如 OLAP 多维数据集 (cube) 和特定于 域的函数库) 的表示和直接位于数据库引擎内的逻辑。这允许应用语义与底层数据管理平 台进行交换, 利用这样的交换能够增加查询表达力 (expressive。
24、ness) , 减少单个应用到数 据库往返的数量, 并减少数据库 104 和应用 114、 116 之间传输的数据量。 0036 通过一方面为专有应用服务器提供共享的存储器通信, 另一方面在数据管理层中 直接支持本地的数据类型, IMDS102 能够高效在数据库和应用层 (即, 专有应用 114、 第三方 应用 116 和业务仓库应用 118) 之间通信。此外, 应用服务器技术被直接集成到数据库系统 集群基础结构中, 以使得能够交织执行应用逻辑和数据库管理功能。 0037 数据库系统 100 还支持利用高度优化的面向列的数据表示, 高效地处理同一物理 数据库上的事务工作负荷和分析工作负荷二者。。
25、 这是通过复杂的多步骤记录生命周期管理 方法来实现的。 0038 IMDS102 由具有不同组件的设备模型组成, 以便产生用于数据分析场景的现成的 包 (packet) 。在一些实施方式中, IMDS102 提供对业务仓库 (business warehouse, BW) 系 统 112 的本地支持 (native support) , 以便明显加快查询和转换 (transformation) 场景, 而且还允许完全跳过个别具体化步骤。为了提供这种能力, IMDS102 具有数据加载和转 换工具, 以及用于创建和维护流入和流出 IMDS102 的复杂数据流的建模工作室 (modeling st。
26、udio) 106。数据库系统 102 提供高效、 灵活的数据存储和数据查询场景。 0039 数据库系统 102 遵循图 2 所示的严格的分层架构。与典型的系统类似, 数据库系 统 102 区分数据库请求的编译时 202 和运行时 204。另外, 虽然图 2 中未示出, 但是诸如事 务管理器、 授权管理器、 元数据管理器等的其他组件可以补充整体架构。 0040 如图 2 中可以看到的, 不同的查询语言 206 可以经由用于与外部世界执行所有基 础结构任务的公共连接和会话管理层 208(JDBC, ODBC 连接器等) 进入系统。在第一步骤 中, 由语言解析引擎210将查询字符串翻译成内部优化的。
27、表示 (类似于抽象语法树) , 这是对 每一种特定于域的语言的本地化。在第二步骤中, 由计算图形映射引擎 212 将查询表达式 映射到计算图形 214, 其形成作为 IMDS 的分布式执行框架 216 的一部分的逻辑查询处理框 架的心脏, IMDS包括一个或多个特定于客户的内存数据库218, 内存数据库218的结构和操 作将在下面进一步详细解释。 0041 计算图形模型 0042 计算图形模型松散地遵循典型的数据流图原则。源节点表示持久的表结构、 或 其他计算图形的结果 (outcome) 。内部节点反映消费 (consume) 一个或多个传入数据流 说 明 书 CN 103377148 A 。
28、7 5/13 页 8 的逻辑运算符并且产生任意数量的传出数据流。此外, 一套计算图形运算符可以被分 成两组运算符类型。一方面, 计算模型定义了一套内建 (intrinsic)运算符, 例如聚集 (aggression) 、 投影 (projection) 、 联接 (join) 、 合并 (union) 等。例如, SQL 能够完全映射 到这一类运算符。另一方面, 计算模型提供实现如货币转换或日历功能的核心业务算法的 运算符。最后, 计算模型支持以下类型的运算符 : 0043 SQL 节点 : 计算模型运算符可以对传入数据流执行完整的 SQL 语句。语句可以是 参数, 并且被编译并在计算图形的。
29、运行时执行, 从而产生 “嵌套计算” 模型的形式。 0044 自定义节点 (custom node) : 自定义节点可以被用于出于性能的原因以 C+ 实现 特定于域的运算符。例如, 利用 SAP 专有语言 (如 FOX) 的规划场景能够采用特殊的 “解聚集 (disaggregate) ” 运算符以便本地支持财务规划情况。其他的例子是经由专有 WIPE 图形语 言对数据图形中的图形遍历和分析进行的优化操作。 0045 R 节点 : R 节点可以被用于将传入数据集转发到 R 执行环境。R 脚本被作为参数给 出, 然后将在数据库系统之外被执行, 而且结果被移回计算图形以便进行进一步处理。 0046。
30、 L 节点 : 语言 L 表示数据库系统的内部运行时语言。L 被设计为 C 语言的安全子 集, 而且通常不能由终端用户或应用设计者直接访问。相反, L 是不能被直接映射到数据流 图的特定于域的语言的所有构造 (即, 各种强制控制逻辑) 的目标语言。 0047 除了一套功能运算符以外, 计算模型还提供 “分割 (split) ” 和 “结合 (combine) ” 运算符以便将数据流的分区动态地定义和重新分配为基础构造, 以使能应用定义的数据并 行化。不同的特定于域的语言的各个编译器试图优化从给定的查询脚本到计算图形的映 射。对于 SQL, 映射基于查询表达式的明确定义的 (well-defin。
31、ed) 逻辑表示。在一般情况 下, 映射可以要么基于试探 (heuristics) 要么基于成本, 这取决于所估计的输入数据的大 小等。例如, 编译器可以决定将循环展开到常规数据流图中或者生成用于特定表达的 L 码。 在常规 SQL 的情况下, 这种情况是迄今为止最大、 最复杂的部分而且取自主存面向行的关 系数据库系统 (诸如SAP的P*Time1系统) , 内部表示被直接映射到只展示具有用于捕获SQL 语句的意图的预定语义的运算符的计算图形。 0048 图 3 中描绘了样本计算模型图形 300。计算模型要么经由单独的特定于域的语言 的编译器间接地创建, 要么可以直观地在数据库工作室中建模并注。
32、册为数据库系统的元数 据存储库中的计算视图。 这个过程背后的总体思路是独立于实际的查询语言定制复杂业务 逻辑场景的特定片段 (fragment) , 其能够在多数据库场景中进行微调整 (fine-tuned) 并 重新使用, 即, 计算模型可以以虚拟表的形式从任何特定于域的语言栈被消费。 计算模型的 集合 (collection) 也称为数据库系统内容, 并且经历独立的产品生命周期过程。图 3 中所 示的计算模型图形 300 列出了相对于关系数据库系统中的常规查询规划的一些差异。例 如, 从应用的角度来看, 运算符的结果可以已经为多个消费者优化了共享的公共子表达式。 其次, 标有 “脚本 (s。
33、cript) ” 的节点覆盖 (wrap) 强制语言片断, 其要么来自计算模型设计 者, 要么是由特定于域的查询编译器所产生的系统。此外, 节点 “转换 (conv) ” 示出使用内 置的业务功能来执行特定于应用的转换例程, 例如, 货币转换或单位转换。 0049 计算图形编译和执行 0050 一旦用户定义的查询表达式或查询脚本被映射到计算模型中的数据流图, 优化器 就运行典型的规则和基于成本的优化程序, 以将逻辑规划重构和转换为物理规划, 物理规 说 明 书 CN 103377148 A 8 6/13 页 9 划然后可以由分布式执行框架执行。 0051 执行框架编排 (orchestrate。
34、) 实际数据流和物理运算符的分布式执行。在优化过 程中, 逻辑数据流图的片段被映射到由 “引擎层” 提供的物理运算符。引擎层本身由不同的 物理运算符的集合以及一些局部优化逻辑组成, 以将全局规划的片段适配到实际的物理运 算符的具体特性。特别是, 数据库系统提供以下一套运算符 : 0052 - 关系运算符 : 关系运算符的集合操纵典型的关系查询图形处理。如更详细地描 述, 关系运算符表现不同的特性, 例如, 如同等联接 (equi-join) 的一些运算符直接利用统 一表的现有字典。 0053 -OLAP 运算符 : OLAP 运算符被优化为用于具有事实表和维度表的星型联接 (star-join。
35、) 场景。当优化器识别出这类场景时, 相应的查询规划片段到 OLAP 运算符的映 射被枚举为具有相应的成本估算的可行的物理规划。 0054 -L 运行时 : 内部语言 L 的运行时反映用于执行在给定的计算图形的 L 节点中表示 的 L 代码的构件块 (building block) 。通过使用 “分割 (split) 和结合” 运算符对, L 运行 时可以被调用以便在预定义的分区上并行工作。 0055 - 文本运算符 : 文本搜索分析运算符的集合包括在某些产品 (如 SAP 企业搜索产 品) 中已经可用的一套功能, 用以提供范围从相似性测量到实体解析能力的全面的文本分 析功能。 0056 - 。
36、图形运算符 : 图形运算符提供对基于图形的算法的支持, 以便有效地实现复杂 的资源规划场景或社交网络分析任务。 0057 由于数据流图不仅分布在多个服务器实例 (通常在不同的物理节点上运行) 之间, 而且还分布在不同类型的运算符之间, 因此系统提供用于最佳数据传输和交换格式的一套 工具。尽管所有的运算符都需要实现标准数据传输协议, 但是不同的 “集合” 之内或之外的 个别运算符可以具有高度特殊化的通信协议。例如, 关系运算符和 OLAP 运算符以高度压缩 和专有的格式交换数据。此外, R 节点提供到 R 内部数据帧格式的映射。 0058 除了不同的物理运算符之间的 “横向 (horizonta。
37、l) ” 通信, 它们还利用到统一表层 (unified table layer) 的公共接口。 如在下面的部分中更详细地概述的, 数据库系统提供 了对于不同的运算符而言具有多种访问方式的抽象表格视图。 常见的表格结构实现了数据 实体的完整的生命周期, 而且基本上由行存储和列存储的组合构成, 以便捕获最近的修改 操作的影响。由于数据库系统中的表可以被标记为 “历史的 (historic) ” , 因此表层 (table layer) 还提供用于捕获活动实体的过去值的历史表的实现, 并且提供对于时间旅行查询 (time travel queries) 的访问方法。 0059 在一些实现方式中, 。
38、在丢失了主存储器 (main memory) 中所捕获的数据库状态的 情况下, 数据库系统依赖于持久层 (persistence layer) 来提供可恢复能力。持久层基于 页大小可变的虚拟文件的概念。持久层依赖于频繁的保存点 (savepointing) , 以非常低的 资源开销提供一致的快照 (snapshot) 。这些功能在下面进一步详细描述。 0060 相比于典型的系统, 根据与本说明书一致的实现方式的数据库系统是支持多个 (专有的) 特定于域的语言的灵活的平台。灵活的数据流模型 (计算图形模型) 提供了系统的 核心概念 : 一方面, 查询表达式或查询脚本被映射到模型的实例。另一方面,。
39、 所有不同的物 理运算符都使用对于单个记录实现完整的生命周期管理的、 相同的表层接口。 日志 (log) 和 说 明 书 CN 103377148 A 9 7/13 页 10 数据区被用于在持久的存储装置 (storage) 中维护主存存储器数据库的事务一致的副本。 0061 如图 4 所示, 统一表结构 400 为所有适用的物理运算符提供数据访问。统一 表结构 400 为单个数据库记录提供生命周期管理。统一表的技术是为基于扫描的聚集 查询和高选择性的点查询两者提供优良性能的关键。这提供了与传统的基于行的数 据库架构的关键区别。虽然纪录在概念上在它的整个生命周期内保持在原地更新式 (updat。
40、e-in-place-style) 数据库系统中的同一地点, 但是统一表结构 400 通过物理表示 的不同阶段传播记录。 虽然被设计成总体概念, 但是对于常规表内的记录, 最常用的设置由 三个阶段组成, 如下所述。 0062 如图 4 所示, 统一表结构 400 包括 L1 增量 (L1-delta) 结构 402。L1 增量结构 402 也被称为 “热增量 (hotdelta) ” (或简称为 L1 增量) , 其接受所有传入数据请求并以写入优 化的方式存储它们, 即, L1 增量结构 402 保留记录的逻辑行格式, 并被优化以进行快速插入 和删除、 字段更新和纪录投影。此外, L1 增量结。
41、构 402 可以执行数据压缩。根据经验法则, L1增量结构402可以在每单一表中容纳10,000至100,000行, 这取决于工作负荷特性和可 用的存储器量。 0063 统一表结构 400 还包括 L2 增量结构 404。L2 增量结构 404 也被称为 “冷增量 (colddelta) ” (或简称为 L2 增量) , 其代表记录生命周期的第二阶段, 并且以列存储格式 组织。相比于 L1 增量结构 402, L2 增量结构 404 采用字典编码以达到更好的存储器使用。 然而, 出于性能原因, 字典未被排序, 序从而要求二级索引 (secondary index) 结构来最佳 地支持点查询访问。
42、模式, 例如快速执行唯一约束检查。L2 增量结构 404 非常适合存储多达 1000 万行或更多。 0064 统一表结构400还包括主存储406。 主存储406表示具有最高压缩率而且采用多种 不同的压缩方案的核心数据格式。默认情况下, 一列中的所有值都经由已排序的字典中的 位置来表示并且以位填充 (bit-packed) 的方式存储, 以便具有紧密压缩的各个值。虽然字 典总是使用各种前缀编码方案来压缩, 但是应用不同的压缩技术 (范围从简单的游程长度 编码方案到更复杂的压缩技术) 的结合, 以进一步减少主存储的存储器占用 (footprint) 。 0065 采用统一表结构 400 的数据库系。
43、统被设计用于具有复杂和高容量负荷场景的、 繁 重的OLAP使用情况, 而且系统提供了高效批量插入的特殊处理, 其可以绕过L1增量直接进 入 L2 增量。与条目的位置无关, 当进入系统时将为任何传入的记录生成行 ID (RowId) 。此 外, 日志 (logging) 发生在行的第一次出现, 而且对于常规更新 / 插入 / 删除操作, 其位于 L1 增量内, 或者在批量加载操作的情况下, 其用于 L2 增量。 0066 统一表访问 0067 不同的数据结构共享一套公用数据类型。通过具有行和列迭代器 (二者可选地基 于字典) 的公共抽象接口暴露访问。 0068 此外, 一些物理运算符可以遵循传统。
44、 ONC(开放网络计算) 协议逐条记录地出栈 (pull) 记录, 或者以矢量化的方式 (即, 逐块地) 出栈, 以使能流水线操作并尽可能减少中间 结果对存储器的要求。其他物理运算符实施 “全部具体化 (materialize all) ” 策略, 以避 免在查询执行过程中运算符切换成本。 优化器根据逻辑计算模型决定不同类型的运算符的 混合, 即, 在最终的查询执行规划内无缝地集成不同类型的运算符。 0069 对于利用已排序的字典的运算符而言, 统一表访问接口还经由全局的已排序的字 说 明 书 CN 103377148 A 10 8/13 页 11 典来暴露表的内容。两个增量结构的字典被计算 。
45、(仅对于 L1 增量) 和排序 (对于 L1 增量和 L2 增量二者) 并且在运行中 (on the fly) 与主字典合并。为了实现有效的唯一性约束的 验证, 统一表提供用于增量结构和主结构的倒排索引。 0070 记录生命周期是以一种方式进行组织, 以便在它们的事务控制范围内通过系统异 步传播单个记录, 而不干涉当前正在运行的数据库操作。当前的数据库系统提供了两种转 换, 被称为 “合并步骤” : 0071 L1 到 L2 增量 (L1-to-L2-delta) 合并 : 从 L1 增量到 L2 增量的转换暗示从行组织 到列组织的旋转 (pivot) 步骤。L1 增量的行被分成它们相应的列值。
46、 (columnar value) , 并 且被逐列地插入到 L2 增量结构中。在接收侧, 系统执行查找以识别字典结构中的潜在缺失 值, 并且可选地在字典的末尾插入新的条目以避免在字典内的任何重大的重构操作。在第 二步骤中, 使用字典编码 (仅附加 (append-only) 结构) 将相应的列值添加到值向量。 这两个 步骤可以并行地执行, 因为要移动的元组的数量预先知道, 这使得能够在实际插入它们之 前在新的字典中保留编码。在第三步骤中, 已传播的条目从 L1 增量中删除。所有运行中的 操作要么看到完整的 L1 增量和旧的增量结束边界, 要么看到 L1 增量结构的截断版本和 L2 增量的扩展。
47、版本。根据设计, 从 L1 增量到 L2 增量的转变实质上是增加的 (incremental) , 即, 记录的转变在重组目标结构的数据方面没有任何影响。 0072 L2 增量到主结构 (L2-delta-to-main) 合并 : 新的主结构是从 L2 增量和现有的主 结构创建出来的。虽然 L1 到 L2 增量合并对正在运行的事务具有最小的侵略性, 但是 L2 增 量到主结构合并是资源密集型的任务, 其必须精心安排并在物理层上高度优化。只要开始 L2 增量到主结构合并, 就要关闭当前的 L2 增量的更新并创建一个新的空的 L2 增量结构以 用作 L1 到 L2 增量合并的新的目标。如果合并失。
48、败, 系统还是利用新的 L2 增量操作, 并且 利用以前版本的 L2 增量和主结构重试合并。核心算法以及不同的优化技术 (诸如列优先 (column-wise) 或部分合并) 的更多细节在下面进一步详细描述。 0073 上述的两种合并操作不影响表中包含的数据, 但是表被重组。 然而, 合并操作独立 于重启或备份日志重放。 0074 持久性映射 0075 虽然数据库系统是主存储器中心数据库系统, 但是在定时关机或系统故障后重新 启动系统的情况下, 它的完全 ACID 支持保证了持续性以及原子性和恢复性。数据库系统的 持久性可以基于多个持续性概念。如从图 5 中可以看出的, 持久性 500 基于临。
49、时重做日志 (REDO log) 502 和用于短期恢复或长期备份的保存点数据区 504 中的保存点的组合。 0076 用于 REDO(重做) 目的日志记入只在新的数据进入系统 (或者在 L1 增量内, 或者 是 L2 增量内的批量插入) 时执行一次。当进入 L1 增量时, 记录的新版本被记入日志。在从 L1 增量到 L2 增量的增加传播过程中发生的变化不经历 REDO 日志记入。相反, 字典以及值 索引的变化被添加到驻留在单个数据页中的数据结构, 其最终被移动到下一保存点内的持 久存储中。在合并尚未通过保存点而被持久化的情况下, 在重新启动时可以使用主结构的 较旧版本和较长的增量。 由于合并是重组, 因此表的内容仍然是相同的, 以确保重新启动后 一致的数据库开始。 0077 图 6 示出了持久性映射的操作。字典和值索引二者都基于由底层存储子系统管理 的分页存储布局。在保存点基础结构的控制下, 由存储子系统来刷新 (flush) 脏页 (dirty 说 明 书 CN 10337。