基于重构与更新比较的索引维护.pdf

上传人:Y0****01 文档编号:1633112 上传时间:2018-06-30 格式:PDF 页数:17 大小:1.18MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410691157.3

申请日:

2014.11.26

公开号:

CN104750773A

公开日:

2015.07.01

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 17/30申请日:20141126|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

国际商业机器公司

发明人:

张元极; J·克劳福德; 邝丽瑶; 谭伟

地址:

美国纽约

优先权:

14/144924 2013.12.31 US

专利代理机构:

北京市中咨律师事务所11247

代理人:

宛丽宏; 于静

PDF下载: PDF下载
内容摘要

一种用于在计算机系统中基于重构与更新之间的比较进行索引维护的方法、系统和计算机程序产品,所述计算机系统包括:多个节点、数据库和针对所述数据库的索引。在一个实施例中,所述方法包括:构建由所述节点接收的用以更改所述数据库的所选更改请求的快照,持续定义的时段。在该定义的时段之后,基于指定标准,选择是重构针对所述数据库的新索引还是向当前索引添加条目。当选择重构新索引时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据重构所述新索引。当选择向当前索引添加条目时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据向所述当前索引添加条目。

权利要求书

权利要求书
1.  一种在计算机系统中进行索引维护的方法,所述计算机系统包括:多个节点、数据库和针对所述数据库的索引,并且其中所述节点接收更改所述数据库的内容的请求,所述方法包括:
通过将更改请求保持在队列中来构建由所述节点接收的用以更改所述数据库的所述内容的所述更改请求的快照,持续定义的时段;
在所述定义的时段之后,基于指定的标准,选择下述操作中的一个:重构针对所述数据库的新索引,和针对所述数据库的当前索引更新条目;
当选择所述的重构新索引时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据来重构所述新索引;以及
当选择所述的更新当前索引时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据来更新所述当前索引。

2.  根据权利要求1所述的方法,其中:
所述指定标准包括用于所述的重构所述新索引所需的时间和用于所述的针对所述当前索引更新条目所需的时间;
由所述节点接收的所述更改请求的形式为:向所述数据库添加新条目或更新所述数据库中现有的条目;以及
所述的针对所述当前索引更新条目包括:
向所述当前索引添加一个或多个条目,以及
当一个或多个所述更改请求是更新所述数据库中的现有条目时,从所述当前索引删除一个或多个条目。

3.  根据权利要求1所述的方法,其中,所述选择包括:
估计用于所述的重构所述新索引所需的时间;
估计用于所述的更新所述当前索引所需的时间;以及
基于估计得到的用于重构所述新索引所需的时间和估计得到的用于更新所述当前索引所需的时间,来选择所述的重构所述新索引和所述的更新所述当前索引中的一个。

4.  根据权利要求3所述的方法,其中:
在所述数据库中的所述数据包括大量记录;
在所述快照中的所述数据包括一个或多个记录;
所述的重构所述新索引包括扫描在所述数据库中的所有记录;以及
所述的更新所述当前索引包括扫描在所述快照中的所有记录并访问在所述数据库中的记录中的指定记录。

5.  根据权利要求4所述的方法,其中:
所述的估计用于重构所述新索引所需的时间包括:估计用于扫描在所述数据库和所述快照中的所有所述记录所需的时间;以及
所述的估计用于更新所述当前索引所需的时间包括:估计用于扫描在所述快照中的所有所述记录并寻找在所述数据库中的所述指定记录所需的时间。

6.  根据权利要求5所述的方法,其中,所述指定记录由在所述快照中的记录确定。

7.  根据权利要求1所述的方法,其中,所述指定标准包括在所述数据库中的数据的量和在所述快照中的数据的量。

8.  根据权利要求1所述的方法,其中,所述的构建快照包括:
识别用以开始所述的构建快照的指定时间;以及
向所述计算机系统的所述节点中的每一个节点通知所述指定时间。

9.  根据权利要求8所述的方法,其中,所述的识别用以开始所述的构建快照的指定时间包括:
接收来自所述节点中的每一个节点的时间戳;以及
基于接收的最新时间戳识别所述指定时间。

10.  根据权利要求9所述的方法,其中,所述的构建快照进一步包括:
识别在开始所述的构建快照之前开始的暂停时段,在所述暂停时段期间,所述节点不接受任何更改所述数据库的所述内容的更改请求;以及
使用接收的最新和最早时间戳来确定所述暂停时段。

11.  一种在计算机系统中进行索引维护的系统,所述系统包括多个节 点、数据库和针对所述数据库的索引,并且其中所述节点接收更改所述数据库的内容的请求,所述索引维护系统包括:
一个或多个硬件处理器单元,其配置用于:
通过将更改请求保持在队列中来构建由所述节点接收的用以更改所述数据库的所述内容的更改请求的快照,持续定义的时段;
在所述定义的时段之后,基于指定的标准,选择下述操作中的一个:重构所述数据库的新索引,和针对所述数据库的当前索引更新条目;
当选择所述的重构新索引时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据来重构所述新索引;以及
当选择所述的更新当前索引的条目时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据来针对所述当前索引更新条目。

12.  根据权利要求11所述的索引维护系统,其中,所述选择包括:估计用于所述的重构所述新索引所需的时间;
估计用于所述的更新所述当前索引所需的时间;以及
基于估计得到的用于重构所述新索引所需的时间和估计得到的用于更新所述当前索引所需的时间,来选择所述的重构所述新索引和所述的更新所述当前索引中的一个。

13.  根据权利要求12所述的索引维护系统,其中:
在所述数据库中的所述数据包括大量记录;
在所述快照中的所述数据包括一个或多个记录;
所述的重构所述新索引包括扫描在所述数据库中的所有记录;
所述的更新所述当前索引包括扫描在所述快照中的所有记录并访问在所述数据库中的记录中的指定记录;
所述的估计用于重构所述新索引所需的时间包括:估计用于扫描在所述数据库和所述快照中的所有所述记录所需的时间;以及
所述的估计用于更新所述当前索引所需的时间包括:估计用于扫描在所述快照中的所有所述记录并寻找在所述数据库中的所述指定记录所需的时间。

14.  根据权利要求11所述的索引维护系统,其中,所述指定标准包括:在所述数据库中的数据的量和在所述快照中的数据的量。

15.  根据权利要求11所述的索引维护系统,其中,所述的构建快照包括:
识别用以开始所述的构建快照的指定时间,包括:接收来自所述节点中的每一个节点的时间戳;以及,基于接收的最新时间戳识别所述指定时间;以及
向所述计算机系统中的所述节点中的每一个节点通知所述指定时间。

说明书

说明书基于重构与更新比较的索引维护
技术领域
本发明大体上涉及维护数据库的索引,更加具体地,涉及确定是重构还是更新索引。
背景技术
数据的惊人增长和多样性对数据应被存储和服务的方式产生了深远影响。为了应对灵活模式和弹性的挑战,出现了许多处理列、键/值对、文档和图表的新分布式数据存储,这些新数据存储常常统称为NoSQL数据存储。各个存储在具体应用领域具有其自身的优势,并在一致性、可用性和操作性能之间做出权衡。支持事务性和分析性工作负载收敛的成熟NoSQL存储应提供均衡的读写性能。一类NoSQL存储基于LSM(日志结构的合并)树。该类NoSQL存储被优化以便进行写操作,而且二级索引可被构建以便进行高效的点查询。
发明内容
本发明的实施例提供了一种在计算机系统中进行索引维护的方法、系统和计算机程序产品,所述计算机系统包括:多个节点、数据库和针对所述数据库的索引,以及其中所述节点接收更改所述数据库的内容的请求。这些更改请求的形式为:向所述数据库添加新条目或更新所述数据库中现有的条目。在一个实施例中,所述方法包括:通过将这些更改请求保持在队列中来构建由所述节点接收的用以更改所述数据库的所述内容的更改请求的快照,持续定义的时段。在所述定义的时段之后,基于指定标准,选择是重构所述数据库的新索引还是针对所述数据库的所述当前索引更新条 目。当选择重构新索引时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据,来重构所述新索引。当选择更新当前索引的条目时,基于在所述数据库中的数据和在所述快照中的所述更改请求中的数据,来针对所述当前索引更新条目。该更新所述当前索引可包括:向所述当前索引添加新条目;更改在该索引中的条目;以及从所述当前索引删除条目。
在实施例中,所述指定标准包括用于重构新索引所需的时间和用于更新所述当前索引的条目所需的时间。
在一个实施例中,所述的选择是重构所述数据库的新索引还是更新所述当前索引可包括:估计用于所述的重构所述新索引所需的时间,以及估计用于所述的更新所述当前索引所需的时间。所述选择,无论是重构还是更新,均基于这些估计得到的用于重构和更新所需的时间。
在实施例中,重构索引包括扫描在所述数据库和所述快照中的所有记录,以及更新所述当前索引包括扫描在所述快照中的所有记录并访问在所述数据库中的所述记录的指定记录。
在一个实施例中,估计用于重构索引所需的时间包括:估计用于扫描在所述数据库和所述快照中的所有所述记录所需的时间;并且估计用于更新所述当前索引所需的时间包括:估计用于扫描在所述快照中的所有所述记录并访问在所述数据库中的指定记录所需的时间。
在一个实施例中,所述指定记录由在所述快照中的记录确定。
在实施例中,所述指定标准包括在所述数据库中的数据的量和在所述快照中的数据的量。
在一个实施例中,构建所述快照包括:识别用以开始所述的构建快照的指定时间;以及向所述计算机系统的所述节点中的每一个通知该指定时间。
在实施例中,识别用以开始所述的构建所述快照的所述指定时间包括:接收来自所述节点中的每一个的时间戳;以及基于接收的最新时间戳识别所述指定时间。
在一个实施例中,构建所述快照进一步包括:识别在构建所述快照之 前开始的暂停时段,在所述暂停时段期间,所述节点不接受任何更改所述数据库的所述内容的更改请求;以及使用接收的最新和最早时间戳来确定该暂停时段。
附图说明
图1示出了可实施本发明实施例的联网计算系统;
图2说明了在图1所示环境中可用作服务器或计算机的计算装置的细节;
图3说明了构建数据的快照的时段和用于本发明实施例的暂停和恢复特征;
图4示出了数据库D和来自快照的数据集合d,以及构建快照的时段;
图5示出了本发明实施例的重构新索引的第一示例;
图6示出了本发明实施例的通过更新针对该索引的条目而修改当前索引的第二示例;
图7是流程图,示出了在本发明实施例中用于确定应通过重构新索引还是通过更新针对当前索引的条目来完成索引维护的过程;以及
图8是图表,描述了针对根据d中的数据量与D中的数据量之比的不同范围、重构新索引所需的时间和更新当前针对索引的条目所需的时间。
具体实施方式
如本领域的技术人员将了解的,本发明可体现为系统、方法或计算机程序产品。因此,本发明可采取采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施例的形式,这些方面在本文中可统称为“电路”、“模块”或“系统”。此外,本发明可采取具体化在具有计算机可用程序代码的任何有形表达介质中的计算机程序产品的形式,该计算机可用程序代码具体化在介质中。
可利用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可为,例如但不限于:电子、磁、光学、电磁、红 外或半导体系统、设备、装置或传播介质。计算机可读介质的更具体示例(非详尽列举)可包括如下:具有一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CDROM)、光学存储装置、传输媒体(诸如支持互联网或内联网的传输媒体)、或磁存储装置。要注意,计算机可用或计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。在本文件的背景下,计算机可用或计算机可读介质可为任何可包含、存储、通信、传播或传输供指令执行系统、设备或装置使用或与其结合使用的程序的介质。计算机可用介质可包括具有随其具体化的计算机可用程序代码的传播数据信号,在带宽中或作为载波的一部分。计算机可用程序代码可使用任何适当的介质传输,包括但不限于:无线、有线、光纤电缆、RF等。
用于实行本发明的操作的计算机程序代码可写入一种或多种编程语言的任何组合,包括:面向对象的编程语言,诸如Java、Smalltalk、C++等,以及传统的程序编程语言,诸如“C”编程语言或相似的编程语言。程序代码可整体地在用户的计算机上执行、部分地在用户的计算机上执行、作为独立软件包、部分地在用户的计算机上执行并且部分地在远程计算机上执行、或整体地在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户的计算机,或连接可以(例如,通过使用互联网服务提供商的互联网)通向外部计算机。
以下参考根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图图示和/或框图对本发明进行描述。要理解,流程图图示和/或框图的各个框和在流程图图示和/或框图中的框的组合可由计算机程序指令实施。这些计算机程序指令可提供给通用计算机、专用计算机或其他可编程 数据处理设备的处理器以生产机器,从而使经由计算机的处理器或其他可编程数据处理设备执行的指令生成用于实施在流程图和/或框图的框或多个框中指定的功能/行动的装置。这些计算机指令还可存储在可指挥计算机或其他可编程数据处理设备以特定方式运行的计算机可读介质中,从而使存储在计算机可读介质中的指令生产制品,包括实施在流程图和/或框图的框或多个框中指定的功能/行动的装置的指令装置。
还可将计算机程序指令加载到计算机或其他可编程数据处理设备上,以致使在计算机或其他可编程设备上执行一系列的操作步骤以产生计算机可实现过程,从而使在计算机或其他可编程设备上执行的指令提供用于实施流程图和/或框图的框或多个框中指定的功能/行动的过程。
现参考附图,图1描述了可实施本发明实施例的网络计算机系统100的图形表示;网络系统100包含网络102,网络102是用于在联网系统内连接在一起的各种装置与计算机之间提供通信链路的介质。网络102可包括诸如有线、无线通信链路或光纤电缆的连接,并且网络102还可为互联网。
在描述的示例中,服务器104、106、110和112可连接至网络102和存储单元114。另外,计算机116和120连接至网络102。这些计算机116和120可为,例如,个人计算机、工作站、笔记本电脑、移动计算机或其他计算装置。在描述的示例中,服务器104、106、110和112向计算机116和120提供数据,诸如,引导文件、操作系统图像和应用。
网络系统100可包括未示出的附加服务器、计算机和其他装置。网络系统100可实施为许多不同类型的网络,诸如,例如,互联网、内联网、局域网(LAN)或广域网(WAN)。图1旨在作为本发明的示例而不是作为本发明的架构限制。
现参考图2,其示出了数据处理系统200的框图。数据处理系统200为图1中的诸如服务器104、106、110和112或计算机116和120等计算机的示例。在该说明性示例中,数据处理系统200包括通信组织200,通信组织200提供在处理器单元204、存储器206、永久存储装置208、通信 单元210、输入/输出(I/O)单元212和显示器214之间的通信。
处理器单元204用于执行可加载到存储器206中的用于软件的指令。处理器单元204可为一组一个或多个处理器或可为多个处理器内核,这取决于具体的实施方式。存储器206和永久存储装置208为存储装置的示例。在这些示例中,存储器206可为随机存取存储器或任何其他适用的易失性或非易失性存储器装置。永久存储装置208可采取各种形式,这取决于具体的实施方式。例如,永久存储装置208可为硬盘驱动器、闪速存储器、可再写光盘、可再写磁带或以上的一些组合。
在这些示例中,通信单元210提供了与其他数据处理系统或装置的通信。在这些示例中,通信单元210为网络接口卡。通信单元210可通过分别或同时使用物理和无线通信链路提供通信。输入/输出单元212实现了与可以连接到数据处理系统200的其他装置的数据输入和输出。例如,输入/输出单元212可通过键盘和鼠标为用户输入提供连接。进一步地,输入/输出单元212可发送输出至打印机。显示器214提供了向用户显示信息的机构。
本领域的普通技术人员要了解,在图1-2中的硬件可根据实施方式的不同而发生变化。其他内部硬件或外围装置,诸如闪速存储器、等效的非易失性存储器或光盘驱动器等,可用于补充或代替图1-2中描述的硬件。
该发明大体上涉及在计算机系统中维护数据库的索引。索引用于访问数据库,并且大型数据库可要求多个大型索引,这些大型索引需要被维护以高效地访问数据库。已经出现了处理列、键/值对、文档和图表的许多新分布式数据存储。常常将这些新数据存储统称为NoSQL。各个NoSQL存储在具体应用领域具有其自身的优势,并在一致性、可用性和操作性能之间做出权衡。
支持事务性和分析性工作负载收敛的成熟NoSQL存储应提供均衡的读写性能。一类NoSQL存储基于LSM(日志结构的合并)树。该类NoSQL存储被优化以便进行写操作,但是该类NoSQL存储不具有用于点查询的优化技术。二级索引可为增强用于某些类型的NoSQL(诸如,Apache  HBase)的点和范围查询的强有力的方式。
当数据库更改时,通常需要维护或更新索引,本发明实施例提供了一种用于在数据库发生变化之后选择维护或更新数据库的方式的过程。在本发明的实施例中,构建用以更改数据库的内容的所选请求的快照,持续定义的时段。在定义的时段之后,作出选择,要么重构数据库的索引,要么更新针对数据库的当前索引的条目。
部署分布式数据库的一个选项是使用多个无共享普通服务器。各个服务器均使用自身的时钟对其管理的记录盖上时间戳,并且所有服务器均定期同步它们的时钟。因此,在本发明实施例中讨论的分布式数据库中的多个服务器(又称节点)之间缺少细粒度同步的全球时间。
在本发明的实施例中,图3图示了用于在多节点计算机系统中构建如以上所论述的快照的时间轴。本公开示例使用了称为暂停和恢复的过程。在该过程中,在快照开始之前的一段时间内,节点不接受更改数据库的内容的请求。这些更改请求的形式为:向所述数据库添加新条目或更新所述数据库中现有的条目。在这段称为暂停时段的时长之后,所有节点均开始重新接受更改数据库的内容的请求。该暂停时段消除了节点之间存在的时钟差异的影响。
在图3的始于全球时间t0的时间轴300中,每个节点将任何接收到的读和写请求放入队列中。同样,每个节点都被要求其最后的提交时间戳,并且这些时间戳用于确定两个值,tstart和t0wait。tstart设为等于这些时间戳中的最新时间戳,而t0wait设为等于tstart减去这些时间戳中的最早时间戳再加1。这确保了twait永不小于1。
利用图3中图示的示例,在302处对来自节点的时间戳进行表示。来自节点1的时间戳为t01,来自节点2的时间戳为t02,以及,来自节点n的时间戳为t0n。这些时间戳中的最新时间戳来自节点k,由此tstart设为等于该时间戳。这些时间戳中的最早时间戳为来自节点1的时间戳,由此twait设为等于tstart减去来自节点1的时间戳再加1。
所有节点等待t0wait,此时,节点释放这些节点中的读写请求。从该点 开始,所有时间戳都将等于或大于tstart+1。
在全球时间t1处,读写请求被放入队列中。每个节点再次被要求其最新的提交时间戳,在304处对这些时间戳进行表示。来自节点1的时间戳为t11,来自节点2的时间戳为t12,以及,来自节点n的时间戳为t1n。值tend设为等于这些t1时间戳中的最新时间戳,在该示例中是来自节点k的时间戳。在tstart和tend之间插入队列中的请求构成快照。插入该快照中的所有数据被盖上时间戳为(tstart,tend]。
如果每个快照均遵守该等待约定,那么任何两个相邻快照之间的时间戳会是单调的且不相交的。
一旦该快照构建,决定如何维护对数据库的索引。图4图示了本发明实施例中的决定过程。在本发明实施例中,决定是重构新索引还是针对当前索引更新条目。
在图4中,框“D”表示在tstart之前数据库中的数据。在tstart和tend之间构建的快照中的数据表示为“d”。
可以使用各种标准或因数确定是重构或更新。此外,在本发明实施例中,如下所描述的,随着时间调节或调谐该标准。
作为示例,在第一次做决定时,该决定可以基于d和D的大小,更加具体地,基于d的大小与D的大小之比。可以多种方式测量这些大小。例如,就D和d中的比特的数量来测量这些大小,作为另一示例,就D和d中的记录的数量来测量这些大小。
利用图4中的示例,如果d中的记录的数量与D中的记录的数量之比大于1/3,重构新索引,否则针对当前索引更新条目。
当决定重构新索引时,丢弃D上的旧索引,在d加上D上构建新索引。可以采用任何合适的过程完成该操作,例如可以使用采用MapReduce编程模型写成的应用。在该过程中,为了构建新索引,读取d和D(表示为RB),并且将用于每个记录的索引条目放入(表示为PI)新索引中。
当决定更新当前索引时,读取d(表示为RB),并且将用于该记录的条目放入(表示为PI)当前索引中。此外,读取D(表示为RB),并且, 针对在d中也在D中的每个记录,从索引中删除在索引中用于D中的该记录的条目。
图5和图6示出了该决定过程以及重构和更新过程的示例。在这些示例中,D具有七个记录Rc1-Rc7,而索引I具有用于这些记录中的每个记录的条目e1-e7。如图5所示,d具有两个新记录Rc8和Rc9以及对记录Rc5的更新wRc5。利用图6中的示例,d具有一个新记录Rc8和用于Rc5的更新wRc5。
利用图5所示的D和d,d/D大于1/3,并且,正因如此,在d+D上重构索引。丢弃旧索引I,并且构建新索引I’。针对每个记录,向索引I’添加条目。用于记录Rc5的新索引中仅包括一个条目,并且该条目基于d中的记录的更新版本wRc5。
在图6的示例中,d仅具有两个条目,R8和对记录Rc5的更新wRc5。由于d/D小于1/3,所以通过针对索引更新条目来维护索引。读取d,并且向索引添加用于d中的每个记录的条目。读取D,并且从索引删除在索引中用于D中的记录Rc5的条目,避免在索引中出现用于Rc5的重复条目。
在重构过程中,通过高速暂存存储器构建索引。为每个记录的最新版本构建索引条目。在本发明实施例中,不需考虑记录的旧版本,因为LMS扫描器会负责该旧版本。然而,为了重构索引,扫描器必须扫描由d和D(d+D)形成的整个表。
在更新过程中,从快照点构建用于索引的附加条目。仅需要为从给定时间点改变的数据(即,d中的数据)构建索引。然而,要实现这一目的,需要读取在D中的d的任何旧版本记录,并且若需要,还要进行索引删除。
由此,重构对比更新的决定可被视为与扫描对比寻找的准则相对应。重构可要求扫描D中的所有记录,而更新选项可仅要求在D中寻找d中不多的纪录的旧版本。
图7中在700处描述了本发明实施例的一种解决方案过程。在该过程中,将重构成本与更新过程成本进行比较来确定是进行重构还是更新。可以多种方式测量该成本,并且在本发明实施例中,成本是指时间。
该过程开始于步骤702;在步骤704处快照开始于等待时间。在步骤706处接受快照数据d,不进行索引维护;在步骤710处停止快照。在步骤712处计算重构过程的成本和更新过程的成本;在步骤714处将这两个成本进行比较。如果更新的成本大于重构的成本,在步骤716处重构索引。如果更新的成本不大于重构的成本,那么,在步骤720处更新当前索引,即如上面所描述的,向索引添加用于d中的记录的条目。
可以采用任何合适的过程来确定或估计重构和更新的就时间而言的成本。作为示例,全索引重构的成本为:
(D+d)*s+(D+d)*w,
增量索引更新的成本为:
(d*r)+(d*w),
其中:
D是数据库D中的记录的数量,
D是快照d中的记录的数量,
r表示以随机顺序读取记录的成本,
s表示按顺序读取记录的成本,
w表示向索引写入记录的成本。
如果在快照d中的d个记录中的d’个记录已知为具有在数据库D
的D个记录中没有的新键(key),那么增量索引更新的成本为:
[(d-d’)*r]+(d*w)。
在LSM中,w通常非常小。
例如,考虑具有100GB大小的数据库D。在一个示例中,考虑具有10MB(D的1%)大小的快照d,并且在另一示例中,考虑具有100MB(D的10%)大小的快照d。顺序读取的速度为VR(100MB/sec),在D和d中的每行的大小为sr=1KB,并且寻找时间为tseek=5ms。
估计得到的重构新索引的成本是(d+D)/VR。由此,在第一示例中,重构新索引的成本为:
(10GB+10MB)/100MB/sec=100.1sec。
并且在另一示例中,重构新索引的成本为:
(10GB+100MB)/100MB/sec=101sec。
估计得到的向当前索引更新条目的成本为(d/sr)tseek。由此,在第一示例中,更新当前索引的成本为:
(10MB/1kB)*(5ms)=50sec。
并且在另一示例中,更新当前索引的成本为:
(100MB/1kB)*(5ms)=500sec。
在第一示例中,更新当前索引中的条目的成本小于重构索引的成本;并且,在决定是重构还是更新时,应该选择针对当前索引更新条目。在第二示例中,相反,针对当前索引更新条目的成本大于重构索引的成本;并且,在决定是重构还是更新时,应该选择重构索引。
成本估计可将d和D的键范围纳入考虑。d的这些键范围R(d)和D的这些键范围R(D)可从d和D的元数据中确定。
如果在快照d中的d个记录中的d’个记录已知为具有在数据库D的D个记录中没有的新键,那么估计得到的重构成本为:(d+D)/VR,,并且估计得到的更新成本为:(d–d’)/sr*tseek。
当键均匀分布在键范围内时,
d”=d*│R(d)∩R(D)│/│R(d)│;d’=d–d”
其中:
d是快照d中的记录的数量,以及
│R(d)∩R(D)│是在快照d和数据库D的交集中的记录的数量。
如果键未均匀分布在键范围内,那么需要在d和D中的键范围的分布直方图以更加准确地估计d’和d”。
在本发明实施例中,在成本估计过程中可以使用成本模式学习和工作负载优化。
由于工作负载波动、索引大小、存储介质及其他因素的影响,所以成本估计可能并非100%准确。可为每个索引调谐或调解参数,诸如r、s和w。
在每次索引维护(增量更新或全重构)时,保存用于索引构建的暂停和恢复时间之间的时间戳和时间间隔。同样,保存用于每次更新或重构的多个字符;并且,例如,可保存更新成本、更新次数、键范围和数据存储大小。
可以将计算得到的索引维护(更新或重构)的估计成本与实际维护成本进行比较,可以使用该比较来调谐用于下一迭代中将用到的进行成本估计的参数。
图8作为示例使出了更新过程的成本(表示为802)和重构过程的成本(表示为804)如何根据d与D之比发生变化的。如图示的,当d相比D较小时,重构比更新所需的成本(时间)更大。随着d相对于D变大,更新的成本和重构的成本均增加,并且在一个点处,重构比更新所需的成本更小。
显然,虽然对本文所公开的本发明实施例进行了很好的计算以实现上文所论述的特征,但是要理解,本领域的技术人员可设想出众多修改和实施例,并且所附权利要求旨在涵盖落入本发明的实质精神和范围内的所有这类修改和实施例。

基于重构与更新比较的索引维护.pdf_第1页
第1页 / 共17页
基于重构与更新比较的索引维护.pdf_第2页
第2页 / 共17页
基于重构与更新比较的索引维护.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《基于重构与更新比较的索引维护.pdf》由会员分享,可在线阅读,更多相关《基于重构与更新比较的索引维护.pdf(17页珍藏版)》请在专利查询网上搜索。

一种用于在计算机系统中基于重构与更新之间的比较进行索引维护的方法、系统和计算机程序产品,所述计算机系统包括:多个节点、数据库和针对所述数据库的索引。在一个实施例中,所述方法包括:构建由所述节点接收的用以更改所述数据库的所选更改请求的快照,持续定义的时段。在该定义的时段之后,基于指定标准,选择是重构针对所述数据库的新索引还是向当前索引添加条目。当选择重构新索引时,基于在所述数据库中的数据和在所述快照。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1