CN102799628B - 在key-value数据库中进行数据分区的方法和装置 - Google Patents

在key-value数据库中进行数据分区的方法和装置 Download PDF

Info

Publication number
CN102799628B
CN102799628B CN201210212320.4A CN201210212320A CN102799628B CN 102799628 B CN102799628 B CN 102799628B CN 201210212320 A CN201210212320 A CN 201210212320A CN 102799628 B CN102799628 B CN 102799628B
Authority
CN
China
Prior art keywords
information
value
key
subregion
partitioning
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.)
Active
Application number
CN201210212320.4A
Other languages
English (en)
Other versions
CN102799628A (zh
Inventor
张海洋
朱天浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN201210212320.4A priority Critical patent/CN102799628B/zh
Publication of CN102799628A publication Critical patent/CN102799628A/zh
Application granted granted Critical
Publication of CN102799628B publication Critical patent/CN102799628B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种在key-value数据库中进行数据分区的方法和装置,所述方法包括:从预先保存的分区信息基础表中解析出分区数目信息和分区算法信息;分区回调函数根据分区算法信息运行相应分区算法,该相应分区算根据分区数目信息和计算值,确定出所述待分区的key-value数据所被分区的子数据库的信息;所述计算值为与待分区的key-value数据相关的值。由于将分区数目信息和分区算法信息记录在分区信息基础表中,并在对key-value数据进行操作时,如存储和查询操作时,根据分区信息基础表中记录的内容对key-value数据分区,确定分区子数据库,从而可以通过修改分区信息基础表中的内容,实现分区方式的灵活变更。

Description

在key-value数据库中进行数据分区的方法和装置
技术领域
本发明涉及数据库技术领域,尤其涉及在key-value数据库中进行数据分区的方法和装置。
背景技术
具备高可靠性及可扩展性的海量数据存储对互联网公司来说是一个巨大的挑战,传统的数据库往往很难满足该需求,并且很多时候对于特定的系统绝大部分的检索都是基于主键的查询,在这种情况下使用关系型数据库将使得效率低下,并且扩展也将成为未来很大的难题。在这样的情况下,使用键-值(key-value)数据库进行存储、查询得到广泛的应用。
key-value分布式存储系统中将键值(key)与内容(value)对应存储,在进行查询时,可以通过键值key快速查询到对应的内容value,具有查询速度快、存放数据量大、支持高并发的优点,是一种非常适合通过主键进行查询的方式。
为方便对key-value数据库中的元数据(即key-value对)进行操作,比如存储、查询、删除等,通常会将一个大的数据库的数据表拆分成多个更小的数据表;也就是,对key-value数据库进行分区;从而在对数据库进行操作时,不需扫描整个数据库的数据表,而只需访问其中部分分区的数据表,这样可以使得数据的查询执行得更快,因为需要扫描的数据较少,而且可以更快地执行维护任务(如重建索引或备份表)。
在现有技术中,对key-value数据库进行分区仅支持依据待分区的个数进行分区,分区的方式单一;这种固定模式的分区方式使得分区的数据库不一定能很好地适应具体的业务需求,在数据库的扩展,或改变查询方式的情况下,具有非常大的局限性。
而且,对key-value数据库进行分区的工作通常是在创建数据库的时候完成,在创建完成后,分区方式将不能根据以后的情况进行改变,也就是说,现有技术中在数据库创建、完成分区后,在对数据库进行操作过程中,如查询、增加数据时就不能再对分区模式进行更改。这使得数据库缺少灵活性,无法在使用一段时间后根据实际情况的变化而做出相应的变更。
发明内容
本发明的实施例提供了一种在key-value数据库中进行数据分区的方法和装置,提供灵活、可变的分区方式。
根据本发明的一个方面,提供了一种在key-value数据库中进行数据分区的方法,包括:
从预先保存的分区信息基础表中解析出分区数目信息和分区算法信息;
调用分区回调函数,并将输入参数传送给所述分区回调函数;其中,所述输入参数包括所述分区数目信息和分区算法信息,以及计算值,所述计算值为与待分区的key-value数据相关的值;
所述分区回调函数根据所述分区算法信息运行相应分区算法,该相应分区算法根据所述分区数目信息和计算值进行运算,得到输出参数;所述输出参数中包含子数据库的信息,该子数据库为所述待分区的key-value数据所被分区的子数据库。
较佳地,所述待分区的key-value数据具体为待存储的key-value数据;以及,
在所述得到输出参数之后,还包括:
根据所述输出参数将所述待存储的key-value数据存储到相应的子数据库中。
较佳地,所述待分区的key-value数据具体为待查询的key-value数据;以及,
在所述得到输出参数之后,还包括:
根据所述计算值在所述输出参数所指示的子数据库中查找到所述key-value数据。
较佳地,在从预先保存的分区信息基础表中解析出分区数目信息和分区算法信息时,所述方法还包括:
从所述分区信息基础表中解析出垂直分区信息、水平分区信息;以及,
在所述分区回调函数根据所述分区算法信息运行相应分区算法时,还包括:
该相应分区算法还根据所述垂直分区信息、水平分区信息进行运算。
其中,所述子数据库的信息包括:子数据库的名称,以及子数据库所在服务器的信息;其中,所述子数据库的名称中包含有水平分区值信息和垂直分区值信息。
所述分区算法信息具体可以是键key算法、哈希hash算法、范围range算法、列表list算法,或自定义的算法;以及
所述分区数目信息具体指示出分区总数为固定值,或指示出分区总数不固定;以及
所述key-value数据库具体为伯克利Berkeley数据库。
根据本发明的另一个方面,还提供了一种在key-value数据库中进行数据分区的装置,包括:
分区功能模块,用于从分区信息基础表中解析出分区数目信息和分区算法信息;将所述分区数目信息和分区算法信息,以及计算值作为输入参数进行传送;所述计算值为与待分区的key-value数据相关的值;
分区回调函数模块,用于根据所述分区功能模块传送的输入参数中的分区算法信息调用相应的分区算法单元,调用的分区算法单元根据所述分区数目信息和计算值进行运算,得到输出参数;所述输出参数中包含子数据库的信息,该子数据库为所述待分区的key-value数据所被分区的子数据库。
较佳地,所述装置还包括:
数据存储模块,用于将待存储的key-value数据作为所述待分区的key-value数据,并将与待存储的key-value数据相关的值作为计算值传送给所述分区功能模块;以及
所述数据存储模块还用于根据所述分区回调函数模块的输出参数将所述待存储的key-value数据存储到相应的子数据库中。
较佳地,所述装置还包括:
数据查询模块,用于将待查询的key-value数据相关的值作为计算值传送给所述分区功能模块;以及
所述数据查询模块还用于根据所述计算值在所述分区回调函数模块的输出参数所指示的子数据库中查找到所述key-value数据。
较佳地,所述分区功能模块还用于从分区信息基础表中还解析出垂直分区信息、水平分区信息;以及,
所述装置,还包括:
分区信息基础表维护模块,用于接收用户输入的分区数目信息、分区算法信息、垂直分区信息、水平分区信息;并根据输入的分区数目信息、分区算法信息、垂直分区信息、水平分区信息生成所述分区信息基础表并进行保存。
本发明实施例由于将分区数目信息和分区算法信息记录在分区信息基础表中,并在对key-value数据进行操作时,如存储和查询操作时,根据分区信息基础表中记录的内容对key-value数据分区,确定分区子数据库,从而可以通过修改分区信息基础表中的内容,实现分区方式的灵活变更。这样,即使在创建数据库的时候已经分过区了,在之后的数据库应用中,如存储、查询数据时,也可通过更改分区信息基础表中的相关信息,如分区算法信息、分区数目信息等,实现对数据库的分区方式的改变,使得数据库在适应具体业务需求时具有更大的灵活性。而且,本发明实施例的分区方法不仅限于依据分区数目(即待分区的个数)进行分区,分区的算法灵活多样,既可以分区的总数固定,也可不固定分区的总数,从而更进一步提高数据库分区的灵活性。
附图说明
图1为本发明实施例的key-value数据库中进行数据分区的方法流程图;
图2为本发明实施例的key-value数据库中进行数据分区的装置内部结构框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计算机之间。
本发明实施例提供的技术方案中,将查询、存储数据与数据的分区相结合,而且,支持对数据库采用多种不同分区算法来进行分区,从而在查询或存储数据的过程中可以通过更换分区算法来实现对数据库的分区方式进行改变。本发明实施例提供的分区功能模块调用一个分区回调函数,分区回调函数根据输入参数计算并返回输出参数(本文中将输出参数称之为分区结构体)。分区功能模块根据分区结构体去操作相应的key-value数据库,比如操作Berkeley DB分区表,从而实现数据库分区功能。分区回调函数可以是该分区功能模块创建的,也可以不是分区功能模块创建的。
下面结合附图详细说明本发明实施例的技术方案。事实上,本发明实施例的技术方案中的分区算法其实是提供了一种分区策略,在存储或查询数据时,根据确定的分区策略进行操作就实现了数据库的分区。换言之,根据分区算法(即分区策略)在向数据库中存入key-value对(或称key-value数据)的过程中即实现了分区;或者说是,在确定了需要存入的key-value对分区位置后,根据确定的分区位置将key-value对进行存入。下面结合数据存储过程讲述本发明实施例的key-value数据库中进行数据分区的方法流程图,如图1所示,包括如下步骤:
S101:分区功能模块读取并解析一个分区信息基础表。
分区信息基础表中保存了分区相关信息,包括:分区数目信息、分区算法信息。进一步,分区信息基础表的分区相关信息还可包括:垂直分区信息、水平分区信息。
其中,分区数目信息指示出分区总数是否为固定值;若为固定值,分区数目信息还指示出该固定值的取值。例如,如果分区数目信息具体为大于0的整数n,则表示分区总数为固定的,分区总数的个数为n;如果分区数目信息具体为0,则表示分区总数不固定。
分区算法信息为某种分区算法的名称,用以指示出具体采用哪种分区算法进行分区。例如,分区算法信息可以是如下几种分区算法之一:key(键,亦即md5方式哈希)算法、hash(哈希)算法、range(范围)算法和list(列表)算法的算法名称。以上这些是mysql中提供的分区算法,详细可以参考mysql5手册。当然,分区算法信息也可以是自定义的分区算法的名称。
垂直分区信息中包括垂直分区标识用以指示是否进行垂直分区;例如,垂直分区标识为1表示进行垂直分区,垂直分区标识为0表示不进行垂直分区。对于垂直分区标识表示进行垂直分区的情况,垂直分区信息中还包括:垂直分区的列范围。
水平分区信息中包括水平分区标识用以指示是否进行水平分区;例如,水平分区标识为1表示进行水平分区,水平分区标识为0表示不进行水平分区。
上述的分区信息基础表可预先创建、保存,分区信息基础表中的信息可根据实际情况进行修改。
分区功能模块读取该分区信息基础表,并从分区信息基础表中解析出分区数目信息、分区算法信息,进一步还可解析出垂直分区信息和水平分区信息。
S102:分区功能模块调用分区回调函数。
分区功能模块调用分区回调函数,并将输入参数传送给分区回调函数。
传送给分区回调函数的输入参数中包括解析出的分区数目信息、分区算法信息,进一步还可包括解析出的垂直分区信息和水平分区信息。
此外,输入参数中还包括计算值。计算值为与待分区的key-value数据相关的值。待分区的key-value数据具体可以是待存储的key-value数据,或者是待查询的key-value数据。计算值可以是一个也可以是多个,不同分区算法可能所需的计算值不同。计算值可以包括待分区的key-value数据的key值、key的某种形式的转换值、待分区的key-value数据的value中的某个值,比如value中的时间值等。
S103:分区回调函数根据输入参数进行相应运算,得到输出参数。
具体地,分区回调函数根据分区算法信息运行相应分区算法,该相应分区算法根据分区数目信息和计算值进行运算,从而得到输出参数。所述输出参数中包含子数据库的信息,该子数据库为所述待分区的key-value数据所被分区的子数据库,即所述输出参数中包含有所述待分区的key-value数据所被分区的子数据库的信息。也就是说输出参数指示出了待分区的key-value数据被分区的子数据库。子数据库指的是对数据库进行分区后得到的子数据库。例如,原始数据库为“testtable”,将其进行分区后,得到5个子数据库,分别为testtable_0、testtable_1、testtable_2、testtable_3、testtable_4。分区的子数据库的信息中具体包括子数据库的名称、子数据库所在服务器的信息。子数据库所在服务器的信息具体包括子数据库所在服务器的IP地址和端口信息。
例如,原数据库名为“testtable”。分区功能模块传送给分区回调函数的输入参数中:分区数目信息为32,计算值为待分区的key-value数据的key值——字符串“testmd5”,分区算法信息指示出采用的分区算法为md5值取余,则分区回调函数运行md5值取余分区算法:分区回调函数首先确定计算值“testmd5”的md5值“32269ae63a25306bb46a03d6f38bd2b7”,取md5值的后两位“b7”,并将16进制值b7转为10进制值183。分区数目信息为32表示分区总数的个数为32,则用183除以分区总数32,取余数23即为输出参数的水平分区值。不同的水平分区值的key-value数据将被分区到不同的子数据库中。根据水平分区值23,计算出分区服务器信息:假如有两个服务器,两个服务器的IP地址分别是192.168.0.1,192.168.0.2,每个IP地址上有两个端口,其中192.168.0.1上有端口31001、31002;192.168.0.2上有端口21001、21002,则总共有4个服务实例,分别编号为0、1、2、3。32个分区的子数据库分别存储在4个服务实例中,存储的方式为:将水平分区值对4取余得到余数3,对应于编号为3的192.168.0.2的21002端口服务实例,则确定该水平分区值为23的key-value数据被分区到IP地址为192.168.0.2、端口为21002的服务器上的子数据库中。子数据库的名称中可包括水平分区值的信息,例如,根据水平分区值23确定的子数据库的名称为“testtable_0_23”。则分区回调函数返回的输出参数具体包括:IP地址192.168.0.2、端口信息21002,以及子数据库名称“testtable_0_23”。
较佳地,分区回调函数根据分区算法信息运行相应分区算法时,分区算法根据分区数目信息和计算值,以及垂直分区信息和水平分区信息进行运算,得到输出参数。
又如,分区功能模块传送给分区回调函数的输入参数中:分区数目信息为0,计算值为待分区的key-value数据的key值——整型数据“51000”,分区算法信息指示出采用的分区算法为按计算值范围取整,垂直分区标识指示进行垂直分区,垂直分区的列范围为:n0、n1列包括在一个垂直分区中,n2、n3列包括在另一个垂直分区中。分区回调函数运行按计算值范围取整的分区算法:按每10000的范围分区,则计算值51000/10000取整,得到水平分区值为5。根据垂直分区的列范围,待分区的key-value数据的value包含的列n0,n1属于垂直分区值0;列n2,n3属于垂直分区值1。一种较优的分区后的子数据库命名规则为:“原数据库名”+“_”+“垂直分区值”+“_”+“水平分区值”。通过该规则命名出的子数据库的名称中包括了水平分区值信息和垂直分区值信息。则最终分区后的输出参数中的子数据库的名称为“testtable_0_5”和“testtable_1_5”。输出参数中的服务器信息可根据水平分区值按范围获得:比如水平分区值为0-100000的子数据库在192.168.0.1端口21001上,则输出参数中的服务器信息包括:IP地址192.168.0.1、端口信息21001。因此,分区回调函数的输出参数包括:子数据库名称“testtable_0_5”和“testtable_1_5”,以及子数据库所在服务器的信息:IP地址192.168.0.1、端口信息21001。
S104:根据输出参数对待分区的key-value数据进行操作。
具体地,如果待分区的key-value数据为待存储的key-value数据,则根据所述输出参数将所述待存储的key-value数据存储到相应的子数据库中,即将待存储的key-value数据存储到所述输出参数所指示的子数据库中。如果待分区的key-value数据为待查询的key-value数据,则根据所述计算值在所述输出参数所指示的子数据库中查找到所述key-value数据。
从上述步骤可以看出,根据输出参数对key-value数据进行存储或查询的过程中,同时实现了对该key-value数据进行分区的过程。或者说,先确定key-value数据的分区,根据确定的分区的子数据库的信息对key-value数据进行存储或查询。
这样,随着数据库中存储的key-value数据越来越多,每个key-value数据均按照分区信息基础表的分区算法进行分区存储。假设将上述举例的md5值取余的分区算法称为md5值取余A算法,如果随着存储量越来越大,又扩展了两个服务器,每个服务器有两个端口,则扩展后共有8个服务实例,假设后扩展的4个服务实例的编号分别为4、5、6、7。扩展了服务器后,希望能够对分区方式进行改变,以适应更大的数据量的存储,则在进行后续的数据存储过程中可以采用新的分区算法——md5值取余B算法:修改分区信息基础表中的分区算法信息,使得分区算法信息指示出采用md5值取余B算法;并且,修改分区信息基础表中的分区数目信息为64。
在修改了分区信息基础表后,在存储新的key-value数据时,采用如上所述的步骤S101-S104,将根据新的分区算法——md5值取余B算法,对新的key-value数据进行分区、存储。具体地,在执行步骤S102中,分区功能模块传送给分区回调函数的输入参数中的计算值,除了待分区的key-value数据的key值外,还包括key-value数据的value中的时间值。在执行步骤S103中,分区回调函数根据分区算法信息运行md5值取余B算法时,md5值取余B算法先确定计算值中的value中的时间值,如果value中的时间值小于20121221,则:确定key值的md5值,取md5值的后两位,将其转为10进制值后除以分区总数64,得到的余数作为输出参数的水平分区值。md5值取余B算法中,将水平分区值为0-31的key-value数据分区到编号为0、1、2、3的服务实例中,将水平分区值为0-31的key-value数据分区到编号为0、1、2、3的服务实例中,并返回新的key-value数据被分区的子数据库的信息。
否则,确定key值的md5值,取md5值的后两位,将其转为10进制值后除以分区总数64,得到的余数作为输出参数的水平分区值。md5值取余B算法中,将水平分区值为0-31的key-value数据分区到编号为4、5、6、7的服务实例中,将水平分区值为0-31的key-value数据分区到编号为4、5、6、7的服务实例中,并返回新的key-value数据被分区的子数据库的信息。
这样,即使在创建数据库的时候已经分过区了,在之后的数据库应用中,如存储、查询数据时,也可通过更改分区信息基础表中的相关信息,如分区算法信息、分区数目信息等,实现对数据库的分区方式的改变,使得数据库在适应具体业务需求时具有更大的灵活性。而且,本发明实施例的分区方法不仅限于依据分区数目(即待分区的个数)进行分区,分区的算法灵活多样,既可以分区的总数固定,也可不固定分区的总数,从而更进一步提高数据库分区的灵活性。
本发明实施例提供的在key-value数据库中进行数据分区的装置,如图2所示,包括:分区功能模块201、分区回调函数模块202。
分区功能模块201用于从分区信息基础表中解析出分区数目信息和分区算法信息;将所述分区数目信息和分区算法信息,以及计算值作为输入参数传送给分区回调函数模块202;所述计算值为与待分区的key-value数据相关的值。进一步,分区功能模块201还可从分区信息基础表中还解析出垂直分区信息、水平分区信息;并还将垂直分区信息、水平分区信息也作为输入参数的一部分传送给分区回调函数模块202。
分区回调函数模块202用于根据分区功能模块201传送的输入参数中的分区算法信息调用相应的分区算法单元,调用的分区算法单元根据所述分区数目信息和计算值进行运算,得到输出参数;所述输出参数中包含有所述待分区的key-value数据所分区的子数据库的信息。
进一步,所述key-value数据库中进行数据分区的装置还包括:数据存储模块203。
数据存储模块203用于将待存储的key-value数据作为所述待分区的key-value数据,并将与待存储的key-value数据相关的值作为计算值传送给所述分区功能模块201;以及
数据存储模块203还用于根据所述分区回调函数模块202的输出参数将所述待存储的key-value数据存储到相应的子数据库中。
进一步,所述key-value数据库中进行数据分区的装置还包括:数据查询模块204。
数据查询模块204用于将待查询的key-value数据相关的值作为计算值传送给所述分区功能模块201;以及
数据查询模块204还用于根据所述计算值在所述分区回调函数模块202的输出参数所指示的子数据库中查找到所述待查询的key-value数据。
进一步,所述key-value数据库中进行数据分区的装置还包括:分区信息基础表维护模块205。
分区信息基础表维护模块205用于接收用户输入的分区数目信息、分区算法信息、垂直分区信息、水平分区信息;并根据输入的分区数目信息、分区算法信息、垂直分区信息、水平分区信息生成所述分区信息基础表并进行保存。具体地,分区信息基础表维护模块205提供分区信息基础表中的信息的输入界面、修改界面,用户可以通过输入界面、修改界面,对分区信息基础表中的分区数目信息、分区算法信息、垂直分区信息、水平分区信息进行输入或修改,比如,修改分区算法信息,从而实现在之后的数据存储、查询过程中变换分区方式。
本发明实施例的key-value数据库中进行数据分区的装置中的各模块所涉及的具体工作过程,可以参考上述图1所示的数据分区方法所公开的相关内容,此处不再赘述。
作为一种优选方式,上述的key-value数据库具体可以是Berkeley(伯克利)数据库。
本发明实施例由于将分区数目信息和分区算法信息记录在分区信息基础表中,并在对key-value数据进行操作时,如存储和查询操作时,根据分区信息基础表中记录的内容对key-value数据分区,确定分区子数据库,从而可以通过修改分区信息基础表中的内容,实现分区方式的灵活变更。这样,即使在创建数据库的时候已经分过区了,在之后的数据库应用中,如存储、查询数据时,也可通过更改分区信息基础表中的相关信息,如分区算法信息、分区数目信息等,实现对数据库的分区方式的改变,使得数据库在适应具体业务需求时具有更大的灵活性。而且,本发明实施例的分区方法不仅限于依据分区数目(即待分区的个数)进行分区,分区的算法灵活多样,既可以分区的总数固定,也可不固定分区的总数,从而更进一步提高数据库分区的灵活性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种在键-值key-value数据库中进行数据分区的方法,包括:
从预先保存的分区信息基础表中解析出分区数目信息和分区算法信息;
调用分区回调函数,并将输入参数传送给所述分区回调函数;其中,所述输入参数包括所述分区数目信息和分区算法信息,以及计算值,所述计算值为与待分区的key-value数据相关的值;
所述分区回调函数根据所述分区算法信息运行相应分区算法,该相应分区算法根据所述分区数目信息和计算值进行运算,得到输出参数;所述输出参数中包含所述待分区的key-value数据所被分区的子数据库的信息。
2.如权利要求1所述的方法,其特征在于,所述待分区的key-value数据具体为待存储的key-value数据;以及,
在所述得到输出参数之后,还包括:
根据所述输出参数将所述待存储的key-value数据存储到相应的子数据库中。
3.如权利要求1所述的方法,其特征在于,所述待分区的key-value数据具体为待查询的key-value数据;以及,
在所述得到输出参数之后,还包括:
根据所述计算值在所述输出参数所指示的子数据库中查找所述key-value数据。
4.如权利要求1-3任一所述的方法,其特征在于,在从预先保存的分区信息基础表中解析出分区数目信息和分区算法信息时,还包括:
从所述分区信息基础表中解析出垂直分区信息、水平分区信息;以及,
在所述分区回调函数根据所述分区算法信息运行相应分区算法时,还包括:
该相应分区算法还根据所述垂直分区信息、水平分区信息进行运算。
5.如权利要求4所述的方法,其特征在于,所述子数据库的信息包括:子数据库的名称,以及子数据库所在服务器的信息;其中,所述子数据库的名称中包含有水平分区值信息和垂直分区值信息。
6.如权利要求5所述的方法,其特征在于,所述分区算法信息具体是键key算法、哈希hash算法、范围range算法、列表list算法,或自定义的算法;以及
所述分区数目信息具体指示出分区总数为固定值,或指示出分区总数不固定;以及
所述key-value数据库具体为伯克利Berkeley数据库。
7.一种在键-值key-value数据库中进行数据分区的装置,包括:
分区功能模块,用于从分区信息基础表中解析出分区数目信息和分区算法信息;将所述分区数目信息和分区算法信息,以及计算值作为输入参数进行传送;所述计算值为与待分区的key-value数据相关的值;
分区回调函数模块,用于根据所述分区功能模块传送的输入参数中的分区算法信息调用相应的分区算法单元,调用的分区算法单元根据所述分区数目信息和计算值进行运算,得到输出参数;所述输出参数中包含所述待分区的key-value数据所被分区的子数据库的信息。
8.如权利要求7所述的装置,其特征在于,还包括:
数据存储模块,用于将待存储的key-value数据作为所述待分区的key-value数据,并将与待存储的key-value数据相关的值作为计算值传送给所述分区功能模块;以及
所述数据存储模块还用于根据所述分区回调函数模块的输出参数将所述待存储的key-value数据存储到相应的子数据库中。
9.如权利要求7所述的装置,其特征在于,还包括:
数据查询模块,用于将待查询的key-value数据相关的值作为计算值传送给所述分区功能模块;以及
所述数据查询模块还用于根据所述计算值在所述分区回调函数模块的输出参数所指示的子数据库中查找到所述key-value数据。
10.如权利要求7-9任一所述的装置,其特征在于,
所述分区功能模块还用于从分区信息基础表中还解析出垂直分区信息、水平分区信息;以及,
所述装置,还包括:
分区信息基础表维护模块,用于接收用户输入的分区数目信息、分区算法信息、垂直分区信息、水平分区信息;并根据输入的分区数目信息、分区算法信息、垂直分区信息、水平分区信息生成所述分区信息基础表并进行保存。
CN201210212320.4A 2012-06-21 2012-06-21 在key-value数据库中进行数据分区的方法和装置 Active CN102799628B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210212320.4A CN102799628B (zh) 2012-06-21 2012-06-21 在key-value数据库中进行数据分区的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210212320.4A CN102799628B (zh) 2012-06-21 2012-06-21 在key-value数据库中进行数据分区的方法和装置

Publications (2)

Publication Number Publication Date
CN102799628A CN102799628A (zh) 2012-11-28
CN102799628B true CN102799628B (zh) 2015-10-07

Family

ID=47198738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210212320.4A Active CN102799628B (zh) 2012-06-21 2012-06-21 在key-value数据库中进行数据分区的方法和装置

Country Status (1)

Country Link
CN (1) CN102799628B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189503B2 (en) * 2012-12-06 2015-11-17 Microsoft Technology Licensing, Llc Database scale-out
CN103370113B (zh) * 2012-12-12 2016-03-09 华为技术有限公司 数据存储方法及系统
CN103885887B (zh) * 2012-12-21 2018-07-27 腾讯科技(北京)有限公司 用户数据存储方法、读取方法及系统
CN103176750B (zh) * 2013-02-27 2016-01-20 武汉虹旭信息技术有限责任公司 基于交错时间分区的移动互联网数据存储系统及其方法
CN103218455B (zh) * 2013-05-07 2014-04-16 中国人民解放军国防科学技术大学 Key-Value数据库用户请求的高速并发处理方法
CN103336792B (zh) * 2013-06-07 2016-11-23 华为技术有限公司 数据分区方法和装置
US9323796B2 (en) 2013-06-07 2016-04-26 Huawei Technologies Co., Ltd. Data partitioning method and apparatus
CN103324732B (zh) * 2013-06-29 2016-06-29 优视科技有限公司 Mysql数据库水平切分方法、mysql连接建立方法及装置
CN103699676B (zh) * 2013-12-30 2017-02-15 厦门市美亚柏科信息股份有限公司 基于mssql server表分区及自动维护方法及系统
CN104199881B (zh) * 2014-08-21 2018-07-06 广州华多网络科技有限公司 数据库集群、数据查询方法、数据同步方法和装置
CN106164898B (zh) * 2014-10-11 2018-06-26 华为技术有限公司 数据处理方法和装置
CN109918021B (zh) * 2014-11-05 2022-01-07 超聚变数字技术有限公司 数据处理方法和装置
CN105786938A (zh) 2014-12-26 2016-07-20 华为技术有限公司 一种对大数据进行处理的方法和装置
CN106326309B (zh) * 2015-07-03 2020-02-21 阿里巴巴集团控股有限公司 一种数据查询方法和装置
CN106383826A (zh) * 2015-07-29 2017-02-08 阿里巴巴集团控股有限公司 数据库查询方法和装置
US10496614B2 (en) * 2015-10-07 2019-12-03 Oracle International Corporation DDL processing in shared databases
CN105183922A (zh) * 2015-10-26 2015-12-23 北京美数信息科技有限公司 一种高并发的存储装置
CN105205178A (zh) * 2015-10-26 2015-12-30 北京美数信息科技有限公司 一种多进程访问内存数据库系统
CN105354316A (zh) * 2015-11-12 2016-02-24 南京移腾电力技术有限公司 一种电力系统实时数据库快速访问方法
CN106776598B (zh) * 2015-11-19 2019-12-13 中国移动通信集团公司 一种信息处理方法及装置
CN106933928B (zh) * 2015-12-31 2019-12-10 北京国双科技有限公司 基于外部数据文件的任务存储方法及装置
CN105956164A (zh) * 2016-05-19 2016-09-21 海尔优家智能科技(北京)有限公司 一种存储数据的方法、装置及其对应的系统
CN107239485A (zh) * 2017-04-18 2017-10-10 北京小度信息科技有限公司 数据库操作方法、装置及系统
CN109117423B (zh) * 2017-06-23 2022-05-03 阿里巴巴集团控股有限公司 数据库系统的表格分区配置方法、装置和系统
CN110069488A (zh) * 2017-09-30 2019-07-30 北京国双科技有限公司 一种数据存储方法、数据读取方法及其装置
CN110109931B (zh) * 2017-12-27 2021-08-24 航天信息股份有限公司 一种用于防止rac实例间数据访问发生冲突的方法及系统
CN108491294B (zh) * 2018-03-15 2022-11-25 中国银行股份有限公司 一种数据库备份方法、装置及系统
CN110968652B (zh) * 2019-12-05 2020-07-17 南京甄视智能科技有限公司 基于关系型数据库索引的自动运维系统和方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8145872B2 (en) * 2004-11-08 2012-03-27 International Business Machines Corporation Autonomic self-tuning of database management system in dynamic logical partitioning environment
CN101145158A (zh) * 2007-06-06 2008-03-19 中兴通讯股份有限公司 一种数据库表分区的方法
CN101436192B (zh) * 2007-11-16 2011-03-16 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备
US8645423B2 (en) * 2008-05-02 2014-02-04 Oracle International Corporation Method of partitioning a database
CN101876983B (zh) * 2009-04-30 2012-11-28 国际商业机器公司 数据库分区方法与系统
CN101727489A (zh) * 2009-12-17 2010-06-09 中国电力科学研究院 一种库表分区代码存储方法及装置
CN102004761B (zh) * 2010-11-01 2012-12-26 青岛普加智能信息有限公司 数据存储方法和系统
CN102156714B (zh) * 2011-03-22 2012-11-14 清华大学 实现自适应垂直划分的关系型数据库的方法及系统

Also Published As

Publication number Publication date
CN102799628A (zh) 2012-11-28

Similar Documents

Publication Publication Date Title
CN102799628B (zh) 在key-value数据库中进行数据分区的方法和装置
CN107219997B (zh) 一种用于验证数据一致性的方法及装置
CN103019960B (zh) 分布式缓存方法及系统
CN105512200A (zh) 一种分布式数据库处理的方法和设备
CN106294352B (zh) 一种文件处理方法、装置和文件系统
CN105045877A (zh) 数据库数据分片存储方法和装置、数据查询方法和装置
CN110147407B (zh) 一种数据处理方法、装置及数据库管理服务器
CN103384256A (zh) 一种云存储方法及装置
CN105025053A (zh) 基于云存储技术的分布式文件的上传方法及其系统
CN107181686B (zh) 路由表的同步方法、装置及系统
CN102053982A (zh) 一种数据库信息管理方法和设备
CN110471923B (zh) 一种区块链交易记录的处理方法及装置
CN105550371A (zh) 一种面向大数据环境的元数据组织方法和系统
CN104077423A (zh) 一种基于一致性散列的结构化数据存储、查询和迁移方法
CN102915382A (zh) 一种基于索引的数据库的数据查询方法和装置
CN102739622A (zh) 一种可扩展的数据存储系统
CN104111924A (zh) 一种数据库系统
CN104598517A (zh) 基于普通数据库的树型结构表的存储与查询技术
US20130159347A1 (en) Automatic and dynamic design of cache groups
CN104301233A (zh) 路由访问方法、路由访问系统及用户终端
CN102831223A (zh) 一种分布式数据库的管理方法和系统
CN102202087A (zh) 一种标识存储设备的方法及系统
CN106471501A (zh) 数据查询的方法、数据对象的存储方法和数据系统
CN109800236A (zh) 支持多节点的分布式缓存方法及设备
CN102497286A (zh) 一种mib匹配方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230419

Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Patentee after: Sina Technology (China) Co.,Ltd.

Address before: 100080, International Building, No. 58 West Fourth Ring Road, Haidian District, Beijing, 20 floor

Patentee before: Sina.com Technology (China) Co.,Ltd.

TR01 Transfer of patent right