一种索引方法转让专利

申请号 : CN201110036319.6

文献号 : CN102541968B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蒋锦鹏

申请人 : 百度在线网络技术(北京)有限公司

摘要 :

本发明提供了一种索引方法,包括:对接收的关键字进行哈希运算,以从哈希桶表中确定对应的哈希桶,并从哈希桶中获得哈希节点指针;利用哈希节点指针的前预定位从标识信息列表中确定对应的哈希节点数据块识别信息;利用哈希节点指针的后预定位作为偏移量,从哈希节点数据块识别信息对应的哈希节点数据块中获取对应的哈希节点。通过上述方式,本发明提供了一种间接寻址的哈希索引方法,节省了索引的空间,提高了内存的使用效率。

权利要求 :

1.一种索引方法,其特征在于,所述索引方法包括:

a.对接收的关键字进行哈希运算,以从哈希桶表中确定对应的哈希桶,并从所述哈希桶中获得哈希节点指针;

b.利用所述哈希节点指针的前预定位从标识信息列表中确定对应的哈希节点数据块识别信息;

c.利用所述哈希节点指针的后预定位作为偏移量,从所述哈希节点数据块识别信息对应的哈希节点数据块中获取对应的哈希节点;

d.从第二索引中查询与所述哈希节点包括的数据块识别信息对应的数据块信息,所述第二索引完成从数据块识别信息到数据块信息的映射;

e.根据所述数据块信息中的数据块状态判断对应数据块位于内存还是位于固态存储器。

2.如权利要求1所述的方法,其特征在于,所述哈希节点指针为4个字节,所述前预定位为所述哈希节点指针的前9位,所述后预定位为所述哈希节点指针的后23位。

3.如权利要求1所述的方法,其特征在于,所述哈希节点包括所述关键字、数据块识别信息、数据项长度信息以及数据项偏移信息。

4.如权利要求3所述的方法,其特征在于,所述哈希节点进一步包括下一哈希节点指针,其中空闲的哈希节点通过所述下一哈希节点指针串成一个回收链表。

5.如权利要求4所述的方法,其特征在于,所述哈希节点为20个字节,其中所述关键字为8个字节、所述数据块识别信息为2个字节、所述数据项长度信息为2个字节、所述数据项偏移信息为4个字节以及所述下一哈希节点指针为4个字节。

6.如权利要求3所述的方法,其特征在于,所述数据块信息包括数据块状态、内存指针以及固态存储器文件描述符。

7.如权利要求6所述的方法,其特征在于,所述索引方法进一步包括:f.若所述数据块位于所述内存,则根据所述内存指针、所述数据项偏移信息以及所述数据项长度信息读取对应数据项。

8.如权利要求6所述的方法,其特征在于,所述索引方法进一步包括:f.若所述数据块位于所述固态存储器,则根据所述固态存储器文件描述符、所述数据项偏移信息以及所述数据项长度信息读取所述对应数据项。

说明书 :

一种索引方法

技术领域

[0001] 本发明涉及数据处理技术领域,特别涉及一种索引方法。

背景技术

[0002] 随着互联网的高速发展,人们的信息来源得到了极大的丰富,信息获取方式也随之而改变,这给人类带来机遇的同时也带来挑战,在Web信息成几何基数增长的前提下,如何能够快速准确的进行数据搜索,搜索到需要的东西,是数据处理技术领域研究的方向之一。
[0003] 在数据搜索中,搜索引擎spider得到越来越多的应用,spider是搜索引擎的一个自动程序,其作用是抓取互联网上的网页,建立索引数据库,使用户能在搜索引擎中搜索到相关网站的网页。
[0004] 在具体实施过程中,spider每天要抓取大量网站链接,在抓取之前都需要获取待抓取网站的IP地址以及robots等信息,这些信息不可能实时的从互联网上查询,而只能通过内部的域名服务器DNS查询。
[0005] 但是,由于DNS中存储的数据量在不断的增加,因此查询速度也会随之变慢,不能满足快速查询的需求。而且,对DNS中的数据进行更新时,也会增加DNS的工作量,这也影响了查询的速度。同样,在实时网页数据库以及其他关键字-数据值(Key-value)数据库中也会遇到类似的问题。
[0006] 如何能够更好的对数据进行查询以及更新,满足高性能的读写服务,是数据处理技术领域研究的方向之一。

发明内容

[0007] 本发明所要解决的技术问题是提供一种索引方法,以节省索引的空间,提高内存的使用效率。
[0008] 本发明为解决技术问题而采用的技术方案是提供一种索引方法,包括:a.对接收的关键字进行哈希运算,以从哈希桶表中确定对应的哈希桶,并从所述哈希桶中获得哈希节点指针;b.利用所述哈希节点指针的前预定位从标识信息列表中确定对应的哈希节点数据块识别信息;c.利用所述哈希节点指针的后预定位作为偏移量,从所述哈希节点数据块识别信息对应的哈希节点数据块中获取对应的哈希节点。
[0009] 根据本发明之一优选实施例,所述哈希节点指针为4个字节,所述前预定位为所述哈希节点指针的前9位,所述后预定位为所述哈希节点指针的后23位。
[0010] 根据本发明之一优选实施例,所述哈希节点包括所述关键字、数据块识别信息、数据项长度信息以及数据项偏移信息。
[0011] 根据本发明之一优选实施例,所述哈希节点进一步包括下一哈希节点指针,其中空闲的哈希节点通过所述下一哈希节点指针串成一个回收链表。
[0012] 根据本发明之一优选实施例,所述哈希节点为20个字节,其中所述关键字为8个字节、所述数据块识别信息为2个字节、所述数据项长度信息为2个字节、所述数据项偏移信息为4个字节以及所述下一哈希节点指针为4个字节。
[0013] 根据本发明之一优选实施例,所述索引方法进一步包括:d.根据所述数据块识别信息查询与所述数据块识别信息对应的数据块信息,所述数据块信息包括数据块状态、内存指针以及固态存储器文件描述符;e.根据所述数据块状态判断对应数据块位于内存还是位于固态存储器。
[0014] 根据本发明之一优选实施例,所述索引方法进一步包括:f.若所述数据块位于所述内存,则根据所述内存指针、所述数据项偏移信息以及所述数据项长度信息读取所述对应数据项。
[0015] 根据本发明之一优选实施例,所述索引方法进一步包括:f.若所述数据块位于所述固态存储器,则根据所述固态存储器文件描述符、所述数据项偏移信息以及所述数据项长度信息读取所述对应数据项。
[0016] 由以上技术方案可以看出,本发明的索引方法通过间接哈希寻址节省了索引的空间,提高了内存的使用效率。

附图说明

[0017] 图1是本发明实施例中的数据库控制方法的流程示意图;
[0018] 图2是本发明实施例中的数据库的存储介质及存储内容的示意图;
[0019] 图3是本发明实施例中的第一索引及数据块的数据结构示意图;
[0020] 图4是本发明实施例中的第二索引的数据结构示意图;
[0021] 图5是本发明实施例中的哈希容器的结构示意图;
[0022] 图6是本发明实施例中的数据块生命周期管理过程的示意图;
[0023] 图7是本发明实施例中的数据库读取操作的流程示意图;
[0024] 图8是本发明实施例中的数据库写入操作的流程示意图;
[0025] 图9是图8中的步骤S809的具体流程示意图;
[0026] 图10是本发明实施例的数据库导出操作的流程示意图;
[0027] 图11是本发明实施例中的数据库控制装置的结构示意图。

具体实施方式

[0028] 下面结合附图和实施例对本发明进行详细说明。
[0029] 请参阅图1,图1是本发明实施例中的数据库控制方法的流程示意图。在本实施例中,数据库的控制方法主要包括以下几个步骤:
[0030] 步骤S101,接收操作信息。
[0031] 步骤S102,根据操作信息在位于内存的索引中查询对应数据块的索引信息。
[0032] 步骤S103,根据操作信息及索引信息对对应数据块进行相应操作。
[0033] 在本发明中,操作信息可以包括具体操作指令以及待处理数据项或者待处理数据项的关键字。具体操作指令可以包括读取操作指令、写入操作指令、导出操作指令等,各种操作信息对应的具体操作过程将在下文中描述。
[0034] 请参阅图2,图2是本发明实施例中的数据库的存储介质及存储内容的示意图。在本实施例中,数据库的存储介质包括内存以及固态存储器。存储内容包括索引和数据块。其中,数据块根据不同状态选择性位于内存及固态存储器中。具体来说,当数据块位于内存中时可称为内存数据块,当数据块位于固态存储器中时可称为固态存储器数据块。其中,索引设置在内存内,索引包括第一索引和第二索引。
[0035] 请参阅图3-4,图3是本发明实施例中的第一索引及数据块的数据结构示意图。图4是本发明实施例中的第二索引的数据结构示意图。
[0036] 请参阅图3,在本实施例中,第一索引用于记录关键字与对应数据项的位置信息的映射关系。位置信息主要包括如下信息:数据块识别信息、数据项偏移信息以及数据项长度信息。
[0037] 其中,数据块识别信息用于记录对应数据项所属的数据块的ID,数据项偏移信息用于记录对应数据项在数据块中的偏移量,数据项长度信息用于记录对应数据项的长度。
[0038] 请参阅图3,第二索引完成从位置信息中的数据块识别信息到数据块信息的映射。请参阅图4,在本实施例中,数据块信息主要包括:数据块识别信息、数据块长度信息、数据项总数、有效数据项个数、数据项有效位图、数据块状态、内存数据块容量、内存指针、固态存储器文件描述符以及引用计数。
[0039] 其中,数据块识别信息用于记录数据块的ID,在本实施例中,每个数据块分配一个唯一的ID。数据块长度信息用于记录数据块的大小。数据项总数用于记录数据块内的数据项的总个数。有效数据项个数用于记录数据块内的有效数据项的个数,即数据项总数减去被标记删除的数据项的个数。数据项有效位图用于记录数据项的有效状态,其中,每一位(bit)代表一个数据项,若置1表示有效,置0表示被标记删除。数据块状态用于记录数据块的状态,主要用于判断对应数据块是位于内存中还是位于固态存储器中,下文中将详细描述各种数据块状态。内存数据块容量用于记录内存数据块中已存储的数据项的大小,主要用于与数据块长度信息配合来判断内存数据块是否已满。内存指针用于记录数据块在内存中的存储位置,当数据块不位于内存中时,则该值无效。固态存储器文件描述符用于记录数据块在固态存储器中的存储位置,当数据块不位于固态存储器中时,则该值无效。引用计数用于记录数据块的引用状态,用于管理数据块的生存周期。
[0040] 在上述信息中,数据块识别信息、数据块长度信息、数据项总数、有效数据项个数、数据项有效位图为数据块的核心数据项,称为数据块的元信息。
[0041] 请继续参阅图3,在数据块中存储多个数据项,每一数据项内存储有如下内容:数据项序号、关键字长度、数据值长度、关键字以及数据值。
[0042] 其中,数据项序号为数据项在数据块中的序号,用于查找数据项有效位图。关键字长度用于记录关键字的长度。数据值长度用于记录数据值的长度。关键字为表示关键字的二进制串。数据值为表示数据值的二进制串。
[0043] 在本发明中,第一索引和第二索引可通过本领域各种算法实现,例如哈希算法。
[0044] 本发明一优选实施例提供了一种间接寻址的哈希容器,节省了索引的空间,提高了内存的使用效率。下面将以第一索引为例,进行详细描述。
[0045] 请参阅图5,在本实施例中,第一索引包括一哈希桶表,该哈希桶表包括多个哈希桶。每一个哈希桶内存储一哈希节点指针。在本实施例中,哈希节点指针为预定字节(例如,4字节),其中前预定位(例如,前9位)用于标识哈希节点所在的哈希节点数据块,后预定位(例如,后23位)用于标识哈希节点在哈希节点数据块内部的偏移。
[0046] 具体来说,所有的哈希节点数据块的识别信息被记录在标识信息列表中,并可根据哈希节点指针的前预定位从标识信息列表的对应位置查询到对应的识别信息。在本实施9
例中,标识信息列表所能存储的识别信息的最大数量为2 =512。
[0047] 此外,哈希节点存储在对应的哈希节点数据块内,每个哈希节点占用预定字节(例如,20字节),分别包括关键字(例如,8个字节)、数据块识别信息(例如,2个字节)、数据项长度信息(例如,2个字节)、数据项偏移信息(例如,4个字节)以及下一哈希节点指针(例如,4个字节)。
[0048] 在上述哈希容器的使用过程中,首先对接收的关键字进行哈希运算从哈希桶表中确定对应的哈希桶,并从哈希桶中获得哈希节点指针。随后,利用哈希节点指针的前预定位从标识信息列表中确定对应的哈希节点数据块的识别信息,并根据哈希节点指针的后预定位作为偏移量从识别信息对应的哈希节点数据块中获取对应的哈希节点,进而获取与该关键字相关的数据项位置信息,例如数据块识别信息、数据项偏移信息以及数据项长度信息。
[0049] 在本实施例中,每个哈希节点数据块内能够存储的哈希节点的最大数量为223=8388608个,因此每个哈希容器可以支持的最大数据量为512×8388608=42亿,很好的满足了域名服务器(Domain Name Server,DNS)的需求。
[0050] 此外,在该哈希容器中,空闲哈希节点用空闲链表维护。当数据被删除时,对应的哈希节点也会被回收。空闲哈希节点通过哈希节点中的下一哈希节点指针来串成一个回收链表。当接收到新的数据时,优先使用回收链表中的指针。因此,哈希节点数据块中的哈希节点数据总是紧凑的,在站点数量为3亿的情况下,占用的内存为300M×20bytes=6Gbytes。
[0051] 请参阅图6,图6为本发明实施例中的数据块生命周期管理过程的示意图。
[0052] 在本实施例中,首先,在内存中创建数据块。在创建数据块后,为该数据块分配唯一的数据块识别信息(ID),并将该数据块的数据块状态标记为“内存”。随后,更新第二索引,以记录该数据块的数据块信息,例如数据块识别信息、数据块长度信息、数据块状态以及内存指针等。其中,数据库在任一时刻最多只有一个数据块处于“内存”状态。
[0053] 标记为“内存”的数据块可接收待写入数据项,并将该数据项追加到数据块末端。随后,更新第二索引,以记录有效数据项个数、数据项有效位图、内存数据块容量等。同时,根据待写入数据项的关键字及存储位置更新第一索引,在第一索引中记录该关键字与数据块识别信息、数据项偏移信息以及数据项长度信息的映射关系,以便后续可根据该关键字查询到对应的数据项。数据项一旦写入数据块后,就不可以更改,仅允许对该数据项进行读取和标记删除。当对该数据项进行标记删除时,在第二索引中对该数据块的数据块信息的数据项有效位图中的对应位进行标记,例如将对应位置0。
[0054] 当数据项不断写入数据块后,可通过内存数据块容量与数据块长度信息的比较结果来判断该数据块是否写满。若数据块写满,将该数据块的数据块状态标记为“写入”,并更新第二索引,以记录数据项总数。随后,将该数据块写入到固态存储器中。优选地,在写入过程中,将内存中该数据块的数据项以受控的速率(例如,5MB/S)写入到固态存储器中,有效地防止了对读取性能造成过大影响。同时,在内存中重新创建数据块状态标记为“内存”的新数据块,以接收后续写入的数据项。
[0055] 在“写入”状态的该数据块的数据项全部写入到固态存储器后,将该数据块的数据块状态标记为“固态存储”,并释放该数据块原先占用的内存缓冲空间。随后,更新第二索引,以记录该数据块的数据块信息,例如固态存储器文件描述符。
[0056] 如果处于“内存”状态和“写入”状态的数据块中的空洞太多,也就是说,数据块中的有效数据项的个数低于阈值,则将该数据块的数据块状态标记为“重建”。随后,将标记为“重建”的数据块内的有效数据项转存到标记为“内存”的新数据块中,以实现对“重建”的数据块内的无效数据项的清除及重建。在重建完成后,将标记为“重建”的数据块的数据块状态标记为“删除”。此时,根据该数据块的引用计数判断是否有其他线程引用该数据块,如果没有其他线程引用该数据块,则删除该数据块。如果有其他线程引用该数据块,则保留该数据块,直到其他线程使用完成后,通过引用解除操作释放该引用计数,再将该数据块进行删除。
[0057] 如果处于“固态存储”状态的数据块中的空洞太多,则将该数据块的数据块状态标记为“读取”,并将该数据块读取到内存中。在读取完成后,将该数据块的数据块状态标记为“重建”,并将该数据块的有效数据项转存到标记为“内存”的数据块中,以实现对“重建”的数据块内的无效数据项的清除及重建。在重建完成后,将标记为“重建”的数据块的数据块状态标记为“删除”。此时,根据该数据块的引用计数判断是否有其他线程引用该数据块,如果没有其他线程引用该数据块,则删除该数据块。
[0058] 具体来说,如果数据块状态为“内存”、“写入”以及“重建”,则表示该数据块位于内存中。如果数据块状态为“固态存储”以及“读取”,则表示该数据块位于固态存储器中。透过上述操作,可有效管理数据块生命周期。
[0059] 下面将结合具体实施例,描述本发明的各种操作过程。
[0060] 请参阅图7,图7为本发明实施例中的数据库读取操作的流程示意图。
[0061] 在步骤S701中,接收读取操作指令以及待读取数据项的关键字。
[0062] 在步骤S702中,利用该关键字从第一索引查询对应的位置信息。若未查询到,则进行步骤S708;若查询到,则进行步骤S703。
[0063] 在本实施例中,位置信息包括数据块识别信息、数据项偏移信息以及数据项长度信息。具体查询过程在上文中已经进行详细描述,在此不再赘述。
[0064] 在步骤S703中,利用该位置信息中的数据块识别信息从第二索引查询对应的数据块信息。在本实施例中,数据块信息包括数据块状态、内存指针以及固态存储器文件描述符等。
[0065] 在步骤S704中,根据数据块状态判定对应数据块是位于内存中还是位于固态存储器,若对应数据块位于内存中,则进行步骤S705,若对应数据块位于固态存储器中,则进行步骤S706。
[0066] 如上文所描述的,如果数据块状态为“内存”、“写入”以及“重建”,则表示该数据块位于内存中。如果数据块状态为“固态存储”以及“读取”,则表示该数据块位于固态存储器中。
[0067] 在步骤S705中,根据内存指针、数据项偏移信息以及数据项长度信息在内存中读取对应数据项。
[0068] 在步骤S706中,根据固态存储器文件描述符、数据项偏移信息以及数据项长度信息在固态存储器中读取对应数据项。
[0069] 在步骤S707中,判断对应数据项的关键字与待读取数据项的关键字是否一致,若不一致,则进行步骤S708;若一致,则进行步骤S709。
[0070] 在步骤S708中,判定待读取数据项不存在。
[0071] 在步骤S709中,判定读取成功,并将对应数据项的数据值作为待读取数据项的数据值。
[0072] 请参阅图8,图8为本发明实施例的数据库写入操作的流程示意图。
[0073] 在步骤S801中,接收写入操作指令以及待写入数据项的关键字及数据值。
[0074] 在步骤S802中,利用该关键字从第一索引查询对应的位置信息。若查询到,则进行步骤S803;若没有查询到,则进行步骤S809。
[0075] 在本实施例中,位置信息包括数据块识别信息、数据项偏移信息以及数据项长度信息。具体查询过程在上文中已经进行详细描述,在此不再赘述。
[0076] 在步骤S803中,利用该位置信息中的数据块识别信息从第二索引查询对应的数据块信息。在本实施例中,数据块信息包括数据块状态、内存指针以及固态存储器文件描述符等。
[0077] 在步骤S804中,根据数据块状态判定对应数据块位于内存中还是位于固态存储器中,若对应数据块位于内存中,则进行步骤S805,若对应数据块位于固态存储器中,则进行步骤S806。
[0078] 如上文所描述的,如果数据块状态为“内存”、“写入”以及“重建”,则表示该数据块位于内存中。如果数据块状态为“固态存储”以及“读取”,则表示该数据块位于固态存储器中。
[0079] 在步骤S805中,根据内存指针、数据项偏移信息以及数据项长度信息在内存中读取对应数据项。
[0080] 在步骤S806中,根据固态存储器文件描述符、数据项偏移信息以及数据项长度信息在固态存储器中读取对应数据项;
[0081] 在步骤S807中,判断对应的数据项的数据值与待写入数据项的数据值是否一致:若一致,则写入成功;若不一致,则进行步骤S808;
[0082] 在步骤S808中,在对应数据项所属数据块的数据项有效位图中将该对应数据项标识删除。具体来说,在数据项有效位图中将对应位置0。
[0083] 在步骤S809中,将待写入数据项写入位于内存中的用于接收待写入数据项的数据块内,即处于“内存”状态的数据块。随后,更新第一索引及第二索引以记录上述写入过程。
[0084] 请参阅图9,图9是图8中的步骤S809的具体流程示意图。
[0085] 在步骤S901中,判断内存中的处于“内存”状态的数据块是否已经写满,若未写满,则进行步骤S902,若写满,则进行步骤S903。具体来说,可通过数据块长度信息与内存数据块容量之间的比较结果来确定该数据块是否写满。
[0086] 在步骤S902中,直接将待写入数据项写入到数据块的末端,并更新第一索引及第二索引。
[0087] 在步骤S903中,将该数据块的数据块状态标记为“写入”状态。随后,进入步骤S904和步骤S905。
[0088] 在步骤S904中,将该数据块写入固态存储器,同时进一步更新第一索引及第二索引。在写入完成后,将该数据块的数据块状态改为“固态存储”状态,同时在内存中释放该数据块。
[0089] 在步骤S905中,创建标记为“内存”状态的新数据块,并将待写入数据项写入到新数据块的末端,并更新第一索引及第二索引。
[0090] 通过上述方式,步骤S904和步骤S905可以并行进行,由此实现了读写分离。此外,处于“写入”状态的数据块中的数据项以受控的速率写入固态存储器,譬如受控的速率为5MB/S。本发明通过设置受控的速率,有效地防止了写入数据时对读取性能造成的影响。
[0091] 请参阅图10,图10为本发明实施例的数据库导出操作的流程示意图。
[0092] 在步骤S1001中,接收导出操作指令。
[0093] 在步骤S1002中,对内存和固态存储器进行加锁,其中,在加锁状态下,禁止对内存和固态存储器进行修改。
[0094] 在步骤S1003中,从内存的第二索引中复制待导出数据块对应的元信息。在本实施例中,待导出数据块可以是全部数据块或者预定数量的数据块。如上文所述的,元信息包括数据块识别信息、数据块长度信息、数据项总数、有效数据项个数以及数据项有效位图。
[0095] 在步骤S1004中,对待导出数据块的引用计数进行引用标记操作,以避免待导出数据块被删除。例如,对引用计数加一或加特定步长。
[0096] 在步骤S1005中,对内存和固态存储器进行解锁,其中,在解锁状态下,允许对内存和固态存储器进行修改。由于元信息的复制时间很短,数据块的后续导出可在后台进行,避免了影响数据块的读取及写入操作。
[0097] 在步骤S1006中,将元信息写入元信息文件。
[0098] 在步骤S1007中,根据元信息从内存或固态存储器上读取待导出数据块,并根据待导出数据块的关键字生成导出索引。
[0099] 在步骤S1008中,将导出索引写入导出索引文件。
[0100] 在步骤S1009中,将待导出数据块写入数据块文件。在本实施例中,元信息文件、导出索引文件以及数据块文件可在接到导出操作指令时创建,也可以在其他任意适当时刻创建。
[0101] 在步骤S1010中,对待导出数据块的引用计数进行引用解除操作。例如,对引用计数减一或减特定步长。此时,如果数据块已经处于“删除”状态,且没有其他线程引用该数据块,则删除该数据块。
[0102] 请参阅图11,图11为本发明实施例的数据库控制装置的结构示意图。该控制装置包括操作信息接收模块1101、索引信息查询模块1102以及数据块处理模块1103。
[0103] 其中,操作信息接收模块1101用于接收上述操作信息。
[0104] 索引信息查询模块1102用于根据上述操作信息在位于内存的索引中查询对应数据块的索引信息。在本实施例中,对应数据块包括多个数据项,每一数据项包括关键字与数据值,并且对应数据块可选择性位于内存及固态存储器中。
[0105] 数据块处理模块1103用于根据上述操作信息及索引信息对对应数据块进行相应操作。
[0106] 在具体实施过程中,索引包括上述的第一索引和第二索引。索引信息查询模块1102根据第一索引查询与关键字对应的位置信息,位置信息包括数据块识别信息、数据项偏移信息以及数据项长度信息。索引信息查询模块1102进一步根据第二索引查询与数据块识别信息对应的数据块信息,数据块信息包括数据块状态、内存指针以及固态存储器文件描述符等。
[0107] 关于数据库控制装置的详细工作过程请参阅上文的描述,此处不再赘述。
[0108] 由以上技术方案可以看出,本发明的数据库的控制方法及装置以数据块形式对多个数据项进行存储,并根据不同状态将数据块选择性存储于内存及固态存储中,进一步配合内存索引,可支持高性能读写操作,满足了对数据的高性能随机查询与更新需求。
[0109] 在上述实施例中,仅对本发明进行了示范性描述,但是本领域技术人员在阅读本专利申请后可以在不脱离本发明的精神和范围的情况下对本发明进行各种修改。