存储行标识符值的字典的强制排序的制作方法_3

文档序号:9865588阅读:来源:国知局
允许基于RowID值的给定间隔来找到页504。搜索时间可以是log η级别的,其中η非常小。RowID索引可经由RowID值提供对数据的快速访问。为了优化,“新”页在RowID和行索引之间可具有1:1关联,使得简单数学(没有查找)操作成为可能。在当前主题的至少一些实现方式中,只有被合并过程重组织的页需要RowID索引。
[0048]图6示出了统一表格未排序字典600的框图。根据当前主题的一个或多个实现方式,增量部分中的列数据可使用未排序字典。对每个增量列字典可提供暂态结构。页向量502可处理页在存储器中的钉住。从其他结构经由指针可提供直接访问。值向量间接602可允许每个字典块604相同数目的值。此能力对于按ValueID查找值可支持I级别的性能成本。字典可向每个唯一值指派唯一的ValueID(通常是数值),使得唯一值(通常在存储器大小上大于ValueID)可被存储一次而不是多次。值阵列是被字典用来在给定ValueID的情况下检索值或者在给定值的情况下检索ValueID的结构。此技术可减小在值不唯一的情况下存储一组值所需要的存储器量,其通常被称为字典压缩。值到ValueID映射606对于按值查找ValueID可支持I级别的或者log η级别的散列或B树大小。B树是一种使数据保持被排序并允许对数时间的搜索、顺序访问、插入和删除的树数据结构。此能力对于字典压缩可能是必要的。B树对于范围扫描可能更好,但维护起来可能是更昂贵的。
[0049]图7示出了用于在统一表格上执行读取操作720的功能框图700。一般地,读取操作可具有对所有片段(即,活跃片段712和关闭片段716)的访问。可通过仅加载包含来自特定查询的数据的片段来优化读取操作。不包含这种数据的片段可被排除。为了做出此决策,可对每个片段存储容器级元数据(例如,最小值和/或最大值)。可将此元数据与查询相比较来判定片段是否包含请求的数据。
[0050]功能框图700也图示了增量合并操作710。新的事务或变化可最初被写入到增量存储中。在一些实现方式中,增量存储可包括一个或多个存储,例如增量存储206-1和增量存储206-2。写入操作可最初被写入到增量存储206-1。
[0051 ]核心软件平台120可向每个写入操作指派行标识符(RowID)值和行位置(RowPOS)值。图8示出了多个写入操作的样本RowID值和样本RowPOS值的表格800。如上文参考图4所述,RowID值可表示行的逻辑位置,并且RowPOS值可表示行的物理位置。核心软件平台120可顺序地向操作指派RowID值和RowPOS值。例如,当客户端机器140发起写入操作810时,核心软件平台120可向此操作指派为I的RowID值和为I的RowPOS值。当客户端机器140(或任何其他客户端机器)发起新的写入操作820时,核心软件平台120可指派下一个可用的RowID和RowPOS。在图8的实现方式中,写入操作820可具有为2的RowID值和为2的RowPOS值。核心软件平台120可以按类似的方式为写入操作830和840指派RowID值和RowPOS值。本文描述的写入操作可与新数据的添加或插入相关联。然而,在一些实现方式中,写入操作可包括删除。与可被指派RowID值的数据插入不同,删除可不接收RowID值。
[0052]在增量合并操作710期间,被提交的写入操作可被从增量存储206-1存留到存储器内数据库中。在一些实现方式中,存储器内数据库可被存储在主存储210处。在图8的实现方式中,例如,写入操作810和840可被提交并被直接存留到主存储210。主存储210可包括一个活跃片段712和一个或多个关闭片段716。当更新被从增量存储206-1合并到主存储210中时,关闭片段716中的现有记录不能被改变。反而,记录的新版本可被添加到活跃片段712,并且旧版本可被标记为无效。
[0053]核心软件平台120可将未提交的写入操作(例如,写入操作820和830)从增量存储206-1拷贝到增量存储206-2。图9示出了对于增量存储206-2中存储的写入操作的RowID和RowPOS指派的表格900。因为RowID值表示行的逻辑位置并且因此是不可变的,所以写入操作820和830的RowID值保持相同(S卩,分别是2和3)。然而,核心软件平台120可更新写入操作820和830的RowPOS值以反映其在增量存储206-2中的新位置。由于写入操作820是增量存储206-2中的第一条目,所以核心软件平台120可向此操作指派为I的RowPOS值。类似地,核心软件平台120可向写入操作830指派为2的RowPOS值以指示其是增量存储206-2中的第二条目。
[0054]随着客户端机器140发起新的写入事务,核心软件平台120可将这些新事务记录在增量存储206-2中。例如,当客户端机器140发起写入操作940时,核心软件平台120可指派下一个可用的RowID值和RowPOS值。对于前者,核心软件平台120先前向操作840指派了为4的RowID值。因此,下一个可用的RowID值(S卩5)可被指派给写入操作940。对于后者,核心软件平台120可向操作940指派为3的RowPOS值以指示此操作是增量存储206-2中的第三条目。RowID值和RowPOS值可按类似的方式被指派给写入操作950、960和970。
[0055]表格900的RowID指派可被存储在RowID字典1000中,如图1OA所示。与图6所示的字典600—样,字典1000可向每个RowID指派唯一的ValuelD。在一些实现方式中,RowID字典1000可以是推回字典。在推回字典中,可基于RowID被写入到字典的顺序来向RowID指派ValuelD。在图1OA的实现方式中,例如,ValueID值0、1、2、3、4和5分别被指派给RowID值2、3、
5、8、6和7。
[0056]从图1OA明显可见,字典条目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值的快速查找。
[0057]图1OB图示了排序的字典1040。与具有不按顺序的RowID值的推回字典1000不同,字典1040可具有按顺序排序的RowID值。在图1OB的实现方式中,例如,字典条目1005、1010、1015、1045、1050和1055可分别具有顺序递增的RowID值2、3、5、6、7和8。为了生成排序字典1040,核心软件平台120可将每个RowID值映射到适当的ValueID值,使得相应的RowID被按先后顺序放置在字典中。在排序字典1040中,例如,RowID值被按递增的先后顺序排列。在一些实现方式中,可使用递减的先后顺序。核心软件平台120可利用以下式子来执行此映射:
[0058]新ValueID=(进入 RowID-基本 RowID)+基本 ValueID
[0059](式I)
[0060]在式I中,新ValueID可表示进入RowID应当被添加到字典1040的正确位置。将进入RowID放置在由新ValueID表示的位置可产生图1OB所示的顺序排序。新ValueID可以是两个基本值(即,基本RowID和基本ValueID)的函数。基本RowID和基本ValueID可对应于跟随在提交的事务(例如,提交的写入操作)之后的RowID值的连续序列的起始点。在一些实现方式中,这些基本值紧跟在提交的事务之后,没有任何居间的操作。进入RowID和基本RowID之间的差别可表示字典条目的偏移量。此偏移量可被添加到基本ValueID以便确定新ValuelD。[0061 ] 在图1OB的实现方式中,例如,基本ValueID值为2,并且RowID值为5。此基本对表示分别在字典条目1015、1045、1050和1055处的RowID值5、6、7和8的连续序列的起始点。此基本对跟随提交的事务(即,先前提交的具有为4的
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1