CN104636417A - 管理数据的系统和方法 - Google Patents
管理数据的系统和方法 Download PDFInfo
- Publication number
- CN104636417A CN104636417A CN201410643041.2A CN201410643041A CN104636417A CN 104636417 A CN104636417 A CN 104636417A CN 201410643041 A CN201410643041 A CN 201410643041A CN 104636417 A CN104636417 A CN 104636417A
- Authority
- CN
- China
- Prior art keywords
- data
- major key
- group
- unit
- size
- 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.)
- Granted
Links
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
- G06F16/2255—Hash tables
-
- 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
-
- 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/2272—Management thereof
-
- 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
- G06F16/316—Indexing structures
- G06F16/325—Hash tables
Abstract
为了实现能够在KVS中,根据其实际使用,分别为每个访问目标对象重新组织存储目的地的系统,数据管理单元110包括:存在一对数据KVS主键和应用数据的数据KVS 112,该数据KVS主键包括有关要成为访问目标对象的应用数据的存储目的地的信息;以及存储一对应用主键和数据KVS主键的主键KVS 111。数据KVS 112包括:存储一对的记录的大小是预定特定大小的正常分区112a;以及存储一对的记录的大小是按照要存储的该对的数据大小设置的大小的特殊分区112b。数据重新安置单元150将一对重新安置目标对象重新安置到具有适合该对的数据大小的记录大小的特殊分区112b中。
Description
技术领域
本发明涉及主键-数值存储(Key-Value Store:KVS)的数据管理技术。
背景技术
存在作为适合用于高速访问大容量数据的数据管理系统的主键-数值存储(下文称为KVS)。在KVS中,将任意标记(Key)附在要存储的数据(Value)上,并存储一对(Key,Value)。然后,当获取存储的数据时,指定标记(Key),并获取相应数据(Value)。对于KVS,添加存储数据的服务器是容易的,并且也适合在多个数据服务器中分配和存储数据。
在KVS中,通常按照键值(key value)的预定固定规则选择一对主键和数据的存储目的地(服务器或分区)。该规则一般是使用散列函数等,根据键值的范围分配存储目的地。在这种情况下,KVS系统包括计算键值的散列值的散列机构,以及在该散列机构内描述选择存储目的地的规则。
作为涉及KVS的传统技术,下面的专利文献1公开了将数据的访问键输入散列函数中,并从散列函数的输出中获得存储数据的存储节点的位置信息。此外,下面的专利文献2公开了当改变对每个存储节点的散列值的范围的分配时,分配给第一节点的散列值的范围和分配给第二节点的散列值的范围从第一散列值漂移到第二散列值。
[引用列表]
[专利文献]
[专利文献1]JP2013-50836A
[专利文献2]JP2013-45378A
发明内容
[技术问题]
在KVS中,通常使用散列函数等,按照键值的固定规则选择一对主键和数据(下文描述为主键/数据对)的存储(插入)目的地的存储区(分区)。但是,由于每个键群的生成主键的数量以及每个主键的数据的大小和增长程度是不一致的,所以存在分区中的存储区的使用不均衡的情况。
此外,取决于分区,随着KVS系统继续执行它的操作,造成高度冲突或超过散列桶的尺寸的大数据可能导致数据溢出到溢出区的事件频繁发生,这可能引起处理性能的下降或分区内自由空间的不足。
作为改善这样的状况的度量,可以考虑进行分区的重新组织处理。分区的重新组织处理往往需要根据键值改变存储目的地分区以及改变散列值的生成逻辑。然后,在这样根据键值改变存储目的地分区以及改变散列值的生成逻辑中,需要改变在KVS系统中提供的散列机构内的规则。该工作一般通过停止在固定时段内受影响的分区群,马上卸载所有数据,然后重新装载它来完成。由于伴随着这样的大规模工作,所以往往以固定时间间隔周期性地进行分区的重新组织处理。
但是,通过如上所述的周期性分批重新组织处理不能充分应付像每个帐户的交易量突然增大那样KVS的使用在短时段内变化很大的情况。为了应付这样的情况,需要优先从像性能的下降和自由空间不足那样的严重症状出发改善症状的新技术。
考虑到上述问题,本发明的目的是实现能够在KVS中,根据其实际使用,分别为每个访问目标对象重新组织存储目的地的系统。
[问题的解决方案]
为了达到该目的,将本发明实现成如下系统。该系统用于管理数据,以及包括:数据管理单元,用于存储和管理一组数据和唯一地与该数据相联系的主键;以及访问管理单元,用于接收访问与该主键相联系的数据的访问请求,该访问请求通过指定该主键作出。该数据管理单元包括:存储一组数据和第一主键的第一存储单元,该第一主键用作唯一地与该数据相联系的主键,该第一主键包括有关要访问的数据的存储地点的信息;存储一组该第一主键和第二主键的第二存储单元,该第一主键用作数据,该第二主键用作唯一地与该第一主键相联系的主键,该第二主键在访问与该第一主键相联系的数据时在访问请求中指定;以及重新安置单元,用于当满足预定执行条件时,将该第一存储单元中的该组数据和第一主键重新安置在该第一存储单元的不同区域中。该第一存储单元包括:存储多组数据和第一主键之一的记录的大小是预定指定大小的第一区域;以及存储多组数据和第一主键之一的记录的大小是按照该组的数据大小设置的大小的第二区域。该重新安置单元将作为重新安置目标对象的该组数据和第一主键重新安置在具有适合该组的数据大小的记录大小的第二区域中。
更优选的是,当不存在具有适合要重新安置的该组数据和第一主键的数据大小的记录大小的第二区域时,该重新安置单元添加具有上述记录大小的第二区域,并将作为重新安置目标对象的该组存储在所添加第二区域中的记录中。
此外,更详细地说,当作为执行条件,存储在该第一存储单元的第一区域或第二区域中的多组数据和主键当中的一组的数据大小大于为存储该组的第一区域或第二区域确定的阈值时,该重新安置单元将该组重新安置在其它第二区域中。或者,当作为执行条件,标识该第一存储单元的第一区域中该组数据和主键的存储地点的散列值的冲突程度大于预定阈值时,该重新安置单元将该组重新安置在第二区域中。
此外,该系统可以进一步包括存储控制单元,用于根据访问请求获取新的数据和第二主键,在该第一存储单元的第一区域中指定数据的存储地点,生成包括有关该存储地点的信息的第一主键,将该组第一主键和数据存储在指定存储地点上,创建该组所获第二主键和所创建第一主键,以及将该组存储在该第二存储单元中。进一步,在该系统中,当重新安置该组数据和第一主键时,该重新安置单元可以通过用有关重新安置之后的存储地点的信息取代包括在第一主键中的有关该组的存储地点的信息更新第一主键,以及用根据重新安置之后的存储地点更新的内容取代存储在该第二存储单元中、与重新安置数据相联系的该组第二主键和第一主键中的第一主键。
此外,达到该目的的本发明的另一个方面也被实现成如下方法。这是在包括如下的系统中,通过计算机管理数据的方法:数据管理单元,用于存储和管理一组数据和唯一地与该数据相联系的主键;以及访问管理单元,用于接收访问与该主键相联系的数据的访问请求,该访问请求通过指定该主键作出,该数据管理单元包括:存储一组数据和第一主键的第一存储单元,该第一主键用作唯一地与该数据相联系的主键,该第一主键包括有关要访问的数据的存储地点的信息;存储一组该第一主键和第二主键的第二存储单元,该第一主键用作数据,该第二主键用作唯一地与该第一主键相联系的主键,该第二主键在访问与该第一主键相联系的数据时在访问请求中指定;以及重新安置单元,用于当满足预定执行条件时,将该第一存储单元中的该组数据和第一主键重新安置在该第一存储单元的不同区域中,该第一存储单元包括:存储多组数据和第一主键之一的记录的大小是预定指定大小的第一区域;以及存储多组数据和第一主键之一的记录的大小是按照该组的数据大小设置的大小的第二区域,该方法包含如下步骤:作为重新安置的执行条件,确定存储在该第一存储单元的第一区域或第二区域中的多组数据和主键当中的一组的数据大小是否大于为存储该组的第一区域或第二区域确定的阈值;作为重新安置的执行条件,确定指示该第一存储单元的第一区域中该组数据和主键的存储地点的散列值的冲突程度是否大于预定阈值;以及当该组范围任一种执行条件时,由该重新安置单元将该组数据和主键重新安置在第二区域中。
进一步,本发明被实现成通过控制计算机实现上述设备的各自功能的程序,或使计算机也进行与上述的各自步骤相对应的处理的程序。该程序可以通过存储在像磁盘、光盘、半导体存储器等那样的记录介质中加以分配,或通过网络分配来提供。
[本发明的有利效果]
本发明使得可以在KVS中根据其实际使用分别为每个访问目标对象重新组织存储目的地。
附图说明
图1是例示本实施例所应用的KVS系统的配置例子的图形;
图2是例示数据KVS的主键/数据对中的主键部分的配置例子的图形;
图3是例示数据KVS的结构的图形,图3(a)是例示从应用的角度来看数据KVS的段分层结构的例子的图形,以及图3(b)是例示主键KVS的主键/数据对与数字KVS的主键/数据对之间的关系的图形;
图4是例示本实施例中的正常分区和特殊分区的配置例子的图形;
图5是例示优先分区列表的图形,图5(a)是例示优先分区列表的配置例子的图形,以及图5(b)是例示登记在优先分区列表中的剩余数量计数值的概念的图形;
图6是例示优先分区列表生成单元生成优先分区列表的生成处理的流程图;
图7是例示主键/数据对存储控制单元安置主键/数据对的安置处理的流程图;
图8是例示主键/数据对存储控制单元安置主键/数据对的安置处理的流程图;
图9是例示重新安置推荐主键列表生成单元生成重新安置推荐主键列表的生成处理的流程图;
图10是例示数据重新安置单元重新安置主键/数据对的重新安置处理的流程图;
图11是例示数据KVS定义重新组织单元重新组织数据KVS的数据库定义的重新组织处理中卸载主键/数据对时的处理的流程图;
图12是例示数据KVS定义重新组织单元重新组织数据KVS的数据库定义的重新组织处理中重新装载主键/数据对时的处理的流程图;以及
图13是例示适合配置本实施例的KVS系统的硬件配置例子的图形。
具体实施方式
在下文中,将参考附图更详细地描述本发明的实施例。
<系统配置>
图1是例示本实施例所应用的KVS系统的配置例子的图形。本实施例所应用的KVS系统包括数据管理单元110、优先分区列表生成单元120、和重新安置推荐主键列表生成单元130。此外,本实施例的KVS系统100还包括主键/数据对存储控制单元140、数据重新安置单元150、主键KVS重新创建单元160、和数据KVS定义重新组织单元170。此外,本实施例的KVS系统100还包括访问管理单元101、作为接口部件的数据访问路径解决单元102和数据编辑单元103、管理数据管理单元110的统计信息的统计信息收集单元104、和自由空间重新组织单元105。
如图1所例示,本实施例的KVS系统100的访问管理单元101接受外部设备200上的应用软件(下文称为应用)的访问,并进行各种类型的处理。访问管理单元101通过,例如,API(应用编程接口)实现。外部设备200上的应用通过与数据相联系的主键(主键/数据对中的键值)请求访问KVS系统100,进行像存储(插入)数据和搜索所希望数据的执行那样的处理,以便读取,更新和删除数据。
数据管理单元110包括通过KVS的数据存储部件。在本实施例中,分别提供了管理作为访问KVS系统100的应用的访问目标对象的数据(应用数据)的作为第一存储单元的KVS、和管理应用识别的键值(应用主键)的作为第二存储单元的KVS。在下文中,将管理应用主键的KVS(第二存储单元)定义为主键KVS 111,将管理应用数据的KVS(第一存储单元)定义为数据KVS112。
KVS将主键/数据对存储在作为受管理对象的记录中。在本实施例中,对于存储在主键KVS 111中的主键/数据对,主键部分是应用主键,数据部分是包括数据KVS 112的键值的数值。此外,对于存储在数据KVS 112中的主键/数据对,主键部分是根据预定规则设置和对于每个主键/数据对来说是唯一的定长值,数据部分是应用数据。也就是说,本实施例的数据管理单元110通过作为主键KVS 111和数据KVS 112的双重结构的KVS相联系地管理应用主键和应用数据。此外,数据KVS 112的主键/数据对中的数据部分包括应用主键的数值。应用键值用在,例如,更新主键KVS 111的主键/数据对或重新创建主键KVS的时候。
在主键KVS 111中,对于选择主键/数据对的存储目的地的选择规则,使用,例如,按照应用主键的属性和分布选择的适当散列函数。同时,在数据KVS 112中,对于选择主键/数据对的存储目的地的选择规则,准备了使用适当散列函数的特殊选择规则。数据KVS 112中的选择规则的细节将在后面描述。选择规则在未显示在图形中的散列机构中描述。
下面将进一步描述数据KVS 112中的主键/数据对中的主键部分。图2是例示数据KVS 112中的主键/数据对中的主键部分的配置例子的图形。例示在图2中的主键部分10的数值由三个分值10a,10b,和10c构成。
分值10a是分别指定给记录在与主键部分10相对应的数据部分中的每个应用数据的特定值。分值10a可以是以任何方式设置的数值,只要在整个数据KVS 112中是唯一值就行。例如,可以是通过将应用容器的标识信息的数值加入安置(插入)时或重新安置时UTC时间戳的数值中保证唯一性的数值等。此外,当使用散列值的搜索效率高时,可以按原样将应用键值用作分值10a。在例示在图2中的例子中,将作为服务器实例ID('IMSA')、应用容器的标识信息('1234'x)、和UTC时间戳('20130325132418092134'x)的组合的数值表示成分值10a。
分值10b是存储主键/数据对的分区(在下文中,属于分区)的标识信息的数值。分值10c是属于分区中的应用主键的散列值。当分值10c是非负值时,数据KVS 112通过分值10b和分值10c确定属于分区和分区内作为主键/数据对的存储目的地的散列桶(hash bucket)。另一方面,当分值10c是负值时,数据KVS 112计算分值10a和10b的组合值的散列值,用所计算散列值取代分值10c,并确定属于分区内的散列桶。
回到图1,作为数据KVS 112管理的分区,本实施例的数据管理单元110包括作为最初使用的第一区域的正常分区112a、和作为用作特定主键/数据对的重新安置目的地的第二区域的特殊分区112b。外部设备200上的应用根据数据存储(插入)指令将主键/数据对存储到正常分区112a中。通过数据管理单元150的控制,以从正常分区112a移动的形式将主键/数据对存储到特殊分区112b中。正常分区112a和特殊分区112b的细节将在后面讨论。在下面的描述中,当不需要具体区分正常分区112a和特殊分区112b时,将它们描述成分区112a和112b。
当访问管理单元101接收到来自外部设备200的应用数据的搜索请求时,本实施例的KVS系统100通过数据访问路径解决单元102确定(解决)到应用数据的访问路径,并进行搜索处理。访问路径由数据访问路径解决单元102根据定义数据管理单元110的数据库(数据存储)结构的数据库定义(DBD)来确定。数据访问路径解决单元102的功能类似于传统KVS系统中的访问路径确定部件,除了根据本实施例中的数据管理单元110的数据库结构使用数据库定义之外。
此外,当获得基于来自外部设备200的应用数据的搜索请求的搜索结果时,KVS系统100通过数据编辑单元103编辑搜索结果的数据以便返还给外部设备200,并通过访问管理单元101将其返还给外部设备200。搜索结果的数据根据为外部设备200上的应用确定的视图定义(PSB)来编辑。数据编辑单元103的功能类似于传统KVS系统中的搜索结果的数据的编辑部件。
统计信息收集单元104周期性地收集数据KVS 112的分区112a和112b的自由空间的统计信息。作为统计信息,与在传统KVS系统中收集的统计信息类似,收集,例如,有关溢出区的使用、自由空间的状况、其对I/O性能的影响、散列冲突的程度(同义词长度)及其分布的信息、或类似信息。
当重新安置应用数据或类似定时时,自由空间重新组织单元105重新组织数据KVS 112中的各个分区112内的自由空间。自由空间重新组织单元105的功能类似于传统KVS系统中伴随着数据的重新安置或类似操作重新组织存储设备的自由空间的部件。
此外,在本实施例的KVS系统100中,优先分区列表生成单元120根据统计信息收集单元104收集的统计信息生成优先分区列表。此外,当伴随着KVS系统100的操作更新统计信息收集单元104收集的统计信息时,优先分区列表生成单元120根据更新的统计信息生成优先分区列表。优先分区列表是当要新存储应用数据(主键/数据对)时,每一个要被优先选为应用数据的存储目的地的分区的列表。为数据KVS 112生成一个优先分区列表。优先分区列表的细节将在后面描述。
重新安置推荐主键列表生成单元130根据统计信息收集单元104收集的统计信息生成重新安置推荐主键列表。此外,当伴随着KVS系统100的操作更新统计信息收集单元104收集的统计信息时,重新安置推荐主键列表生成单元130根据更新的统计信息生成重新安置推荐主键列表。重新安置推荐主键列表是数据量极大的键值和散列值存在许多冲突的键值的列表。此外,为包括特殊分区112b的数据KVS 112的所有分区的每一个生成一个重新安置推荐主键列表。重新安置推荐主键列表的细节将在后面描述。
当要新存储应用数据(主键/数据对)时,主键/数据对存储控制单元140参照优先分区列表,优先将应用数据存储在含有更多自由列表桶的正常分区112a中。因此,可以伴随着应用数据的新存储,减少数据KVS 112中的正常分区112a之间的数据量的不平衡的发生。
数据重新安置单元150按照数据的特性,将在数据KVS 112的各个分区112a和112b内和通过重新安置推荐主键列表标识的应用数据重新安置到适当特殊分区112b中。应用数据的重新安置与重新安置推荐主键列表的更新相响应地按需有选择地进行。因此,可以解决或缓解散列冲突和到数据KVS 112的溢出区的数据溢出。
主键KVS重新创建单元160从数据KVS 112的分区112a和112b内的主键/数据对中提取包括在数据部分(应用数据)中的应用键值。然后,主键KVS重新创建单元160使用从中提取上述应用主键的数据KVS 112中的上述主键/数据对的主键部分(下文称为数据KVS主键)的数值和提取的应用键值重新创建主键KVS 111的主键/数据对。
数据KVS定义重新组织单元170通过将从数据KVS 112的分区112a和112b卸载的主键/数据对重新装载到按照新数据库定义分配的分区112a和112b中重新组织数据KVS 112,然后,在将主键/数据对重新装载到数据KVS112中之后由主键KVS重新创建单元160根据重新组织的数据KVS 112的分区112a和112b的内容重新创建主键KVS 111的主键/数据对。
<主键KVS的结构>
接着,将描述本实施例的数据管理单元110中的主键KVS 111的结构。本实施例的主键KVS 111只包括定长根段。定长根段含有保存应用主键的字段。该字段对应于主键KVS 111的序列主键(主要主键)字段,也与作为数据管理单元110中的辅助索引(对数据KVS 112)的序列主键字段相当。此外,定长根段含有保存与应用键值相对应的数据KVS 112的键值的字段。该字段对应于主键KVS 111的主键/数据对中的数据部分,也与作为数据管理单元110中的辅助索引的索引指针字段相当。
在本实施例中,将散列表型的KVS用作主键KVS 111,以便通过直接访问高速更新主键KVS的主键/数据对的数据部分。作为主键KVS 111的散列机构,可用用在传统数据库等中的散列例程。但是,当可以分组应用主键时,从维护/操作的观看来看,可以进行每群的分区划分,并且可以在通过键值中的群标识信息选择了分区之后进行主键散列(双级散列)。此外,从指定主键范围的搜索和主键顺序访问的效率的观看来看,可以使用在每个群中聚集键值序列中的根段的物理存储地点的特殊散列例程。
<数据KVS的结构>
接着,将描述本实施例的数据管理单元110中的数据KVS 112的结构。图3是例示数据KVS的结构的图形。图3(a)例示了从应用的角度来看数据KVS 112的段分层结构的例子,以及图3(b)例示了主键KVS 111的主键/数据对与数字KVS 112的主键/数据对之间的关系。如图3(b)所例示,主键KVS 111与对数据KVS 112的辅助索引相当。
在本实施例的数据KVS 112中,配置了多个分区。例示在图3(a)中的例子中,从应用的角度来看的段分层结构(树结构),即所谓的数据库记录对应于数据KVS 112的主键/数据对中的数据部分。但是,根段中的应用主键被定义成正常字段(应用主键字段)。此外,在根段的头部定义了根据上面参考图2所述的数据KVS主键的结构定义的序列主键字段,并将上面定义的序列主键字段转变成数据KVS 1112中的序列主键字段。然后,将应用主键字段转变成被看作如图3(b)所例示的辅助索引的主键KVS 111的搜索字段,以及将数据KVS 112的根段转变成目标段。
在数据KVS 112的散列机构中,对于散列例程,可以利用,例如,用在传统数据库的散列机构中的正常随机化例程。
<数据KVS的分区结构>
接着,将详细描述数据KVS 112的分区112a和112b的结构。如上所述,在本实施例的KVS系统100的数据管理单元110中提供的数据KVS 112含有两种类型的分区—正常分区112a和特殊分区112b。随着要存储的主键/数据对增加适当添加各自分区112a和112b。
在正常分区112a中,存储主键/数据对的记录的大小被配置成具有预定家长的散列桶的尺寸(VSAM CI尺寸)。散列桶尺寸根据数据KVS 112中的平移应用数据长度(数据库记录长度)来确定。例如,最初设置适当应用数据长度,当实际操作KVS系统100以及进行数据KVS 112的分区的重新组织等时,可以根据统计信息收集单元104收集的统计信息进行重置。
在特殊分区112b中,对每个各自特殊分区112b分别配置存储主键/数据对的记录的大小,以便按照实际应用数据长度确定大小。此外,当生成比已提供正常分区112a或特殊分区112b的散列桶尺寸大的应用数据时,重新提供能够存在应用数据的主键/数据对的散列桶尺寸的特殊分区112b。
图4是例示本实施例中的正常分区112a和特殊分区112b的配置例子的图形。各自分区112a和112b的每一个含有如后所述设置的尺寸的散列桶,以及含有试探地接收超过散列桶的尺寸的大数据的溢出区。各自分区112a和112b的散列桶的数量和溢出区的大小按照数据量来调整。例如,最初设置散列桶的适当数量和溢出区的适当大小,当实际操作KVS系统100以及进行分区的重新组织等时,可以根据统计信息收集单元104收集的统计信息进行重置。
在例示在图4中的例子中,提供了多个正常分区112a。并且,作为一个例子,将每个正常分区112a的散列桶尺寸设置成4KB。
此外,在例示在图4中的例子中,对于特殊分区112b,分别设置了散列桶尺寸之一是4KB、散列桶尺寸之一是8KB、散列桶尺寸之一是12KB、散列桶尺寸之一是16KB、散列桶尺寸之一是20KB、和散列桶尺寸之一是24KB。例如,考虑到数据KVS主键的长度,散列桶尺寸是4KB的特殊分区112b用于存储具有3.2KB或更小的应用数据长度的应用数据。此外,散列桶尺寸是8KB的特殊分区112b用于存储大于3.2KB但小于等于6.4KB的应用数据。散列桶尺寸是12KB的特殊分区112b用于存储大于6.4KB但小于等于9.6KB的应用数据。散列桶尺寸是16KB的特殊分区112b用于存储大于9.6KB但小于等于12.8KB的应用数据。散列桶尺寸是20KB的特殊分区112b用于存储大于12.8KB但小于等于16KB的应用数据。散列桶尺寸是24KB的特殊分区112b用于存储大于16KB的应用数据。
如图4所例示,特殊分区112b可以被配置成具有大于正常分区112a的尺寸的散列桶尺寸之一,也可以被配置成具有与正常分区112a的尺寸相同的散列桶尺寸(在例示在该图中的例子中,4KB)。此外,虽然对于图4中的每种散列桶尺寸描述了一个特殊分区112b,但可以按照相应应用数据的数量为每种散列桶尺寸提供多个特殊分区112b。此外,尽管未具体例示在图中,但当生成不能存储在散列桶尺寸是24KB的特殊分区112b中的应用数据(例如,大小19.2KB的应用数据)时,可以新添加较大散列桶尺寸的特殊分区112b,以便存储该应用数据。
<应用数据的存储和重新安置>
在本实施例中,当将应用数据(主键/数据对)存储在KVS系统100的数据管理单元110中时,首先在正常分区112a中安置新主键/数据对。然后,当散列冲突的程度增加,需要重新安置应用数据时,或当需要存储超过正常分区112a的散列桶尺寸的应用数据或出现类似状况时,在特殊分区112b中重新安置应用数据的主键/数据对。
将主键/数据对安置在正常分区112a中时的存储目的地根据优先分区列表生成单元120生成的优先分区列表来确定。此外,需要重新安置到特殊分区112b中的主键/数据对根据重新安置推荐主键列表生成单元130生成的重新安置推荐主键列表来确定。将主键/数据对重新安置到特殊分区112b中时的存储目的地按照要重新安置的主键/数据对的大小等来确定。
<优先分区列表的生成>
这里,将描述优先分区列表生成单元120生成优先分区列表的生成处理。优先分区列表生成单元120首先从统计信息收集单元104接收自由散列桶的数量和针对散列冲突的程度的平均值确定的阈值。然后,根据统计信息和阈值,创建超过阈值的数据KVS 112的与正常分区112a有关优先分区列表。该阈值可以按照预定规则自动设置或可以通过接收用户的输入来设置。
图5是例示优先分区列表的图形,图5(a)是例示优先分区列表的配置例子的图形,以及图5(b)是例示登记在优先分区列表中的剩余数量计数值的概念的图形。在例示在图5(a)中的例子中,优先分区列表121的各个条目的每一个都含有“分区标识符”和“剩余数量计数”的两个字段,并按“剩余数量计数”的数值的降序排序。例示在图5(a)中的优先分区列表121的配置仅仅是一个例子,优先分区列表121可以配置成包括除了例示在该图中的信息之外的其它信息(例如,最大值、最小值和冲突的数量的平均值等信息)。此外,各个条目中的字段的次序可以是任意的。
如图5(b)的所例示,剩余数量计数是从与各自条目相对应的各自分区的自由散列桶的数量中减去针对自由散列桶的数量确定的阈值获得的数值。在例示在图5(b)中的例子中,存在含有九个自由散列桶的分区(按照图5(a)的分区“0003”)、含有八个自由散列桶的分区(按照图5(a)的分区“0005”)、含有六个自由散列桶的分区(按照图5(a)的分区“0001”)、含有五个自由散列桶的分区(按照图5(a)的分区“0007”)、和含有两个自由散列桶的分区(按照图5(a)的分区“0004”)。然后,可以认识到,总共存在30个自由散列桶。
每当将新主键/数据对存储在与剩余数量计数相对应的正常分区112a中,就将剩余数量计数的数值减1。然后,当剩余数量计数数值的总数变成小于预置阈值(例如,固定时段中新主键/数据对的插入数量的平均值等)时,将正常分区112a添加到数据管理单元110中。然后,将添加正常分区112a的条目加入优先分区列表中。
图6是例示优先分区列表生成单元120生成优先分区列表的生成处理的流程图。优先分区列表的生成处理周期性地,或当存储固定数量的新主键/数据对时或在类似定时上进行。
在例示在图6中的例子中,优先分区列表生成单元120首先选择一个正常分区112a(步骤601),并从统计信息收集单元104获取与所选正常分区112a相关的散列冲突的数量的分布信息(步骤602)。然后,优先分区列表生成单元120从散列冲突的数量的所获分布信息中提取一点也未分配主键的散列值的数量(等效于自由散列桶的数量)、和散列冲突的程度的平均值(步骤603)。
接着,优先分区列表生成单元120确定散列冲突的程度的所提取平均值(M1)是否小于阈值(T1)以及自由散列桶的所提取数量(HB1)是否超过阈值(T2)(步骤604)。然后,当散列冲突的程度的平均值(M1)大于等于阈值(T1)或自由散列桶的数量(HB1)小于等于阈值(T2)时,优先分区列表生成单元120返回到步骤601,选择一个未经处理的正常分区112a,并进行类似处理。
当散列冲突的程度的平均值(M1)小于阈值(T1)以及自由散列桶的数量(HB1)超过阈值(T2)时,优先分区列表生成单元120创建加入从自由散列桶的所提取数量(HB1)中减去阈值(T2)获得的数值(剩余数量计数值)、和正在考虑的正常分区112a的分区标识符的记录,并将它写入中间文件中(步骤605)。然后,优先分区列表生成单元120确定是否对所有正常分区112a都进行了到步骤605的处理,当存在未经处理的正常分区112a时,返回到步骤601并重复该处理(步骤606)。
在对所有正常分区112a都完成了到步骤606的处理之后,优先分区列表生成单元120确定在到步骤606的处理中创建的中间文件是否是空的,或剩余数量计数值的总和(CS1)是否低于阈值(T3)(步骤607)。当中间文件非空以及剩余数量计数值的总和大于等于阈值(T3)时,优先分区列表生成单元120按自由散列桶的数量的降序排序记录在中间文件中的记录,并创建优先分区列表(步骤608)。
另一方面,当中间文件是空的或剩余数量计数值的总和小于阈值(T3)时,优先分区列表生成单元120加入一个新正常分区112a(步骤609)。对加入的新正常分区112a赋予唯一分区标识符。然后,优先分区列表生成单元120创建包括从加入分区的散列桶的数量中减去阈值(T2)获得的数量(剩余数量计数值)和加入分区的分区标识符的优先分区列表的一个条目,并将该条目加入中间文件中(步骤610)。此后,优先分区列表生成单元120按自由散列桶的数量的降序排序记录在中间文件中的记录,并创建优先分区列表(步骤608)。
将如上所述创建的优先分区列表存储在主键/数据对存储控制单元140的存储器中,并且当在数据KVS 112中新存储主键/数据对时,用于确定存储目的地。优先分区列表按下面更新。首先,当以上述方式创建优先分区列表时,主键/数据对存储控制单元140将新优先分区列表装载到存储器中。然后,主键/数据对存储控制单元140对装载到存储器中的优先分区列表设置当前条目指针,并将通过该指针所指的条目指定的分区定义成下一个主键/数据对的存储目的地。通过在像午夜那样交易量小的时段中在主键/数据对存储控制单元140进行优先分区列表的更新处理,可以降低对利用本实施例的KVS系统100的应用处理的影响。
<主键/数据对的安置处理>
接着,将描述主键/数据对存储控制单元140将主键/数据对安置到正常分区112a中的安置处理(将应用数据新存储在正常分区112a中的处理)。当从外部设备200上的应用接收到应用数据的存储请求时,主键/数据对存储控制单元140参照存储在存储器中的优先分区列表将正常分区112a确定成存储目的地,然后通过数据KVS 112的散列机构生成标识散列桶的散列值,并存储应用数据的主键/数据对。
图7和图8是例示主键/数据对存储控制单元140安置主键/数据对的安置处理的流程图。如图7所例示,当接收到应用数据(主键/数据对)的存储请求时(步骤701),主键/数据对存储控制单元140准备要用于生成数据KVS 112的键值的区域(字段)(步骤702)。
接着,主键/数据对存储控制单元140确定优先分区列表中当前条目指针所指的条目(当前条目)的剩余数量计数值(PC值)是否是零(0)(步骤703)。当当前条目的剩余数量计数值非零时,主键/数据对存储控制单元140然后确定当前条目是否是优先分区列表中的最高位的条目(步骤704)。当当前条目是最高位的条目时,主键/数据对存储控制单元140将当前条目的剩余数量计数值减1(步骤707)。
当当前条目不是最高位(highest order)的条目时,主键/数据对存储控制单元140确定当前条目的剩余数量计数值(PC值)是否是比优先分区列表中高一位的条目的剩余数量计数值(HC值)大1的数值(步骤705)。当当前条目的剩余数量计数值是比高一位的条目的剩余数量计数值大1的数值时,主键/数据对存储控制单元140将当前条目的剩余数量计数值减1(步骤707)。
另一方面,当当前条目的剩余数量计数值不是比高一位的条目的剩余数量计数值大1的数值时,主键/数据对存储控制单元140将优先分区列表中最高位的条目定义成当前条目(步骤706),并当前条目(最高位的条目)的剩余数量计数值减1(步骤707)。
当在步骤703中当前条目的剩余数量计数值是零时,或在步骤707中将当前条目的剩余数量计数值减1之后,如图8所例示,主键/数据对存储控制单元140将包括当前条目的分区标识符的预定值设置到数据KVS 112的键值的字段中(步骤708)。具体地说,在参考图2所述的数据KVS 112的主键部分10中,将分区标识符设置成分值10b。此外,将唯一值设置成分值10a。将数值“-1”设置成分值10c。
然后,主键/数据对存储控制单元140将在步骤708中设置的键值传递给数据KVS 112的散列机构,并获取散列值(步骤709)。然后,主键/数据对存储控制单元140将所获散列值设置成数据KVS 112的键值(步骤710)。如参考图2所述,当数据KVS 112的主键部分10的分值10c是负值时,数据KVS 112的散列机构计算作为分值10a和10b的组合的数值的散列值,并用所计算散列值取代分值10c。因此,通过如上所述对分值10c设置数值“-1”,主键/数据对存储控制单元140在步骤708中计算散列值,并用所计算散列值取代分值10c。
接着,主键/数据对存储控制单元140根据在步骤709和710中获得的分区标识符和散列值将正常分区112a和散列桶指定成主键/数据对的存储目的地,并存储数据KVS主键和应用数据(主键/数据对)(步骤711)。当不能将主键/数据对存储在指定成存储目的地的散列桶中时(当在散列桶上不存在足以存储所有应用数据的自由空间时或在类似条件下),主键/数据对存储控制单元140将主键/数据对存储在通过在步骤709中获得的分区标识符指定的正常分区112a的溢出区中。此外,当将主键/数据对存储在正常分区112a(的指定散列桶或溢出区)中时,主键/数据对存储控制单元140生成将包括在应用数据中的应用键值设置成主键部分数据和将数据KVS主键设置成数据部分数值的主键/数据对,并将该对存储在主键KVS 111中。
此后,主键/数据对存储控制单元140使上述处理中的当前条目之后的条目成为新当前条目(当当前条目是优先分区列表中的最低位的条目时,使最高位的条目成为新当前条目),并结束该处理(步骤712)。然后,主键/数据对存储控制单元140等待下一个应用数据(主键/数据对)的存储请求。
例示在图7和图8中的流程图中的处理的例子不保证要选择自由散列桶,以及剩余数量计数的当前值未必与此刻自由分区的数量一致。存储主键/数据对时要确定的散列值通过数据KVS主键的数值和散列机构的散列例程来确定。存储主键/数据对可能引起的冲突通过后面所述的数据重新安置单元150的处理来解决。
<重新安置推荐主键列表的生成>
接着,将描述重新安置推荐主键列表生成单元130生成重新安置推荐主键列表的生成处理。重新安置推荐主键列表的生成处理针对正常分区112a和特殊分区112b两者。重新安置推荐主键列表生成单元130首先从统计信息收集单元104接收针对保存一定数量或更多的数据的每个数据库记录,收集并按数据量的降序排序有关其主要键值、插入目的地分区名称(区域名称)、和散列值(RAP数)等的几个信息的列表。此外,重新安置推荐主键列表生成单元130接收针对数据库记录长度和散列冲突的程度(同义词长度+1)分别确定的阈值。然后,根据统计信息和阈值,创建与数据KVS 112超过阈值的数据的有关的重新安置推荐主键列表。这里,该阈值可以按照像数据库块长那样的分区的物理特性自动设置(例如,该阈值可以是散列桶尺寸的80%等),或可以通过接收来自用户的输入来设置。
重新安置推荐主键列表的每个条目都含有登记像,例如,数据KVS主键的数值、与数据KVS主键相对应的应用主键的数值、应用数据的数据长度、散列冲突程度、推荐理由标志、和重新安置目的地分区标识符等那样的各自数值的字段。然后,按应用数据的数据长度的降序进行排序。重新安置推荐主键列表的条目可以配置成包括除了这些之外的其它信息。此外,各自条目中的字段的次序可以是任意的。
图9是例示重新安置推荐主键列表生成单元130生成重新安置推荐主键列表的生成处理的流程图。重新安置推荐主键列表的生成处理,例如,周期性地,或当存储在分区112a和112b之一的溢出区中的数据的数量变成大于等于固定数量时或在类似定时上进行。
在例示在图9中的例子中,重新安置推荐主键列表生成单元130首先从统计信息收集单元104中获取与各自分区112a和112b有关的统计信息,加入附加信息,创建重新安置推荐主键列表的记录,并将它保存在中间文件中(步骤901)。所获统计信息包括所存储应用数据的数据长度、分区标识符、散列值、和主键/数据对的键值,或类似信息。附加信息包括与应用数据相对应的应用主键、和散列冲突的程度,或类似信息。利用作为第一排序主键的数据长度和作为第二排序主键的散列冲突的程度排序根据该信息创建的记录。
接着,重新安置推荐主键列表生成单元130确定该处理是否到达中间文件的末端(步骤902)。然后,当确定未到达末端,从中间文件中读取下一个记录作为要处理的对象(步骤903)。在最初启动时,读取中间文件中的第一记录。
重新安置推荐主键列表生成单元130首先确定登记在读取记录中的数据长度是否长于预定阈值(步骤904)。然后,当数据长度长于阈值时,重新安置推荐主键列表生成单元130在记录中的推荐理由标志的字段中设置指示“数据长度”的标志(步骤905)。
接着,重新安置推荐主键列表生成单元130确定登记在读取记录中的散列冲突的程度是否大于预定阈值(步骤906)。然后,当散列冲突的程度大于阈值时,重新安置推荐主键列表生成单元130在记录中的推荐理由标志的字段中设置指示“冲突”的标志(步骤907)。
然后,重新安置推荐主键列表生成单元130确定在读取记录的推荐理由标志的字段中是否设置了上述标志之一(步骤908)。也就是说,当进行了步骤905或步骤907的处理时,在推荐理由标志的字段中设置了指示“数据长度”或“冲突”的标志。当在推荐理由标志的字段中设置了标志时,从正在处理的记录中获取除了推荐理由标志之外的其它几个登记信息,并将保存上述几个信息和推荐理由标志的条目加入重新安置推荐主键列表中(步骤909)。
当在步骤908中在推荐理由标志的字段中未设置任何一个标志时,或在步骤909中加入重新安置推荐主键列表的条目之后,重新安置推荐主键列表生成单元返回到步骤902,并确定该处理是否到达中间文件的末端。然后,当未到达中间文件的末端时,在步骤903中读取下一个记录,而当到达中间文件的末端时,结束重新安置推荐主键列表的生成处理。也就是说,重新安置推荐主键列表生成单元130通过从中间文件的开头到末端依次读取记录,并对每个记录进行从步骤904到步骤909的处理生成重新安置推荐主键列表。
此外,在上述操作中,在中间文件的所有记录中,当未满足步骤904和步骤906的任一个条件以及未进行步骤905和步骤907的处理时,其结果是,未创建重新安置推荐主键列表。因此,不进行主键/数据对的重新安置处理,直到满足步骤904或步骤906的条件以及在下一次中或在重新安置推荐主键列表的随后生成处理中生成重新安置推荐主键列表。
<主键/数据对的重新安置处理>
接着,将描述图10数据重新安置单元150重新安置应用数据(主键/数据对)的重新安置处理。数据重新安置单元150根据以上述方式生成的重新安置推荐主键列表,重新安置推荐重新安置到特殊分区112b中的主键/数据对。存储在正常分区112a和特殊分区112b的任何一个中的主键/数据对都可以是重新安置的对象。另一方面,重新安置目的地的分区只是特殊分区112b。
图10是例示数据重新安置单元150重新安置主键/数据对的重新安置处理的流程图。如图10所例示,数据重新安置单元150关注作为重新安置处理的对象、重新排列推荐主键列表中的条目之一(步骤1001)。然后,数据重新安置单元150从关注的条目中取出有关数据长度的信息,确定适合所取出数据长度的特殊分区112b的散列桶尺寸(步骤1002),并确定是否存在具有上面所确定散列桶尺寸的特殊分区112b(步骤1003)。当不存在具有上面所确定散列桶尺寸的特殊分区112b时,加入具有上面所确定散列桶尺寸的特殊分区112b(步骤1004)。
然后,数据重新安置单元150选择在步骤1003中找到的特殊分区112b或在步骤1004中加入的特殊分区112b作为重新安置目的地的特殊分区112b。然后,检验所选特殊分区112b的空间图以识别第一自由散列桶(主键/数据对的存储目的地的区域)(步骤1005)。这里,空间图是为每个特殊分区112b提供的表格,管理是否已经使用了各个散列桶。在每次重新安置处理中都要参照空间图。此外,通过为与指定为重新安置目的地和存储主键/数据对的散列桶相对应的空间图的一个项目打开正在使用标志,使区分上述散列桶与未用自由散列桶区成为可能。
接着,数据重新安置单元150为主键KVS 111指定登记在上面所关注条目中的应用键值,并控制主键KVS 111,以便为上述应用主键锁定散列桶的更新(步骤1006)。然后,数据重新安置单元150为数据KVS 112指定登记在所关注条目中的数据KVS键值,并取出数据KVS键值的所有数据(步骤1007)。
数据重新安置单元150然后用在步骤1005中选择的特殊分区112b的分区标识符和在步骤1005中识别的自由散列桶的散列值取代描述在在步骤1007中取出的重新安置目标对象数据的根段中的数据KVS键值中的分区标识符和散列值(步骤1008)。
然后,数据重新安置单元150按段分层次序将在步骤1008中更新了数据KVS键值的重新安置目标对象数据存储在数据KVS 112中(步骤1009)。在通过新数据KVS主键识别的特殊分区112b中,将重新安置目标对象数据存储在通过数据KVS主键识别的自由散列桶中。然后,数据重新安置单元150用在步骤1008中取代的新数据KVS键值取代在步骤1006中锁定的、主键KVS 111的、描述在主键/数据对的数据部分中的数据KVS键值,然后解除锁定(步骤1010)。
接着,数据重新安置单元150从数据KVS 112中删除通过重新安置之前的数据KVS键值识别的旧数据(步骤1011)。然后,数据重新安置单元150提交通过上述处理对主键KVS 111和数据KVS 112的更新,并结束该处理(步骤1012)。
在上述方式下,完成了作为重新安置目标对象关注的条目的主键/数据对的重新安置。重新安置处理可以从分区112a和112b的任何一个开始,可以按任何次序处理各自分区112a和112b的重新安置推荐主键列表的任何条目。但是,当处理了所有分区112a和112b中的重新安置推荐主键列表的所有条目时,按特殊分区112b的CI尺寸(散列桶尺寸)的降序进行处理,并且在特殊分区112b的处理全部结束之后,进行正常分区112a的处理。具有最长CI尺寸的特殊分区112b的重新安置推荐主键可以不进行重新安置,而是通过根据数据长度的分布扩大特殊分区112b的溢出区来应付。
<主键KVS的重新创建处理和数据KVS的定义重新组织处理>
接着,将描述主键KVS重新创建单元160重新创建主键KVS 111的重新创建处理、和数据KVS定义重新组织单元重新组织数据KVS的数据库定义的重新组织处理。当数据KVS定义重新组织单元170进行伴随着数据KVS112的定义变化、数据KVS 112的主键/数据对的重新装载处理时,应用数据在数据KVS 112中的存储地点发生变化。因此,为了按照来自应用的访问请求访问正确(新)存储地点,需要伴随着数据KVS 112的重新组织重新创建主键KVS 111。
首先,将描述主键KVS重新创建单元160重新创建主键KVS 111的重新创建处理。主键KVS重新创建单元160从数据KVS 112的分区112a和112b当中与要重新创建的主键KVS 111的主键/数据对有关的所有分区112a和112b中读取主键/数据对,并根据数据KVS 112的所读取主键/数据对的信息重新创建主键KVS 111的主键/数据对。
具体地说,主键KVS重新创建单元160首先提取包括在主键部分中的主键的数值和包括在数据KVS 112中的所读取主键/数据对的数据部分中的应用主键。然后,主键KVS重新创建单元160将从数据部分中提取的数据KVS主键和应用主键对写入中间文件中作为一个记录。当如后所述数据KVS定义重新组织单元170进行数据KVS 112的数据库定义的重新组织处理时,也通过数据KVS定义重新组织单元170创建中间文件。当读取数据KVS 112的主键/数据对时,在主键/数据对的数据部分被划分成在数据KVS 112的结构中具有多层结构的多个段时,可以只读取根段。然后,主键KVS重新创建单元160将写入中间文件中的主键/数据对重新装载到主键KVS 111中。
接着,将描述数据KVS定义重新组织单元170重新组织数据KVS的数据库定义的重新组织处理。数据KVS定义重新组织单元170通过按照它们的数据长度将数据KVS 112的主键/数据对重新装载到特殊分区中重新组织数据KVS 112。在下文中,将分开描述从数据KVS 112中卸载主键/数据对时的处理、和将主键/数据对重新装载到数据KVS 112中的处理。
图11是例示数据KVS定义重新组织单元170重新组织数据KVS 112的数据库定义的重新组织处理中卸载主键/数据对时的处理的流程图。数据KVS定义重新组织单元170从数据KVS 112中卸载主键/数据对(步骤1101),并将数据长度的信息加入卸载文件中的主键/数据对的每个记录中(步骤1102)。此外,数据KVS定义重新组织单元170根据卸载主键/数据对的数据大小,获取有关要将多少个主键/数据对重新装载到什么类型(散列桶尺寸)的特殊分区112b中的信息(步骤1103)。将卸载文件和所获信息保存在,例如,外部存储设备中。然后,在完成了主键/数据对的卸载之后,数据KVS定义重新组织单元170将每种特殊分区类型(散列桶尺寸的每个范围)要重新装载的主键/数据对的数量写入外部存储设备中的重新装载控制文件中(步骤1104)。
图12是例示数据KVS定义重新组织单元重新组织数据KVS的数据库定义的重新组织处理中重新装载主键/数据对时的处理的流程图。为了将主键/数据对重新装载到数据KVS 112中,数据KVS定义重新组织单元170首先读取重新装载控制文件(步骤1201),并针对每种特殊分区类型要重新装载的主键/数据对的数量检验数据KVS 112的散列桶的数量是否不足(步骤1202)。然后,当存在散列桶不足的特殊分区类型时,数据KVS定义重新组织单元170增加与特殊分区类型相对应的现有特殊分区112b的散列桶的数量,或加入相同特殊分区类型的特殊分区112b(步骤1203)。
接着,如果在卸载文件中存在未经处理主键/数据对,则数据KVS定义重新组织单元170从卸载文件中选择要重新装载的一个主键/数据对(步骤1204,1205),并按照所选主键/数据对的数据长度选择作为存储目的地的特殊分区112b(步骤1206)。然后,数据KVS定义重新组织单元170用所选特殊分区112b的分区标识符盖写主键/数据对中的数据KVS主键的分区标识符字段(例如,记录例示在图2中的数据KVS主键的分值10b的字段)的数值。此外,数据KVS定义重新组织单元170按存储在存储目的地的每个特殊分区112b中的次序用序列号盖写数据KVS主键的散列值字段(例如,记录例示在图2中的数据KVS主键的分值10c的字段(步骤1207)。
接着,通过使用以上述方式更新了分区标识符字段的数值和散列值字段的数值的键值,数据KVS定义重新组织单元170将主键/数据对重新装载到存储目的地的特殊分区112b中(步骤1208)。然后,数据KVS定义重新组织单元170为主键KVS 111的重新创建处理将包括在重新装载主键/数据对中的数据部分中的新数据KVS主键和应用键值写入中间文件中(步骤1209)。
接着,数据KVS定义重新组织单元170返回到步骤1204,确定是否到达卸载文件的末端。然后,当未到达卸载文件的末端时,通过前进到步骤1205读取下一个记录,并重复到步骤1209的处理。另一方面,当到达卸载文件的末端时,结束数据KVS 112的数据库定义的重新组织处理。此后,使用伴随着主键/数据对的重新装载创建的中间文件,进行上述主键KVS重新创建单元160重新创建主键KVS 111的重新创建处理。由于随着重新装载主键/数据对的数据KVS键值得到更新,使主键KVS 111的主键/数据对的数据部分也得到更新,所以保持了应用键值与应用数据之间的关系。
<硬件配置例子>
图13是例示适合配置本实施例的KVS系统100的硬件配置例子的图形。这里,将描述应用于计算机的情况。例示在图13中的计算机包括作为操作部件的CPU(中央处理单元)100a、和作为主要存储部件的存储器100c,以及作为外部设备,还包括磁盘设备(HDD:硬盘驱动器)100g、网络接口100f、包括显示设备的显示机构100d、声音机构100h、和像键盘或鼠标等那样的输入设备100i。
在例示在图13中的配置例子中,存储器100c和显示机构100d通过系统控制器100b与CPU 100a连接。此外,网络接口100f、硬盘设备100g、声音机构100h、和输入设备100i通过I/O控制器100e与系统控制器100b连接。各个组件通过像系统总线和输入/输出总线那样的各种类型总线连接。
图13仅仅示范了适合应用本实施例的计算机的硬件配置。本实施例可广泛应用于能够显示电子文档以便使其可浏览,和根据搜索主键搜索数据的信息处理器,以及该实施例不仅仅只以例示在图形中的配置实现。
在图13中,在硬盘设备100g中,存储着OS的程序和应用程序。然后,将程序读到存储器100c中,并由CPU 100a执行,从而实现本实施例中的KVS系统100的各种功能。此外,数据管理单元110通过像存储器100c和磁盘设备100g等那样的存储部件实现。KVS系统100可以通过将数据管理单元110和功能分配给多个计算机来配置。在这样配置的情况下,各台计算机可以各自转变成例示在图13中的硬件配置。
在上述实施例中,正常分区112a是散列桶型的,主键/数据对的存储目的地通过散列机构确定,但是,正常分区112a不局限于该配置。例如,与特殊分区112b类似,可以从第一自由空间开始按次序存储主键/数据对。另外,上述实施例的各种改变或改进都包括在本发明的技术范围之内。
[标号列表]
100...KVS系统;104...统计信息收集单元;110...数据管理单元;111...主键KVS;112...数据KVS;112a...正常分区;112b...特殊分区;120...优先分区列表生成单元;130...重新安置推荐主键列表生成单元;140...主键/数据对存储控制单元;150...数据重新安置单元;160...主键KVS重新创建单元;170...数据KVS定义重新组织单元。
Claims (8)
1.一种管理数据的系统,包含:
数据管理单元,用于存储和管理一组数据和唯一地与该数据相联系的主键;以及
访问管理单元,用于接收访问与该主键相联系的数据的访问请求,该访问请求通过指定该主键作出,
其中该数据管理单元包括
存储一组数据和第一主键的第一存储单元,该第一主键用作唯一地与该数据相联系的主键,该第一主键包括有关要访问的数据的存储地点的信息,
存储一组该第一主键和第二主键的第二存储单元,该第一主键用作数据,该第二主键用作唯一地与该第一主键相联系的主键,该第二主键在访问与该第一主键相联系的数据时在访问请求中指定;以及
重新安置单元,用于当满足预定执行条件时,将该第一存储单元中的该组数据和第一主键重新安置在该第一存储单元的不同区域中,
该第一存储单元包括
第一区域,其中存储多组数据和第一主键之一的记录的大小是预定指定大小,以及
第二区域,其中存储多组数据和第一主键之一的记录的大小是按照该组的数据大小设置的大小,以及
该重新安置单元将作为重新安置目标对象的该组数据和第一主键重新安置在具有适合该组的数据大小的记录大小的第二区域中。
2.按照权利要求1所述的系统,其中,当不存在具有适合要重新安置的该组数据和第一主键的数据大小的记录大小的第二区域时,该重新安置单元添加具有该记录大小的第二区域,并将该组存储在所添加第二区域中的记录中。
3.按照权利要求1所述的系统,其中,作为执行条件,当存储在该第一存储单元的第一区域或第二区域中的多组数据和主键当中的一组的数据大小大于为存储该组的第一区域或第二区域确定的阈值时,该重新安置单元将该组重新安置在另一个第二区域中。
4.按照权利要求1所述的系统,其中,作为执行条件,当标识该第一存储单元的第一区域中该组数据和主键的存储地点的散列值的冲突程度大于预定阈值时,该重新安置单元将该组重新安置在第二区域中。
5.按照权利要求1所述的系统,进一步包含:
存储控制单元,用于根据访问请求获取新的数据和第二主键,在该第一存储单元的第一区域中指定数据的存储地点,生成包括有关该存储地点的信息的第一主键,将该组第一主键和数据存储在指定存储地点上,创建该组所获第二主键和所创建第一主键,以及将该组存储在该第二存储单元中。
6.按照权利要求5所述的系统,其中,当重新安置该组数据和第一主键时,该重新安置单元通过用有关重新安置之后的存储地点的信息取代包括在第一主键中的有关该组的存储地点的信息更新第一主键,以及用根据重新安置之后的存储地点更新的内容取代存储在该第二存储单元中、与重新安置数据相联系的该组第二主键和第一主键中的第一主键。
7.一种管理数据的系统,包含:
数据管理单元,用于存储和管理一组数据和唯一地与该数据相联系的主键;以及
访问管理单元,用于接收访问与该主键相联系的数据的访问请求,该访问请求通过指定该主键作出,
其中该数据管理单元包括:
存储一组数据和第一主键的第一存储单元,该第一主键用作唯一地与该数据相联系的主键,该第一主键包括有关要访问的数据的存储地点的信息;
存储一组该第一主键和第二主键的第二存储单元,该第一主键用作数据,该第二主键用作唯一地与该第一主键相联系的主键,该第二主键在访问与该第一主键相联系的数据时在访问请求中指定;以及
重新安置单元,用于当满足预定执行条件时,将该第一存储单元中的该组数据和第一主键重新安置在该第一存储单元的不同区域中,
该第一存储单元包括:
第一区域,其中存储多组数据和第一主键之一的记录的大小是预定指定大小;以及
第二区域,其中存储多组数据和第一主键之一的记录的大小是按照该组的数据大小设置的大小,以及
该重新安置单元
将作为重新安置目标对象的该组数据和第一主键重新安置在具有适合该组的数据大小的记录大小的第二区域中,
当不存在具有适合要重新装载的该组数据和第一主键的数据大小的记录大小的第二区域时,添加具有该记录大小的第二区域,并将该组存储在所添加第二区域的记录中,以及
作为执行条件,当该组至少满足该组的数据大小大于为存储该组的第一区域或第二区域确定的阈值的事实,或在存储在该第一存储单元的第一区域或第二区域中的多组数据和主键当中,指示该第一存储单元的第一区域中的一组数据和主键的存储地点的散列值的冲突程度大于预定阈值的事实时,将该组数据和主键重新安置在第二区域中。
8.一种通过计算机在系统中管理数据的方法,
该系统包括:
数据管理单元,用于存储和管理一组数据和唯一地与该数据相联系的主键;以及
访问管理单元,用于接收访问与该主键相联系的数据的访问请求,该访问请求通过指定该主键作出,
该数据管理单元包括:
存储一组数据和第一主键的第一存储单元,该第一主键用作唯一地与该数据相联系的主键,该第一主键包括有关要访问的数据的存储地点的信息;
存储一组该第一主键和第二主键的第二存储单元,该第一主键用作数据,该第二主键用作唯一地与该第一主键相联系的主键,该第二主键在访问与该第一主键相联系的数据时在访问请求中指定;以及
重新安置单元,用于当满足预定执行条件时,将该第一存储单元中的该组数据和第一主键重新安置在该第一存储单元的不同区域中,
该第一存储单元包括:
第一区域,其中存储多组数据和第一主键之一的记录的大小是预定指定大小;以及
第二区域,其中存储多组数据和第一主键之一的记录的大小是按照该组的数据大小设置的大小,
该方法包含如下步骤:
作为执行条件,确定存储在该第一存储单元的第一区域或第二区域中的多组数据和主键当中的一组的数据大小是否大于为存储该组的第一区域或第二区域确定的阈值;
作为执行条件,确定指示该第一存储单元的第一区域中该组数据和主键的存储地点的散列值的冲突程度是否大于预定阈值;以及
当该组满足任一种执行条件时,由该重新安置单元将该组数据和主键重新安置在第二区域中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013230608A JP6025149B2 (ja) | 2013-11-06 | 2013-11-06 | データを管理するシステムおよび方法 |
JP2013-230608 | 2013-11-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104636417A true CN104636417A (zh) | 2015-05-20 |
CN104636417B CN104636417B (zh) | 2017-10-13 |
Family
ID=53007842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410643041.2A Active CN104636417B (zh) | 2013-11-06 | 2014-11-06 | 管理数据的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9659048B2 (zh) |
JP (1) | JP6025149B2 (zh) |
CN (1) | CN104636417B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6034512B2 (ja) * | 2013-12-25 | 2016-11-30 | 株式会社日立製作所 | 計算機システム及びデータ管理方法 |
WO2016006223A1 (ja) * | 2014-07-11 | 2016-01-14 | 日本電気株式会社 | 配置装置、配置方法及び配置プログラムを記憶する記録媒体 |
US10089089B2 (en) * | 2015-06-03 | 2018-10-02 | The Mathworks, Inc. | Data type reassignment |
KR102416004B1 (ko) * | 2015-09-02 | 2022-07-04 | 삼성전자주식회사 | 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치 |
US10437809B1 (en) * | 2015-09-28 | 2019-10-08 | Amazon Technologies, Inc. | Projection-based updates |
CN105354315B (zh) * | 2015-11-11 | 2018-10-30 | 华为技术有限公司 | 分布式数据库中子表分裂的方法、子表节点和系统 |
US10356174B2 (en) * | 2016-05-06 | 2019-07-16 | Masergy Communications, Inc. | Multi-layer data storage system |
US10198461B2 (en) | 2016-05-06 | 2019-02-05 | Masergy Communications, Inc. | Data storage system |
US10795577B2 (en) | 2016-05-16 | 2020-10-06 | Commvault Systems, Inc. | De-duplication of client-side data cache for virtual disks |
US10846024B2 (en) | 2016-05-16 | 2020-11-24 | Commvault Systems, Inc. | Global de-duplication of virtual disks in a storage platform |
US10425483B2 (en) | 2016-05-16 | 2019-09-24 | International Business Machines Corporation | Distributed client based cache for keys using demand fault invalidation |
US10248174B2 (en) | 2016-05-24 | 2019-04-02 | Hedvig, Inc. | Persistent reservations for virtual disk using multiple targets |
US11169706B2 (en) | 2016-05-26 | 2021-11-09 | Nutanix, Inc. | Rebalancing storage I/O workloads by storage controller selection and redirection |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10719495B2 (en) * | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10725988B2 (en) | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
US10706105B2 (en) * | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10579612B2 (en) * | 2017-04-03 | 2020-03-03 | Citrix Systems, Inc. | Enforcing uniqueness of property-value pairs in a schemaless data store |
CN107145522B (zh) * | 2017-04-11 | 2019-12-31 | 南京南瑞集团公司 | 一种数据库数据内容比对方法 |
US10609172B1 (en) | 2017-04-27 | 2020-03-31 | Chicago Mercantile Exchange Inc. | Adaptive compression of stored data |
WO2019144214A1 (en) * | 2017-10-10 | 2019-08-01 | Phemi Systems Corporation | Methods and systems for context-specific data set derivation from unstructured data in data storage devices |
US10848468B1 (en) | 2018-03-05 | 2020-11-24 | Commvault Systems, Inc. | In-flight data encryption/decryption for a distributed storage platform |
US11100071B2 (en) * | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US10922142B2 (en) | 2018-10-31 | 2021-02-16 | Nutanix, Inc. | Multi-stage IOPS allocation |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US10852978B2 (en) | 2018-12-14 | 2020-12-01 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
US11580162B2 (en) | 2019-04-18 | 2023-02-14 | Samsung Electronics Co., Ltd. | Key value append |
KR20210017268A (ko) * | 2019-08-07 | 2021-02-17 | 삼성전자주식회사 | 사용자 데이터에 대해 암호화 동작을 수행하는 전자 장치 |
US11507555B2 (en) * | 2019-10-13 | 2022-11-22 | Thoughtspot, Inc. | Multi-layered key-value storage |
US20210342098A1 (en) * | 2020-05-03 | 2021-11-04 | Ionir Systems Ltd. | System and method for storing and retrieving data |
US20220092046A1 (en) * | 2020-09-18 | 2022-03-24 | Kioxia Corporation | System and method for efficient expansion of key value hash table |
US11853563B1 (en) * | 2022-06-17 | 2023-12-26 | Western Digital Technologies, Inc. | Key value data storage device with tiers |
US20230418514A1 (en) * | 2022-06-27 | 2023-12-28 | Western Digital Technologies, Inc. | Key-To-Physical Table Optimization For Key Value Data Storage Devices |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483605A (zh) * | 2009-02-25 | 2009-07-15 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN102147798A (zh) * | 2010-02-10 | 2011-08-10 | 华为技术有限公司 | 处理哈希查找冲突问题的方法和装置 |
US20110231458A1 (en) * | 2010-03-01 | 2011-09-22 | Hitachi, Ltd. | File level hierarchical storage management system, method, and apparatus |
CN102402622A (zh) * | 2011-12-27 | 2012-04-04 | 北京人大金仓信息技术股份有限公司 | 嵌入式内存数据库的内存页面管理调度方法 |
CN102880628A (zh) * | 2012-06-15 | 2013-01-16 | 福建星网锐捷网络有限公司 | 哈希数据存储方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04206586A (ja) | 1990-11-30 | 1992-07-28 | Fujitsu Ltd | 半導体発光装置及びその製造方法 |
JP4206586B2 (ja) | 1999-11-12 | 2009-01-14 | 株式会社日立製作所 | データベース管理方法および装置並びにデータベース管理プログラムを記録した記憶媒体 |
US8694703B2 (en) * | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
JP2013033345A (ja) | 2011-08-01 | 2013-02-14 | Internatl Business Mach Corp <Ibm> | トランザクション処理システム、方法及びプログラム |
JP2013045378A (ja) | 2011-08-26 | 2013-03-04 | Fujitsu Ltd | ストレージ制御方法、情報処理装置およびプログラム |
JP2013050836A (ja) | 2011-08-31 | 2013-03-14 | Nec Corp | ストレージシステムとデータ・インテグリティのチェック方法並びにプログラム |
JP5733124B2 (ja) * | 2011-09-12 | 2015-06-10 | 富士通株式会社 | データ管理装置、データ管理システム、データ管理方法、及びプログラム |
JP2013088920A (ja) | 2011-10-14 | 2013-05-13 | Hitachi Ltd | 計算機システム及びデータ管理方法 |
WO2013073020A1 (ja) * | 2011-11-16 | 2013-05-23 | 株式会社日立製作所 | 計算機システム、データ管理方法及びプログラム |
-
2013
- 2013-11-06 JP JP2013230608A patent/JP6025149B2/ja active Active
-
2014
- 2014-09-19 US US14/491,337 patent/US9659048B2/en not_active Expired - Fee Related
- 2014-11-06 CN CN201410643041.2A patent/CN104636417B/zh active Active
-
2017
- 2017-04-19 US US15/491,417 patent/US10740308B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483605A (zh) * | 2009-02-25 | 2009-07-15 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN102147798A (zh) * | 2010-02-10 | 2011-08-10 | 华为技术有限公司 | 处理哈希查找冲突问题的方法和装置 |
US20110231458A1 (en) * | 2010-03-01 | 2011-09-22 | Hitachi, Ltd. | File level hierarchical storage management system, method, and apparatus |
CN102402622A (zh) * | 2011-12-27 | 2012-04-04 | 北京人大金仓信息技术股份有限公司 | 嵌入式内存数据库的内存页面管理调度方法 |
CN102880628A (zh) * | 2012-06-15 | 2013-01-16 | 福建星网锐捷网络有限公司 | 哈希数据存储方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
JP6025149B2 (ja) | 2016-11-16 |
US10740308B2 (en) | 2020-08-11 |
US9659048B2 (en) | 2017-05-23 |
US20170220572A1 (en) | 2017-08-03 |
US20150127658A1 (en) | 2015-05-07 |
CN104636417B (zh) | 2017-10-13 |
JP2015090615A (ja) | 2015-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104636417A (zh) | 管理数据的系统和方法 | |
US9177004B2 (en) | Balancing data across partitions of a table space during load processing | |
CN103488684B (zh) | 基于缓存数据多线程处理的电力可靠性指标快速计算方法 | |
CN101315628B (zh) | 内存数据库系统及实现内存数据库的方法和装置 | |
CN102867071B (zh) | 一种网管海量历史数据管理方法 | |
US20040133581A1 (en) | Database management system, data structure generating method for database management system, and storage medium therefor | |
CN103577454B (zh) | 一种文件合并方法和装置 | |
CN108009008A (zh) | 数据处理方法和系统、电子设备 | |
CN103177061A (zh) | 分区表中的唯一值估计 | |
CN108052618A (zh) | 数据管理方法及装置 | |
CN101763415B (zh) | 一种数据库的b树索引的生成方法及装置 | |
JP2011191835A (ja) | 計算機システムおよびアプリケーションプログラムの実行方法 | |
CN110399333A (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN107273403A (zh) | 一种历史数据收集及存储的方法 | |
CN110175900A (zh) | 一种缓冲补账方法及装置 | |
CN109815244A (zh) | 一种数据处理方法和装置 | |
CN102567544A (zh) | 数据库查询方法及装置 | |
CN107846327A (zh) | 一种网管性能数据的处理方法及装置 | |
JP2017167843A (ja) | 取引明細管理システムおよび取引明細管理方法 | |
KR101170969B1 (ko) | 공유 데이터 베이스상에서의 데이터 맵핑 방법 및 시스템 | |
CN111597262B (zh) | 一种区块链中的区块数据的管理方法和管理系统 | |
EA005269B1 (ru) | Способ организации и хранения данных в базе данных и база данных | |
CN108900631A (zh) | 一种消息分配方法、装置及分布式系统 | |
CN101751390A (zh) | 物件导向储存装置的磁盘配置方法 | |
JPH11312150A (ja) | 並列処理方法および並列処理システム、ならびに並列処理プログラムを記録した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |