CN103345521A - 一种在哈希表数据库中处理键值的方法和装置 - Google Patents
一种在哈希表数据库中处理键值的方法和装置 Download PDFInfo
- Publication number
- CN103345521A CN103345521A CN2013103008157A CN201310300815A CN103345521A CN 103345521 A CN103345521 A CN 103345521A CN 2013103008157 A CN2013103008157 A CN 2013103008157A CN 201310300815 A CN201310300815 A CN 201310300815A CN 103345521 A CN103345521 A CN 103345521A
- Authority
- CN
- China
- Prior art keywords
- value
- key
- array
- concordance list
- read
- 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
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000012545 processing Methods 0.000 title claims abstract description 11
- 238000012217 deletion Methods 0.000 claims description 66
- 230000037430 deletion Effects 0.000 claims description 66
- 238000003780 insertion Methods 0.000 claims description 50
- 230000037431 insertion Effects 0.000 claims description 50
- 238000005516 engineering process Methods 0.000 description 88
- 230000009471 action Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 14
- 230000015572 biosynthetic process Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000010845 search algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000035800 maturation Effects 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种在哈希表数据库中处理键值的方法和装置。在哈希表数据库中插入键值的方法包括如下步骤:接收对哈希表数据库的集合数据表的插入键值请求;判断在集合标识索引表中是否存在由插入键值请求中的待插入第一键和待插入第一值构成的第二键,如果存在,则进行以下的步骤:在集合标识索引表中插入所述插入键值请求中包括的待插入第二值;在集合属性索引表中的第三值数组中插入由所述插入键值请求中包括的待插入第二值和待插入属性字段数据构成的待插入第三值;在集合数据表中的第四值数组中插入所述插入键值请求中包括的待插入第四值。通过本发明,可以实现互联网场景下集合数据操作的高并发性和低延迟性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及数据库技术领域,尤其涉及一种在哈希表数据库中处理键值的方法和装置。
背景技术
当前,键值对(Key-Value)存储系统成为了数据库技术领域研发和应用的热点。作为传统关系型数据库的重要补充,键值对(Key-Value)存储系统不再支持传统关系型数据库的SQL(Structured Query Language)语句的复杂功能,并放弃了ACID(即,在数据库管理系统中的事务具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))的完整支持,因此,键值对存储系统规避了很大一部分复杂的设计,可以提供明显高于传统关系数据库的数据吞吐能力,具有良好的水平扩展能力,适合运行在一般的廉价PC服务器硬件上,在互联网公司的数据存储已经获得广泛的使用。
图1是键值对(Key-Value)存储模块的基本组织结构示意图。由图1可见,键(Key)和值(Value)是一一对应的,通过哈希表维护对应关系,依据键(Key)获得唯一的对应值(Value)的步骤为:1)对键(Key)取哈希值,获得在哈希表中的唯一节点;2)哈希表中的唯一节点记录了对应值(Value)的存储信息,依据该信息获得值(Value)。
对于持续增加的存储数据而言,键值对(Key-Value)存储系统具有很好的水平扩展能力。图2是对图1中的键值对存储模块进行扩展后的分布式存储架构示意图。在图2中,对于一个存储请求的处理流程为:1)接口路由模块202依据从存储请求方201接收到的存储请求中的Key,按照路由规则,将存储请求转发到相应的键值对存储模块203;2)键值对存储模块203处理存储请求。其中,路由规则可以使用整数取模和一致性哈希等成熟方法,但不限于使用这些成熟方法。
在数据存储的互联网应用场景中,还存在对集合数据的使用。集合数据指的是集合中所包含的一系列具有同样特性并且值不重复的数据。每一个集合和集合中的每一个集合数据,均可以使用一个唯一标识来表示。图3是集合与集合数据的关系示意图,其中,使用key1作为集合标识,使用key2作为集合中的集合数据301的集合数据标识,集合数据301还进一步包括多个属性字段3011,且不同的集合数据具有不同的集合数据标识key2。在互联网应用场景中,典型的集合数据的应用场景例如:
1)QQ好友关系链,此时集合标识key1为某个用户的QQ号码,集合数据标识key2为该用户的QQ好友的QQ号码;
2)微博应用中的粉丝与关注人,此时集合标识key1为某用户的微博帐号,集合数据标识key2为该用户的粉丝或关注人的微博帐号;
3)企业即时通讯中的员工信息,此时集合标识key1为企业帐号,集合数据标识key2为该企业下属的员工帐号。
在互联网应用场景中,对集合数据的使用有两个典型特点:
1)如图3所示,集合数据标识key2所代表的集合数据301,通常是包含多个属性字段3011的列式数据,比如在QQ好友关系链的应用场景中,除了要记录某个用户的QQ号码下的所有QQ好友的QQ号码,还需要记录每个QQ好友的一些基本信息,如昵称、性别、所在地等;
2)在集合下的集合数据是多个属性字段的列式数据的情况下,在某些场合需要按照某特定属性字段进行检索,同样以QQ好友关系链的应用场景为例,通常需要依据某特定属性字段例如“所在地”,快速检索满足相应条件的QQ好友信息。
基于互联网的海量应用(例如上述QQ、微博之类的社交应用),正在不断催生出海量的集合数据,同时又会带来海量的读写量。如何根据互联网应用场景中集合数据自身的特点来存储这些集合数据,以及如何提供高并发的读写服务,是基于互联网的数据存储领域面临的问题。
发明内容
有鉴于此,本发明实施例提供一种改进的在哈希表数据库中处理键值的方法和装置,来解决以上背景技术部分提到的技术问题。
一方面,本发明实施例提供了一种在哈希表数据库中插入键值的方法,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的插入键值请求,其中,所述插入键值请求包括:待插入第一键、待插入第一值、待插入第二值、待插入属性字段名称、待插入属性字段数据、待插入第四值;
判断在所述集合标识索引表中是否存在由所述待插入第一键和所述待插入第一值构成的第二键,如果不存在,则在所述集合表的所述待插入第一键所对应的所述第一值数组中插入所述待插入第一值并且在所述集合标识索引表中插入由所述待插入第一键和所述待插入第一值构成的第二键;而如果存在,则直接进行以下的步骤;
在所述集合标识索引表中的、与由所述待插入第一键和所述待插入第一值构成的第二键对应的第二值数组中插入所述待插入第二值;
在所述集合属性索引表中的、与由所述待插入第一键、所述待插入第一值和所述待插入属性字段名称构成的第三键对应的第三值数组中插入由所述待插入第二值和所述待插入属性字段数据构成的待插入第三值;
在所述集合数据表中的、与由所述待插入第一键、所述待插入第一值和所述待插入第二值构成的第四键对应的第四值数组中插入所述待插入第四值。
一方面,本发明实施例提供了一种在哈希表数据库中更新键值的方法,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的更新键值请求,其中,所述更新键值请求包括:待更新第一键、待更新第一值、待更新第二值、待更新属性字段名称、所述待更新属性字段名称下的原始属性字段数据、所述待更新属性字段名称下的待更新属性字段数据、待更新第四值;
在所述集合属性索引表中的、与由所述待更新第一键、所述待更新第一值和所述待更新属性字段名称构成的第三键对应的第三值数组中,首先删除由所述待更新第二值和所述原始属性字段数据构成的第三值,然后插入由所述待更新第二值和所述待更新属性字段数据构成的第三值;
在所述集合数据表中的、与由所述待更新第一键、所述待更新第一值和所述待更新第二值构成的第四键对应的第四值数组中,利用所述待更新第四值替换对应的原第四值。
一方面,本发明实施例提供了一种在哈希表数据库中删除键值的方法,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的删除键值请求,其中,所述删除键值请求包括:待删除第一键、待删除第一值、待删除第二值、待删除属性字段名称、待删除属性字段数据;
在所述集合数据表中,删除与由所述待删除第一键、所述待删除第一值和所述待删除第二值构成的第四键对应的第四值数组;
在所述集合属性索引表中的、与由所述待删除第一键、所述待删除第一值和所述待删除属性字段名称构成的第三键对应的第三值数组中,删除由所述待删除第二值和所述待删除属性字段数据构成的第三值;
在所述集合标识索引表中的、与由所述待删除第一键和所述待删除第一值构成的第二键对应的第二值数组中,删除所述待删除第二值。
一方面,本发明实施例提供了一种在哈希表数据库中读取键值的方法,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取第二值;
在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
一方面,本发明实施例提供了一种在哈希表数据库中读取键值的方法,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取属性字段名称、待读取属性字段数据;
在所述集合属性索引表中的、与由所述待读取第一键、所述待读取第一值和所述待读取属性字段名称构成的第三键对应的第三值数组中,查询得到与所述待读取属性字段数据对应的待查询第三值,并从所述待查询第三值中获得第二值作为待读取第二值;
在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
一方面,本发明实施例提供了一种在哈希表数据库中读取键值的方法,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键和待读取第一值;
在所述集合标识索引表中,查询得到与由所述待读取第一键和所述待读取第一值构成的第二键对应的第二值数组作为待读取第二值数组;
对于所述待读取第二值数组中的每一个待读取第二值,在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
一方面,本发明实施例提供了一种在哈希表数据库中插入键值的装置,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的插入键值请求,其中,所述插入键值请求包括:待插入第一键、待插入第一值、待插入第二值、待插入属性字段名称、待插入属性字段数据、待插入第四值;
判断模块,用于判断在所述集合标识索引表中是否存在由所述待插入第一键和所述待插入第一值构成的第二键,如果不存在,则在所述集合表的所述待插入第一键所对应的所述第一值数组中插入所述待插入第一值并且在所述集合标识索引表中插入由所述待插入第一键和所述待插入第一值构成的第二键;而如果存在,则直接调用以下的模块;
集合标识索引表插入模块,用于在所述集合标识索引表中的、与由所述待插入第一键和所述待插入第一值构成的第二键对应的第二值数组中插入所述待插入第二值;
集合属性索引表插入模块,用于在所述集合属性索引表中的、与由所述待插入第一键、所述待插入第一值和所述待插入属性字段名称构成的第三键对应的第三值数组中插入由所述待插入第二值和所述待插入属性字段数据构成的待插入第三值;
集合数据表插入模块,用于在所述集合数据表中的、与由所述待插入第一键、所述待插入第一值和所述待插入第二值构成的第四键对应的第四值数组中插入所述待插入第四值。
一方面,本发明实施例提供了一种在哈希表数据库中更新键值的装置,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的更新键值请求,其中,所述更新键值请求包括:待更新第一键、待更新第一值、待更新第二值、待更新属性字段名称、所述待更新属性字段名称下的原始属性字段数据、所述待更新属性字段名称下的待更新属性字段数据、待更新第四值;
集合属性索引表处理模块,用于在所述集合属性索引表中的、与由所述待更新第一键、所述待更新第一值和所述待更新属性字段名称构成的第三键对应的第三值数组中,首先删除由所述待更新第二值和所述原始属性字段数据构成的第三值,然后插入由所述待更新第二值和所述待更新属性字段数据构成的第三值;
集合数据表处理模块,用于在所述集合数据表中的、与由所述待更新第一键、所述待更新第一值和所述待更新第二值构成的第四键对应的第四值数组中,利用所述待更新第四值替换对应的原第四值。
一方面,本发明实施例提供了一种在哈希表数据库中删除键值的装置,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的删除键值请求,其中,所述删除键值请求包括:待删除第一键、待删除第一值、待删除第二值、待删除属性字段名称、待删除属性字段数据;
集合数据表删除模块,用于在所述集合数据表中,删除与由所述待删除第一键、所述待删除第一值和所述待删除第二值构成的第四键对应的第四值数组;
集合属性索引表删除模块,用于在所述集合属性索引表中的、与由所述待删除第一键、所述待删除第一值和所述待删除属性字段名称构成的第三键对应的第三值数组中,删除由所述待删除第二值和所述待删除属性字段数据构成的第三值;
集合标识索引表删除模块,用于在所述集合标识索引表中的、与由所述待删除第一键和所述待删除第一值构成的第二键对应的第二值数组中,删除所述待删除第二值。
一方面,本发明实施例提供了一种在哈希表数据库中读取键值的装置,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取第二值;
读取模块,用于在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
一方面,本发明实施例提供了一种在哈希表数据库中读取键值的装置,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取属性字段名称、待读取属性字段数据;
第二值获取模块,用于在所述集合属性索引表中的、与由所述待读取第一键、所述待读取第一值和所述待读取属性字段名称构成的第三键对应的第三值数组中,查询得到与所述待读取属性字段数据对应的待查询第三值,并从所述待查询第三值中获得第二值作为待读取第二值;
读取模块,用于在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
一方面,本发明实施例提供了一种在哈希表数据库中读取键值的装置,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键和待读取第一值;
查询模块,用于在所述集合标识索引表中,查询得到与由所述待读取第一键和所述待读取第一值构成的第二键对应的第二值数组作为待读取第二值数组;
读取模块,用于对于所述待读取第二值数组中的每一个待读取第二值,在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
本发明提出的在哈希表数据库中处理键值的方法和装置具有如下特点:通过根据集合数据自身的特点来在哈希表数据库的各个哈希表中存储集合数据,以及针对所述哈希表数据库的各个哈希表的结构提供对集合数据进行插入、更新、删除、读取的方法,实现了互联网场景下集合数据操作的高并发性和低延迟性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是是键值对(Key-Value)存储模块的基本组织结构示意图;
图2是对图1中的键值对存储模块进行扩展后的分布式存储架构示意图;
图3是集合与集合数据的关系示意图;
图4a是根据本发明实施例的集合表的示意图;
图4b是根据本发明实施例的集合标识索引表的示意图;
图4c是根据本发明实施例的集合属性索引表的示意图;
图4d是根据本发明实施例的集合数据表的示意图;
图5是根据本发明第一实施例的在哈希表数据库中插入键值的方法的实现流程;
图6是根据本发明第二实施例的在哈希表数据库中更新键值的方法的实现流程;
图7是根据本发明第三实施例的在哈希表数据库中删除键值的方法的实现流程;
图8是根据本发明第四实施例的在哈希表数据库中读取键值的方法的实现流程;
图9是根据本发明第五实施例的在哈希表数据库中读取键值的方法的实现流程;
图10是根据本发明第六实施例的在哈希表数据库中读取键值的方法的实现流程;
图11是根据本发明第七实施例的在哈希表数据库中插入键值的装置的结构示意图;
图12是根据本发明第八实施例的在哈希表数据库中更新键值的装置的结构示意图;
图13是根据本发明第九实施例的在哈希表数据库中删除键值的装置的结构示意图;
图14是根据本发明第十实施例的在哈希表数据库中读取键值的装置的结构示意图;
图15是根据本发明第十一实施例的在哈希表数据库中读取键值的装置的结构示意图;
图16是根据本发明第十二实施例的在哈希表数据库中读取键值的装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
在描述本发明的以下各个实施例之前,先对本发明的以下各个实施例都涉及到的哈希表数据库的结构进行说明。以下各个实施例中的所述哈希表数据库至少包括如下哈希表:集合表(以下各个实施例中示例性命名为“set”表)、集合标识索引表(以下各个实施例中示例性命名为“key”表)、集合属性索引表(以下各个实施例中示例性命名为“attribute”表)、集合数据表(以下各个实施例中示例性命名为“data”表),其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一。
以如下的集合表“set”、集合标识索引表“key”、集合属性索引表“attribute”、集合数据表“data”为例,来对上文所述的哈希表数据库中各个表的关联关系进行示例性地说明。
在图4a中示出了根据本发明实施例的集合表“set”的示意图。
参考图4a,集合表“set”存储了某个集合类别(对应于第一键)下所包含的所有集合标识(对应于第一值数组)。例如,如果集合表“set”存储了名称为“QQ号”的特定的集合类别,则所述集合表“set”相应存储的所有集合标识可以为由多个QQ号组成的数组;或者,如果集合表“set”存储了名称为“部门员工社保帐号”的特定的集合类别,则所述集合表“set”相应存储的所有集合标识可以为由多个员工社保帐号组成的数组。
如图4a所示,在集合表“set”中,使用集合类别的名称“set_name”作为第一键,该集合类别“set_name”下、由所有集合标识“key1”(第一值)组成的数组作为第一值数组。所述第一键和所述第一值数组构成集合表“set”存储的键值对。
在图4b中示出了根据本发明实施例的集合标识索引表“key”的示意图。
参考图4b,集合标识索引表“key”存储了某个集合(对应于第二键)下所包含的所有集合数据标识(对应于第二值数组)。例如,如果集合标识索引表“key”用于存储名称为“主QQ号”的特定集合下所包含的所有集合数据标识,则所述所有集合数据标识可以为由“主QQ号”的所有好友QQ号组成的数组。
如图4b所示,在集合标识索引表“key”中,使用集合类别的名称“set_name”和集合标识“key1”共同作为第二键,所有集合数据标识“key2”组成的数组作为第二值数组。所述第二键和所述第二值数组构成集合标识索引表“key”存储的键值对。
在图4c中示出了根据本发明实施例的集合属性索引表“attribute”的示意图。
参考图4c,集合属性索引表“attribute”存储了特定属性字段的索引信息。在图4c所示的集合属性索引表“attribute”中,使用集合类别的名称“set_name”、集合标识“key1”和特定的属性字段名称“attribute_name”共同作为第三键,集合数据标识“key2”和所述属性字段名称“attribute_name”下的属性字段数据(即,名称为“attribute_name”的属性字段的值)作为第三值。所述第三键和第三值数组构成集合属性索引表“attribute”存储的键值对。
在图4d中示出了根据本发明实施例的集合数据表“data”的示意图。
参考图4d,集合数据表“data”存储了具体的集合数据内容。在图4d所示的集合数据表“data”中,使用集合类别的名称“set_name”、集合标识“key1”和集合数据标识“key2”共同作为第四键,具体的集合数据内容作为第四值,所述第四值所代表的数据记录包括至少一个属性字段,可以从所述至少一个属性字段的各个属性字段名称中选择一个属性字段名称作为集合属性索引表“attribute”中的属性字段名称“attribute_name”。所述第四键和第四值数组构成集合数据表“data”存储的键值对。
结合上述哈希表数据库的结构,在下文中阐述各个具体的实施例。
在图5中示出了本发明的第一实施例。
图5为根据本发明第一实施例的在哈希表数据库中插入键值的方法的实现流程500,该实现流程500详述如下:
在步骤501中,接收对哈希表数据库的集合数据表的插入键值请求。
在第一实施例中,托管上述哈希表数据库的服务器可以直接从本地读取数据库工程师预先提供的插入键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的插入键值请求语句或文档。其中,所述插入键值请求包括:待插入第一键,即集合表“set”的要进行插入操作的特定集合类别的名称,在此假定其为“set_name_insert”;待插入第一值,即集合表“set”的要进行插入操作的特定集合标识,在此假定其为“key1_insert”;待插入第二值,即集合标识索引表“key”的要进行插入操作的特定集合数据标识,在此假定其为“key2_insert”;待插入属性字段名称,即集合属性索引表“attribute”的要进行插入操作的特定的属性字段名称,在此假定其为“attribute_name_insert”;待插入属性字段数据,即要进行插入操作的名称为“attribute_name_insert”的属性字段的值,在此假定其为“attribute_value_insert”;待插入第四值,即要插入到集合数据表“data”中的数据记录。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在步骤502中,判断在上述集合标识索引表中是否存在由上述待插入第一键和上述待插入第一值构成的第二键,如果不存在则对上述集合表和上述集合标识索引表进行预处理。
在第一实施例中,托管上述哈希表数据库的服务器在接收到上述插入键值请求之后,首先对上述集合标识索引表“key”中是否存在由上述待插入第一键和上述待插入第一值构成的第二键进行判断。也就是说,所述服务器将判断在集合标识索引表“key”中,是否存在由“set_name_insert”和“key1_insert”构成的第二键(在本实施例中,默认在集合表“set”中存在所述待插入第一键“set_name_insert”):
如果不存在,则表示在集合表“set”中,不存在集合标识“key1_insert”,由此,上述服务器将进行以下预处理:首先,在上述集合表“set”的所述待插入第一键“set_name_insert”所对应的所述第一值数组中插入所述待插入第一值“key1_insert”;其次,在上述集合标识索引表“key”中插入由所述待插入第一键“set_name_insert”和所述待插入第一值“key1_insert”构成的第二键。
如果存在,则表示在集合表“set”中存在集合标识“key1_insert”,上述实现流程直接跳转到以下的步骤503。
在步骤503中,对上述集合标识索引表进行插入操作。
在第一实施例中,上述待插入第一键“set_name_insert”和上述待插入第一值“key1_insert”构成了上述集合标识索引表“key”中的第二键。在本步骤中,托管上述哈希表数据库的服务器在上述集合标识索引表“key”中的、与所述第二键对应的第二值数组中插入所述待插入第二值“key2_insert”。
在步骤504中,对上述集合属性索引表进行插入操作。
在第一实施例中,上述待插入第一键“set_name_insert”、上述待插入第一值“key1_insert”和上述待插入属性字段名称“attribute_name_insert”构成了上述集合属性索引表“attribute”中的第三键。在本步骤中,托管上述哈希表数据库的服务器在上述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中插入由上述待插入第二值“key2_insert”和上述待插入属性字段数据“attribute_value_insert”(也就是名称为“attribute_name_insert”的待插入属性字段的值)构成的待插入第三值。
在步骤505中,对上述集合数据表进行插入操作。
在第一实施例中,上述待插入第一键“set_name_insert”、上述待插入第一值“key1_insert”和上述待插入第二值“key2_insert”构成了上述集合数据表“data”中的第四键。在本步骤中,托管上述哈希表数据库的服务器在所述集合数据表“data”中的、与所述第四键对应的第四值数组中插入所述待插入第四值。
以如下的已经包含有键值对的集合表“set”、集合标识索引表“key”、集合属性索引表“attribute”、集合数据表“data”为例,来对上文所述的插入键值的方法的实现流程500的进行示例性说明。
集合表“set”
在以上的集合表“set”中,集合表“set”的第一键“QQ类”表示QQ这一类型的即时通讯工具,相应的第一值(集合标识)例如“0001”在本表中表示将用于登录的主QQ号,并且,这些第一值“0001”、“0002”和“0003”共同组成了第一值数组,所述第一值数组作为与键“QQ类”对应的值;集合表“set”的第一键“msn类”表示msn这一类型的即时通讯工具,相应的第一值例如“miketencent.com”表示将用于登录的主msn号,并且,这些第一值“miketencent.com”、“billtencent.com”和“cattencent.com”共同组成了第一值数组,所述第一值数组作为与键“msn类”对应的值。
集合标识索引表“key”
在以上的集合标识索引表“key”中,集合标识索引表“key”的第二键由上述集合表“set”的第一键和第一值构成,例如,第二键“QQ类+0001”由集合表“set”的第一键“QQ类”和与所述第一键“QQ类”对应的一个第一值“0001”构成。与所述第二键“QQ类+0001”相应的第二值(集合数据标识)“40011”在本表中表示主QQ号“0001”(即,第二键中所包含的第一值)的好友QQ号,并且,这些第二值“40011”、“00012”和“00013”共同组成了第二值数组,所述第二值数组作为与键“QQ类+0001”对应的值。这里需要指出,在本发明的各个表格中出现的“+”号仅表示一种连接、组合或者关联关系,不应当被理解为数学运算符号“+”号。
集合属性索引表“attribute”
键 | 值 |
QQ类+0001+年龄 | (40011,26),(00012,21),(00013,37) |
QQ类+0001+性别 | (40011,男),(00012,女),(00013,男) |
QQ类+0002+年龄 | (12345,16),(45698,31),(54785,27) |
在以上的集合属性索引表“attribute”中,集合属性索引表“attribute”的第三键由上述集合表“set”的第一键、与所述第一键对应的一个第一值和属性字段名称构成,例如,第三键“QQ类+0001+年龄”由集合表“set”的第一键“QQ类”、与所述第一键“QQ类”对应的一个第一值“0001”和属性字段名称“年龄”构成。与所述第三键“QQ类+0001+年龄”相应的第三值“(40011,26)”在本表中表示主QQ号“0001”(即,第三键中所包含的第一值)的好友QQ号“40011”(即,与上述第二键“QQ类+0001”相应的一个第二值)所代表的好友的年龄是26岁。并且,这些第三值“(40011,26)”、“(00012,21)”和“(00013,37)”共同组成了第三值数组,所述第三值数组作为与键“QQ类+0001+年龄”对应的值。
集合数据表“data”
键 | 值 |
QQ类+0001+40011 | (40011,张三,男,26) |
QQ类+0001+00012 | (00012,李四,女,21) |
QQ类+0002+12345 | (12345,王五,女,16) |
在以上的集合数据表“data”中,集合数据表“data”的第四键由上述集合表“set”的第一键、与所述第一键对应的一个第一值和上述集合标识索引表“key”的一个第二值(所述第二值与由所述第一键和所述第一值构成第二键相对应)构成,例如,第四键“QQ类+0001+40011”由集合表“set”的第一键“QQ类”、与所述第一键“QQ类”对应的一个第一值“0001”和集合标识索引表“key”的一个第二值“40011”(所述第二值“40011”与由所述第一键“QQ类”和所述第一值“0001”构成的第二键“QQ类+0001”相对应)构成。与所述第四键“QQ类+0001+40011”相对应的第四值“(40011,张三,男,26)”在本表中表示主QQ号“0001”(即,第四键中所包含的第一值)的好友QQ号“40011”(即,与所述第二键“QQ类+0001”相应的一个第二值)所代表的好友的数据记录为“(40011,张三,男,26)”。其中,所述数据记录包括QQ号、昵称、性别、年龄四个属性字段,由此,好友QQ号“40011”所代表的好友的数据记录中的属性字段数据“40011”、“张三”、“男”、“26”分别与属性字段“QQ号”、“昵称”、“性别”、“年龄”相对应。在本实施例中,集合数据表“data”的第四值数组仅包括了一个第四值,例如“(40011,张三,男,26)”,但是,在其他实施例中,所述第四值数组还可以包括多个第四值。这里需要强调的是,上述集合属性索引表“attribute”的第三键所包括的属性字段名称是集合数据表“data”的第四值所代表的数据记录的各个属性字段名称之一,例如,上述集合属性索引表“attribute”的第三键“QQ类+0001+年龄”所包括的属性字段名称“年龄”就是集合数据表“data”的第四值所代表的数据记录如“(40011,张三,男,26)”的四个属性字段名称中的一个,即“年龄”。
如果托管上述哈希表数据库的服务器接收到这样的对所述哈希表数据库的集合数据表“data”的插入键值请求,所述插入键值请求包括:待插入第一键“QQ类”、待插入第一值“0004”、待插入第二值“70088”、待插入属性字段名称“年龄”、待插入属性字段数据“50”、待插入第四值“(70088,王五,男,50)”;则以上述已经包含有键值对的集合表“set”、集合标识索引表“key”、集合属性索引表“attribute”、集合数据表“data”为例,上文所述的插入键值的方法的实现流程500可以为如下5个步骤:
步骤S1,接收上述插入键值请求。
步骤S2,判断在上述集合标识索引表“key”中是否存在由上述待插入第一键“QQ类”和上述待插入第一值“0004”构成的第二键,即“QQ类+0004”。由于在上述集合标识索引表“key”中,不存在第二键“QQ类+0004”,所以这表示在集合表“set”中不存在集合标识(也就是第一值)“0004”,由此,步骤S2将进一步包括以下子步骤:S21,在上述集合表“set”的所述待插入第一键“QQ类”所对应的第一值数组中插入所述待插入第一值“0004”;S22,在上述集合标识索引表“key”中插入由所述待插入第一键“QQ类”和所述待插入第一值“0004”构成的第二键“QQ类+0004”,这时,所述第二键“QQ类+0004”对应的第二值数组为空。
步骤S3,对上述集合标识索引表“key”进行插入操作。在本步骤中,在所述集合标识索引表“key”中的、与所述第二键“QQ类+0004”对应的第二值数组中插入所述待插入第二值“70088”。
步骤S4,对上述集合属性索引表“attribute”进行插入操作。上述待插入第一键“QQ类”、上述待插入第一值“0004”和上述待插入属性字段名称“年龄”构成了所述集合属性索引表“attribute”中的第三键“QQ类+0004+年龄”。在本步骤中,在所述集合属性索引表“attribute”中插入第三键“QQ类+0004+年龄”以及插入与所述第三键“QQ类+0004+年龄”对应的、由所述待插入第二值“70088”和上述待插入属性字段数据“50”(也就是名称为“年龄”的待插入属性字段的值)构成的待插入第三值“(70088,50)”。
步骤S5,对上述集合数据表“data”进行插入操作。上述待插入第一键“QQ类”、上述待插入第一值“0004”和上述待插入第二值“70088”构成了上述集合数据表“data”中的第四键“QQ类+0004+70088”。在本步骤中,在所述集合数据表“data”中插入第四键“QQ类+0004+70088”以及插入与所述第四键“QQ类+0004+70088”对应的待插入第四值“(70088,王五,男,50)”。
至此,完成了对哈希表数据库的上述集合数据表“data”的键值插入。
在本实施例的一个优选实施方式中,上述集合表“set”中的第一值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第一值数组中的所有第一值进行了排序操作的有序数组。例如,上述已经包含有键值对的集合表“set”的第一键“QQ类”所对应的第一值数组包括了第一值“0001”、“0002”和“0003”,则可以根据排序算法(例如按数值大小排序算法)对这些第一值“0001”、“0002”和“0003”进行升序排序或者降序排序。作为一种优选的方式,在第一值数组中的所有第一值经过了排序操作的情况下,所述步骤502中的在所述集合表“set”的待插入第一键所对应的第一值数组中插入待插入第一值的步骤包括:依据对所述第一值数组应用过的排序算法(例如按数值大小排序算法),在所述集合表“set”的所述待插入第一键所对应的所述第一值数组中有序插入待插入第一值,其中,所述有序插入待插入第一值指的是:在所述待插入第一值被插入到所述第一值数组之后,所得到的新的第一值数组中的各个第一值的顺序依然符合基于所述排序算法的顺序要求。对所述第一值数组中的所有第一值进行排序操作的好处在于,在所述第一值数组是有序数组的情况下,可以借助于二分查找法之类的快速查找算法,对所述第一值数组中的特定第一值进行快速查找,此外,还可以提高对所述第一值数组进行的插入、修改、删除操作的效率。
在本实施例的一个优选实施方式中,上述集合标识索引表“key”中的第二值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第二值数组中的所有第二值进行了排序操作的有序数组。例如,上述已经包含有键值对的集合标识索引表“key”的第二键“QQ类+0001”所对应的第二值数组包括了第二值“40011”、“00012”和“00013”,则可以根据排序算法(例如按数值大小排序算法)对这些第二值“40011”、“00012”和“00013”进行升序排序或者降序排序。作为一种优选的方式,在第二值数组中的所有第二值经过了排序操作的情况下,所述步骤503中的在集合标识索引表“key”中的、与第二键对应的第二值数组中插入待插入第二值的步骤包括:依据对所述第二值数组应用过的排序算法(例如按数值大小排序算法),在所述集合标识索引表“key”中的、与由待插入第一键和待插入第一值构成的第二键对应的第二值数组中有序插入所述待插入第二值,其中,所述有序插入待插入第二值指的是:在所述待插入第二值被插入到所述第二值数组之后,所得到的新的第二值数组中的各个第二值的顺序依然符合基于所述排序算法的顺序要求。对所述第二值数组中的所有第二值进行排序操作的好处在于,在所述第二值数组是有序数组的情况下,可以借助于二分查找法之类的快速查找算法,对所述第二值数组中的特定第二值进行快速查找,此外,还可以提高对所述第二值数组进行的插入、修改、删除操作的效率。
在本实施例的一个优选实施方式中,上述哈希表数据库是分布式数据库,托管所述哈希表数据库的服务器包括通过网络(例如通过广域网、城域网或者局域网)连接在一起的两台或多台数据库服务器。
本发明的第一实施例的方法通过在一种新的哈希表数据库结构的基础上结合对这种哈希表数据库的键值插入方法,实现了互联网场景下数据写操作的高并发性和低延迟性。
在图6中示出了本发明的第二实施例。
图6为根据本发明第二实施例的在哈希表数据库中更新键值的方法的实现流程600,该实现流程600详述如下:
在步骤601中,接收对哈希表数据库的集合数据表的更新键值请求。
在第二实施例中,托管上述哈希表数据库的服务器可以直接从本地读取数据库工程师预先提供的更新键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的更新键值请求语句或文档。其中,所述更新键值请求包括:待更新第一键,即集合表“set”的要进行更新操作的特定集合类别的名称,在此假定其为“set_name_update”;待更新第一值,即集合表“set”的要进行更新操作的特定集合标识,在此假定其为“key1_update”;待更新第二值,即集合标识索引表“key”的要进行更新操作的特定集合数据标识,在此假定其为“key2_update”;待更新属性字段名称,即集合属性索引表“attribute”的要进行更新操作的特定的属性字段名称,在此假定其为“attribute_name_update”;所述待更新属性字段名称下的原始属性字段数据,即要进行更新操作的名称为“attribute_name_update”的属性字段的原始值,在此假定其为“attribute_valueOrigin_update”;所述待更新属性字段名称下的待更新属性字段数据,即要进行更新操作的名称为“attribute_name_update”的属性字段的待更新值,在此假定其为“attribute_valueNew_update”;待更新第四值,即要插入到集合数据表“data”中的数据记录。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在步骤602中,对集合属性索引表进行更新操作。
在第二实施例中,上述待更新第一键“set_name_update”、上述待更新第一值“key1_update”和上述待更新属性字段名称“attribute_name_update”构成了上述集合属性索引表“attribute”中的第三键。在本步骤中,托管上述哈希表数据库的服务器将进行以下操作:1)在所述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中,删除由上述待更新第二值“key2_update”和上述原始属性字段数据“attribute_valueOrigin_update”构成的第三值;2)在所述第三值数组中,插入由所述待更新第二值“key2_update”和所述待更新属性字段数据“attribute_valueNew_update”构成的第三值。
在步骤603中,对集合数据表进行更新操作。
在第二实施例中,上述待更新第一键“set_name_update”、上述待更新第一值“key1_update”和上述待更新第二值“key2_update”构成了上述集合数据表“data”中的第四键。在本步骤中,托管上述哈希表数据库的服务器在所述集合数据表“data”中的、与所述第四键对应的第四值数组中,利用上述待更新第四值替换相应的原来的第四值。
至此,完成了对哈希表数据库的上述集合数据表“data”的键值更新。
在本实施例的一个优选实施方式中,上述集合表“set”中的第一值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第一值数组中的所有第一值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述集合标识索引表“key”中的第二值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第二值数组中的所有第二值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述哈希表数据库是分布式数据库,托管所述哈希表数据库的服务器包括通过网络(例如通过广域网、城域网或者局域网)连接在一起的两台或多台数据库服务器。
本发明的第二实施例的方法通过在一种新的哈希表数据库结构的基础上结合对这种哈希表数据库的键值更新方法,实现了互联网场景下数据更新操作的高并发性和低延迟性。
在图7中示出了本发明的第三实施例。
图7为根据本发明第三实施例的在哈希表数据库中删除键值的方法的实现流程700,该实现流程700详述如下:
在步骤701中,接收对哈希表数据库的集合数据表的删除键值请求。
在第三实施例中,托管上述哈希表数据库的服务器可以直接从本地读取数据库工程师预先提供的删除键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的删除键值请求语句或文档。其中,所述删除键值请求包括:待删除第一键,即集合表“set”的要进行删除操作的特定集合类别的名称,在此假定其为“set_name_delete”;待删除第一值,即集合表“set”的要进行删除操作的特定集合标识,在此假定其为“key1_delete”;待删除第二值,即集合标识索引表“key”的要进行删除操作的特定集合数据标识,在此假定其为“key2_delete”;待删除属性字段名称,即集合属性索引表“attribute”的要进行删除操作的特定的属性字段名称,在此假定其为“attribute_name_delete”;待删除属性字段数据,即要进行删除操作的名称为“attribute_name_delete”的属性字段的值,在此假定其为“attribute_value_delete”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在步骤702中,对集合数据表进行删除操作。
在第三实施例中,上述待删除第一键“set_name_delete”、上述待删除第一值“key1_delete”和上述待删除第二值“key2_delete”构成构成了上述集合数据表“data”中的第四键。在本步骤中,托管上述哈希表数据库的服务器在所述集合数据表“data”中,删除与所述第四键对应的第四值数组。
在步骤703中,对集合属性索引表进行删除操作。
在第三实施例中,上述待删除第一键“set_name_delete”、上述待删除第一值“key1_delete”和上述待删除属性字段名称“attribute_name_delete”构成了上述集合属性索引表“attribute”中的第三键,上述待删除第二值“key2_delete”和上述待删除属性字段数据“attribute_value_delete”构成了所述集合属性索引表“attribute”中的第三值。在本步骤中,托管上述哈希表数据库的服务器在所述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中,删除所述第三值。
在步骤704中,对集合标识索引表进行删除操作。
在第三实施例中,上述待删除第一键“set_name_delete”和上述待删除第一值“key1_delete”构成了上述集合标识索引表“key”中的第二键。在本步骤中,托管上述哈希表数据库的服务器在所述集合标识索引表“key”中的、与所述第二键对应的第二值数组中,删除上述待删除第二值“key2_delete”。
至此,完成了对哈希表数据库的上述集合数据表“data”的键值删除。
在本实施例的一个优选实施方式中,在上述步骤704之后还进一步包括如下步骤705和706(未示出)。
在步骤705中,判断在上述集合标识索引表中与由上述待删除第一键和上述待删除第一值构成的第二键对应的第二值数组的数组长度是否为零。
在本步骤中,托管上述哈希表数据库的服务器在步骤704中对集合标识索引表“key”进行删除操作之后,判断在所述集合标识索引表“key”中与由上述待删除第一键“set_name_delete”和上述待删除第一值“key1_delete”构成的第二键对应的第二值数组的数组长度是否为零。在所述数组长度为零的情况下,该实现流程700进一步跳转到步骤706。
在步骤706中,对集合表和集合标识索引表进行删除操作。
在本步骤中,托管上述哈希表数据库的服务器将进行以下操作:1)在上述集合表“set”中的、与上述待删除第一键“set_name_delete”对应的第一值数组中,删除上述待删除第一值“key1_delete”;2)在上述集合标识索引表“key”中删除这样的键值对,该键值对包括所述待删除第一键“set_name_delete”和所述待删除第一值“key1_delete”构成的第二键(作为该键值对的键)和与所述第二键对应的第二值数组(作为该键值对的值)。
在本实施例的一个优选实施方式中,上述集合表“set”中的第一值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第一值数组中的所有第一值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述集合标识索引表“key”中的第二值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第二值数组中的所有第二值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述哈希表数据库是分布式数据库,托管所述哈希表数据库的服务器包括通过网络(例如通过广域网、城域网或者局域网)连接在一起的两台或多台数据库服务器。
本发明的第三实施例的方法通过在一种新的哈希表数据库结构的基础上结合对这种哈希表数据库的键值删除方法,实现了互联网场景下数据删除操作的高并发性和低延迟性。
在图8中示出了本发明的第四实施例。
图8为根据本发明第四实施例的在哈希表数据库中读取键值的方法的实现流程800,该实现流程800详述如下:
在步骤801中,接收对上述哈希表数据库的上述集合数据表的读取键值请求。
在第四实施例中,托管上述哈希表数据库的服务器可以直接从本地读取数据库工程师预先提供的读取键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的读取键值请求语句或文档。其中,所述读取键值请求包括:待读取第一键,即集合表“set”的要进行读取操作的特定集合类别的名称,在此假定其为“set_name_read”;待读取第一值,即集合表“set”的要进行读取操作的特定集合标识,在此假定其为“key1_read”;待读取第二值,即集合标识索引表“key”的要进行读取操作的特定集合数据标识,在此假定其为“key2_read”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在步骤802中,对集合数据表进行读取操作。
在第四实施例中,上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和上述待读取第二值“key2_read”构成了上述集合数据表“data”中的第四键。在本步骤中,托管上述哈希表数据库的服务器在所述集合数据表“data”中读取得到与所述第四键对应的第四值数组。
本发明的第四实施例的方法给出了在一种新的哈希表数据库结构的基础上对这种哈希表数据库的键值进行读取的方法,由此实现了互联网场景下数据读取操作的高并发性和低延迟性。
在图9中示出了本发明的第五实施例。
图9为根据本发明第五实施例的在哈希表数据库中读取键值的方法的实现流程900,该实现流程900详述如下:
在步骤901中,接收对上述哈希表数据库的上述集合数据表的读取键值请求。
在第五实施例中,托管上述哈希表数据库的服务器可以直接从本地读取数据库工程师预先提供的读取键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的读取键值请求语句或文档。其中,所述读取键值请求包括:待读取第一键,即集合表“set”的要进行读取操作的特定集合类别的名称,在此假定其为“set_name_read”;待读取第一值,即集合表“set”的要进行读取操作的特定集合标识,在此假定其为“key1_read”;待读取属性字段名称,即集合属性索引表“attribute”的要进行读取操作的特定的属性字段名称,在此假定其为“attribute_name_read”;待读取属性字段数据,即要进行读取操作的名称为“attribute_name_read”的属性字段的值,在此假定其为“attribute_value_read”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在步骤902中,从上述集合属性索引表中获取待读取第二值。
在第五实施例中,上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和上述待读取属性字段名称“attribute_name_read”构成了上述集合属性索引表“attribute”中的第三键。在本步骤中,托管上述哈希表数据库的服务器将进行如下操作:1)在所述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中,查询得到与上述待读取属性字段数据“attribute_value_read”对应的待查询第三值;2)由于集合属性索引表“attribute”中的第三值由第二值和属性字段名称下的属性字段数据构成,所以根据所述待查询第三值可以获得其包含的第二值作为待读取第二值。
在步骤903中,对集合数据表进行读取操作。
在第五实施例中,上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和步骤902中获取的待读取第二值构成了上述集合数据表“data”中的第四键。在本步骤中,托管上述哈希表数据库的服务器在所述集合数据表“data”中读取得到与所述第四键对应的第四值数组。
本发明的第五实施例的方法给出了在一种新的哈希表数据库结构的基础上对这种哈希表数据库的键值进行读取的方法,由此实现了互联网场景下数据读取操作的高并发性和低延迟性。
在图10中示出了本发明的第六实施例。
图10为根据本发明第六实施例的在哈希表数据库中读取键值的方法的实现流程1000,该实现流程1000详述如下:
在步骤1001中,接收对上述哈希表数据库的上述集合数据表的读取键值请求。
在第六实施例中,托管上述哈希表数据库的服务器可以直接从本地读取数据库工程师预先提供的读取键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的读取键值请求语句或文档。其中,所述读取键值请求包括:待读取第一键,即集合表“set”的要进行读取操作的特定集合类别的名称,在此假定其为“set_name_read”;待读取第一值,即集合表“set”的要进行读取操作的特定集合标识,在此假定其为“key1_read”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在步骤1002中,对集合标识索引表进行查询操作。
在第六实施例中,上述待读取第一键“set_name_read”和上述待读取第一值“key1_read”构成了上述集合标识索引表“key”中的第二键。在本步骤中,托管上述哈希表数据库的服务器在所述集合标识索引表“key”中,查询得到与所述第二键对应的第二值数组作为待读取第二值数组。
在步骤1003中,对集合数据表进行读取操作。
在第六实施例中,上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和步骤1002中查询得到的待读取第二值数组中的任何一个单个待读取第二值可以构成上述集合数据表“data”中的第四键,其中,所构成的第四键的数目等于待读取第二值数组中待读取第二值的数目。在本步骤中,托管上述哈希表数据库的服务器在所述集合数据表“data”中读取得到与各个第四键对应的各个第四值数组。
本发明的第六实施例的方法给出了在一种新的哈希表数据库结构的基础上对这种哈希表数据库的键值进行读取的方法,由此实现了互联网场景下数据读取操作的高并发性和低延迟性。
图11示出了本发明的第七实施例。
图11为根据本发明第七实施例的在哈希表数据库中插入键值的装置的结构示意图。如图11所示,本实施例所述的在哈希表数据库中插入键值的装置1100包括:接收模块1101,判断模块1102,集合标识索引表插入模块1103,集合属性索引表插入模块1104和集合数据表插入模块1105。
在本实施例中,上述装置1100的接收模块1101可以直接从本地读取数据库工程师预先提供的插入键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的插入键值请求语句或文档。其中,对上述哈希表数据库的集合数据表的插入键值请求包括:待插入第一键,即集合表“set”的要进行插入操作的特定集合类别的名称,在此假定其为“set_name_insert”;待插入第一值,即集合表“set”的要进行插入操作的特定集合标识,在此假定其为“key1_insert”;待插入第二值,即集合标识索引表“key”的要进行插入操作的特定集合数据标识,在此假定其为“key2_insert”;待插入属性字段名称,即集合属性索引表“attribute”的要进行插入操作的特定的属性字段名称,在此假定其为“attribute_name_insert”;待插入属性字段数据,即要进行插入操作的名称为“attribute_name_insert”的属性字段的值,在此假定其为“attribute_value_insert”;待插入第四值,即要插入到集合数据表“data”中的数据记录。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
之后,上述装置1100的判断模块1102判断在集合标识索引表“key”中是否存在由接收模块1101接收的上述插入键值请求中包含的待插入第一键和待插入第一值构成的第二键。也就是说,所述判断模块1102将判断在集合标识索引表“key”中,是否存在由“set_name_insert”和“key1_insert”构成的第二键(在本实施例中,默认在集合表“set”中存在所述待插入第一键“set_name_insert”):
如果不存在,则表示在集合表“set”中,不存在集合标识“key1_insert”,由此,上述判断模块1102将进行以下操作:首先,在上述集合表“set”的所述待插入第一键“set_name_insert”所对应的所述第一值数组中插入所述待插入第一值“key1_insert”;其次,在上述集合标识索引表“key”中插入由所述待插入第一键“set_name_insert”和所述待插入第一值“key1_insert”构成的第二键。
如果存在,则表示在集合表“set”中存在集合标识“key1_insert”,则直接从上述判断模块1102跳转到以下的集合标识索引表插入模块1103。
在本实施例中,上述装置1100的集合标识索引表插入模块1103用于对上述集合标识索引表“key”进行插入操作。上述插入键值请求中包含的上述待插入第一键“set_name_insert”和上述待插入第一值“key1_insert”构成了所述集合标识索引表“key”中的第二键。所述集合标识索引表插入模块1103在所述集合标识索引表“key”中的、与所述第二键对应的第二值数组中插入上述待插入第二值“key2_insert”。
在本实施例中,上述装置1100的集合属性索引表插入模块1104用于对上述集合属性索引表“attribute”进行插入操作。上述插入键值请求中包含的上述待插入第一键“set_name_insert”、上述待插入第一值“key1_insert”和上述待插入属性字段名称“attribute_name_insert”构成了上述集合属性索引表“attribute”中的第三键。所述集合属性索引表插入模块1104在所述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中插入由上述待插入第二值“key2_insert”和上述待插入属性字段数据“attribute_value_insert”(也就是名称为“attribute_name_insert”的待插入属性字段的值)构成的待插入第三值。
在本实施例中,上述装置1100的集合数据表插入模块1105用于对上述集合数据表“data”进行插入操作。上述插入键值请求中包含的上述待插入第一键“set_name_insert”、上述待插入第一值“key1_insert”和上述待插入第二值“key2_insert”构成了上述集合数据表“data”中的第四键。所述集合数据表插入模块1105在所述集合数据表“data”中的、与所述第四键对应的第四值数组中插入所述待插入第四值。
至此,完成了对哈希表数据库的上述集合数据表“data”的键值插入。
在本实施例的一个优选实施方式中,上述集合表“set”中的第一值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第一值数组中的所有第一值进行了排序操作的有序数组。作为一种优选的方式,在第一值数组中的所有第一值经过了排序操作的情况下,上述判断模块1102进一步包括:依据对所述第一值数组应用过的排序算法,在所述集合表“set”的所述待插入第一键所对应的所述第一值数组中有序插入待插入第一值,其中,所述有序插入待插入第一值指的是:在所述待插入第一值被插入到所述第一值数组之后,所得到的新的第一值数组中的各个第一值的顺序依然符合基于所述排序算法的顺序要求。对所述第一值数组中的所有第一值进行排序操作的好处在于,在所述第一值数组是有序数组的情况下,可以借助于二分查找法之类的快速查找算法,对所述第一值数组中的特定第一值进行快速查找,此外,还可以提高对所述第一值数组进行的插入、修改、删除操作的效率。
在本实施例的一个优选实施方式中,上述集合标识索引表“key”中的第二值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第二值数组中的所有第二值进行了排序操作的有序数组。作为一种优选的方式,在第二值数组中的所有第二值经过了排序操作的情况下,上述集合标识索引表插入模块1103包括:依据对所述第二值数组应用过的排序算法,在所述集合标识索引表“key”中的、与由待插入第一键和待插入第一值构成的第二键对应的第二值数组中有序插入所述待插入第二值,其中,所述有序插入待插入第二值指的是:在所述待插入第二值被插入到所述第二值数组之后,所得到的新的第二值数组中的各个第二值的顺序依然符合基于所述排序算法的顺序要求。对所述第二值数组中的所有第二值进行排序操作的好处在于,在所述第二值数组是有序数组的情况下,可以借助于二分查找法之类的快速查找算法,对所述第二值数组中的特定第二值进行快速查找,此外,还可以提高对所述第二值数组进行的插入、修改、删除操作的效率。
在本实施例的一个优选实施方式中,上述哈希表数据库是分布式数据库,托管所述哈希表数据库的服务器包括通过网络(例如通过广域网、城域网或者局域网)连接在一起的两台或多台数据库服务器。
本发明的第七实施例的装置通过针对一种新的哈希表数据库结构实现对这种哈希表数据库的键值插入,满足了互联网场景下数据写操作的高并发性和低延迟性。
图12示出了本发明的第八实施例。
图12为根据本发明第八实施例的在哈希表数据库中更新键值的装置的结构示意图。如图12所示,本实施例所述的在哈希表数据库中更新键值的装置1200包括:接收模块1201,集合属性索引表处理模块1202和集合数据表处理模块1203。
在本实施例中,上述装置1200的接收模块1201可以直接从本地读取数据库工程师预先提供的更新键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的更新键值请求语句或文档。其中,对上述哈希表数据库的集合数据表的更新键值请求包括:待更新第一键,即集合表“set”的要进行更新操作的特定集合类别的名称,在此假定其为“set_name_update”;待更新第一值,即集合表“set”的要进行更新操作的特定集合标识,在此假定其为“key1_update”;待更新第二值,即集合标识索引表“key”的要进行更新操作的特定集合数据标识,在此假定其为“key2_update”;待更新属性字段名称,即集合属性索引表“attribute”的要进行更新操作的特定的属性字段名称,在此假定其为“attribute_name_update”;所述待更新属性字段名称下的原始属性字段数据,即要进行更新操作的名称为“attribute_name_update”的属性字段的原始值,在此假定其为“attribute_valueOrigin_update”;所述待更新属性字段名称下的待更新属性字段数据,即要进行更新操作的名称为“attribute_name_update”的属性字段的待更新值,在此假定其为“attribute_valueNew_update”;待更新第四值,即要插入到集合数据表“data”中的数据记录。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在本实施例中,在接收模块1201接收到更新键值请求之后,上述装置1200的集合属性索引表处理模块1202对上述集合属性索引表“attribute”进行如下处理。由于所述更新键值请求中包含的上述待更新第一键“set_name_update”、上述待更新第一值“key1_update”和上述待更新属性字段名称“attribute_name_update”构成了所述集合属性索引表“attribute”中的第三键,在此,所述集合属性索引表处理模块1202将:1)在所述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中,删除由上述待更新第二值“key2_update”和上述原始属性字段数据“attribute_valueOrigin_update”构成的第三值;2)在所述第三值数组中,插入由所述待更新第二值“key2_update”和所述待更新属性字段数据“attribute_valueNew_update”构成的第三值。
在本实施例中,上述装置1200的集合数据表处理模块1203用于对上述集合数据表“data”进行处理。上述更新键值请求中包含的上述待更新第一键“set_name_update”、上述待更新第一值“key1_update”和上述待更新第二值“key2_update”构成了所述集合数据表“data”中的第四键。所述集合数据表处理模块1203在所述集合数据表“data”中的、与所述第四键对应的第四值数组中,利用上述待更新第四值替换相应的原来的第四值。
在本实施例的一个优选实施方式中,上述集合表“set”中的第一值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第一值数组中的所有第一值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述集合标识索引表“key”中的第二值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第二值数组中的所有第二值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述哈希表数据库是分布式数据库,托管所述哈希表数据库的服务器包括通过网络(例如通过广域网、城域网或者局域网)连接在一起的两台或多台数据库服务器。
本发明的第八实施例的装置通过针对一种新的哈希表数据库结构实现对这种哈希表数据库的键值更新,满足了互联网场景下数据更新操作的高并发性和低延迟性。
图13示出了本发明的第九实施例。
图13为根据本发明第九实施例的在哈希表数据库中删除键值的装置的结构示意图。如图13所示,本实施例所述的在哈希表数据库中删除键值的装置1300包括:接收模块1301,集合数据表删除模块1302、集合属性索引表删除模块1303和集合标识索引表删除模块1304。
在本实施例中,上述装置1300的接收模块1301可以直接从本地读取数据库工程师预先提供的删除键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的删除键值请求语句或文档。其中,所述删除键值请求包括:待删除第一键,即集合表“set”的要进行删除操作的特定集合类别的名称,在此假定其为“set_name_delete”;待删除第一值,即集合表“set”的要进行删除操作的特定集合标识,在此假定其为“key1_delete”;待删除第二值,即集合标识索引表“key”的要进行删除操作的特定集合数据标识,在此假定其为“key2_delete”;待删除属性字段名称,即集合属性索引表“attribute”的要进行删除操作的特定的属性字段名称,在此假定其为“attribute_name_delete”;待删除属性字段数据,即要进行删除操作的名称为“attribute_name_delete”的属性字段的值,在此假定其为“attribute_value_delete”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在本实施例中,接收模块1301接收的上述删除键值请求中包含的上述待删除第一键“set_name_delete”、上述待删除第一值“key1_delete”和上述待删除第二值“key2_delete”构成构成了上述集合数据表“data”中的第四键。在本步骤中,上述装置1300的集合数据表删除模块1302在所述集合数据表“data”中,删除与所述第四键对应的第四值数组。
在本实施例中,接收模块1301接收的上述删除键值请求中包含的上述待删除第一键“set_name_delete”、上述待删除第一值“key1_delete”和上述待删除属性字段名称“attribute_name_delete”构成了上述集合属性索引表“attribute”中的第三键,上述待删除第二值“key2_delete”和上述待删除属性字段数据“attribute_value_delete”构成了所述集合属性索引表“attribute”中的第三值。上述装置1300的集合属性索引表删除模块1303在所述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中,删除所述第三值。
在本实施例中,接收模块1301接收的上述删除键值请求中包含的上述待删除第一键“set_name_delete”和上述待删除第一值“key1_delete”构成了上述集合标识索引表“key”中的第二键。上述装置1300的集合标识索引表删除模块1304在所述集合标识索引表“key”中的、与所述第二键对应的第二值数组中,删除上述待删除第二值“key2_delete”。
在本实施例的一个优选实施方式中,上述装置1300还进一步包括判断模块1305和删除子模块1306(未示出)。所述判断模块1305用于在上述集合标识索引表删除模块1304对集合标识索引表“key”进行删除操作之后,判断在所述集合标识索引表“key”中与由上述待删除第一键“set_name_delete”和上述待删除第一值“key1_delete”构成的第二键对应的第二值数组的数组长度是否为零。在所述数组长度为零的情况下,所述装置1300进一步调用所述删除子模块1306。所述删除子模块1306用于进行以下操作:1)在上述集合表“set”中的、与上述待删除第一键“set_name_delete”对应的第一值数组中,删除上述待删除第一值“key1_delete”;2)在上述集合标识索引表“key”中删除这样的键值对,该键值对包括所述待删除第一键“set_name_delete”和所述待删除第一值“key1_delete”构成的第二键(作为该键值对的键)和与所述第二键对应的第二值数组(作为该键值对的值)。
在本实施例的一个优选实施方式中,上述集合表“set”中的第一值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第一值数组中的所有第一值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述集合标识索引表“key”中的第二值数组是依据排序算法(例如,按数值大小排序算法或按字母顺序排序算法)对所述第二值数组中的所有第二值进行了排序操作的有序数组。
在本实施例的一个优选实施方式中,上述哈希表数据库是分布式数据库,托管所述哈希表数据库的服务器包括通过网络(例如通过广域网、城域网或者局域网)连接在一起的两台或多台数据库服务器。
本发明的第九实施例的装置通过针对一种新的哈希表数据库结构实现对这种哈希表数据库的键值删除,满足了互联网场景下数据删除操作的高并发性和低延迟性。
图14示出了本发明的第十实施例。
图14为根据本发明第十实施例的在哈希表数据库中读取键值的装置的结构示意图。如图14所示,本实施例所述的在哈希表数据库中读取键值的装置1400包括:接收模块1401和读取模块1402。
在本实施例中,上述装置1400的接收模块1401可以直接从本地读取数据库工程师预先提供的读取键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的读取键值请求语句或文档。其中,所述读取键值请求包括:待读取第一键,即集合表“set”的要进行读取操作的特定集合类别的名称,在此假定其为“set_name_read”;待读取第一值,即集合表“set”的要进行读取操作的特定集合标识,在此假定其为“key1_read”;待读取第二值,即集合标识索引表“key”的要进行读取操作的特定集合数据标识,在此假定其为“key2_read”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在第十实施例中,上述装置1400的接收模块1401所接收的上述读取键值请求中包含的上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和上述待读取第二值“key2_read”构成了上述集合数据表“data”中的第四键。上述装置1400的读取模块1402随后在所述集合数据表“data”中读取得到与所述第四键对应的第四值数组。
本发明的第十实施例的装置通过针对一种新的哈希表数据库结构实现对这种哈希表数据库的键值读取,满足了互联网场景下数据读取操作的高并发性和低延迟性。
图15示出了本发明的第十一实施例。
图15为根据本发明第十一实施例的在哈希表数据库中读取键值的装置的结构示意图。如图15所示,本实施例所述的在哈希表数据库中读取键值的装置1500包括:接收模块1501,第二值获取模块1502和读取模块1503。
在第十一实施例中,上述装置1500的接收模块1501可以直接从本地读取数据库工程师预先提供的读取键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的读取键值请求语句或文档。其中,所述读取键值请求包括:待读取第一键,即集合表“set”的要进行读取操作的特定集合类别的名称,在此假定其为“set_name_read”;待读取第一值,即集合表“set”的要进行读取操作的特定集合标识,在此假定其为“key1_read”;待读取属性字段名称,即集合属性索引表“attribute”的要进行读取操作的特定的属性字段名称,在此假定其为“attribute_name_read”;待读取属性字段数据,即要进行读取操作的名称为“attribute_name_read”的属性字段的值,在此假定其为“attribute_value_read”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在本实施例中,上述装置1500的接收模块1501所接收的上述读取键值请求中包含的上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和上述待读取属性字段名称“attribute_name_read”构成了上述集合属性索引表“attribute”中的第三键。上述装置1500的第二值获取模块1502将进行如下操作:1)在所述集合属性索引表“attribute”中的、与所述第三键对应的第三值数组中,查询得到与上述待读取属性字段数据“attribute_value_read”对应的待查询第三值;2)由于集合属性索引表“attribute”中的第三值由第二值和属性字段名称下的属性字段数据构成,所以根据所述待查询第三值可以获得其包含的第二值作为待读取第二值。
在本实施例中,上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和上述第二值获取模块1502获取的待读取第二值构成了上述集合数据表“data”中的第四键。上述装置1500的读取模块1503在所述集合数据表“data”中读取得到与所述第四键对应的第四值数组。
本发明的第十一实施例的装置通过针对一种新的哈希表数据库结构实现对这种哈希表数据库的键值读取,满足了互联网场景下数据读取操作的高并发性和低延迟性。
图16示出了本发明的第十二实施例。
图16为根据本发明第十二实施例的在哈希表数据库中读取键值的装置的结构示意图。如图16所示,本实施例所述的在哈希表数据库中读取键值的装置1600包括:接收模块1601,查询模块1602和读取模块1603。
在第十二实施例中,上述装置1600的接收模块1601可以直接从本地读取数据库工程师预先提供的读取键值请求语句或文档,或者可以通过有线网络或者无线网络远程地读取其它位置(例如客户端位置)的读取键值请求语句或文档。其中,所述读取键值请求包括:待读取第一键,即集合表“set”的要进行读取操作的特定集合类别的名称,在此假定其为“set_name_read”;待读取第一值,即集合表“set”的要进行读取操作的特定集合标识,在此假定其为“key1_read”。
在本实施例中,上述的无线网络包括但不限于基于3G技术、基于WiFi技术、基于蓝牙技术、基于WiMAX技术、基于Zigbee技术、基于UWB(ultra wideband)技术或者基于其它未来将开发的无线技术的无线网络。
在本实施例中,上述装置1600的接收模块1601所接收的上述读取键值请求中包含的上述待读取第一键“set_name_read”和上述待读取第一值“key1_read”构成了上述集合标识索引表“key”中的第二键。上述装置1600的查询模块1602在所述集合标识索引表“key”中,查询得到与所述第二键对应的第二值数组作为待读取第二值数组。
在本实施例中,上述待读取第一键“set_name_read”、上述待读取第一值“key1_read”和上述查询模块1602查询得到的待读取第二值数组中的任何一个单个待读取第二值可以构成上述集合数据表“data”中的第四键,其中,所构成的第四键的数目等于待读取第二值数组中待读取第二值的数目。上述装置1600的读取模块1603在所述集合数据表“data”中读取得到与各个第四键对应的各个第四值数组。
本发明的第十二实施例的装置通过针对一种新的哈希表数据库结构实现对这种哈希表数据库的键值读取,满足了互联网场景下数据读取操作的高并发性和低延迟性。
在本发明中所述的装置或客户端是指台式计算机、膝上型计算机、掌上电脑、个人数字助理(PDA)、手持式电子处理装置、结合PDA和手机功能的智能手机、导航装置、或能够显示数据信息(例如数据库的数据记录)并自动处理数据信息任何其他电子装置。上述装置或客户端可以进一步被配置成通过有线或无线网络连接到托管数据库的服务器。
本发明所述的技术方案能够通过根据集合数据自身的特点来在哈希表数据库的各个哈希表中存储集合数据,并且还针对所述哈希表数据库的各个哈希表的结构提供对集合数据进行插入、更新、删除、读取的方法,从而实现了互联网场景下集合数据操作的高并发性和低延迟性。此外,基于针对集合数据的所述插入、更新、删除、读取的方法,还可以实现对集合数据的存储的良好的可扩展性,例如,通过对哈希表数据库中存储的集合数据进行读取、插入、删除等的操作,可以便利地实现所述集合数据从一个哈希表数据库到另一个哈希表数据库的迁移。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (42)
1.一种在哈希表数据库中插入键值的方法,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的插入键值请求,其中,所述插入键值请求包括:待插入第一键、待插入第一值、待插入第二值、待插入属性字段名称、待插入属性字段数据、待插入第四值;
判断在所述集合标识索引表中是否存在由所述待插入第一键和所述待插入第一值构成的第二键,如果不存在,则在所述集合表的所述待插入第一键所对应的所述第一值数组中插入所述待插入第一值并且在所述集合标识索引表中插入由所述待插入第一键和所述待插入第一值构成的第二键;而如果存在,则直接进行以下的步骤;
在所述集合标识索引表中的、与由所述待插入第一键和所述待插入第一值构成的第二键对应的第二值数组中插入所述待插入第二值;
在所述集合属性索引表中的、与由所述待插入第一键、所述待插入第一值和所述待插入属性字段名称构成的第三键对应的第三值数组中插入由所述待插入第二值和所述待插入属性字段数据构成的待插入第三值;
在所述集合数据表中的、与由所述待插入第一键、所述待插入第一值和所述待插入第二值构成的第四键对应的第四值数组中插入所述待插入第四值。
2.根据权利要求1所述的在哈希表数据库中插入键值的方法,其特征在于,所述第一值数组是依据排序算法对所述第一值数组中的所有第一值进行了排序操作的有序数组。
3.根据权利要求2所述的在哈希表数据库中插入键值的方法,其特征在于,所述在所述集合表的所述待插入第一键所对应的所述第一值数组中插入所述待插入第一值的步骤包括:依据对所述第一值数组应用的所述排序算法,在所述集合表的所述待插入第一键所对应的所述第一值数组中有序插入所述待插入第一值。
4.根据权利要求1所述的在哈希表数据库中插入键值的方法,其特征在于,所述第二值数组是依据排序算法对所述第二值数组中的所有第二值进行了排序操作的有序数组。
5.根据权利要求4所述的在哈希表数据库中插入键值的方法,其特征在于,所述在所述集合标识索引表中的、与由所述待插入第一键和所述待插入第一值构成的第二键对应的第二值数组中插入所述待插入第二值的步骤包括:依据对所述第二值数组应用的所述排序算法,在所述集合标识索引表中的、与由所述待插入第一键和所述待插入第一值构成的第二键对应的第二值数组中有序插入所述待插入第二值。
6.根据权利要求2或4所述的在哈希表数据库中插入键值的方法,其特征在于,所述排序算法包括:按数值大小排序算法或按字母顺序排序算法。
7.根据权利要求1所述的在哈希表数据库中插入键值的方法,其特征在于,所述哈希表数据库是分布式数据库。
8.一种在哈希表数据库中更新键值的方法,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的更新键值请求,其中,所述更新键值请求包括:待更新第一键、待更新第一值、待更新第二值、待更新属性字段名称、所述待更新属性字段名称下的原始属性字段数据、所述待更新属性字段名称下的待更新属性字段数据、待更新第四值;
在所述集合属性索引表中的、与由所述待更新第一键、所述待更新第一值和所述待更新属性字段名称构成的第三键对应的第三值数组中,首先删除由所述待更新第二值和所述原始属性字段数据构成的第三值,然后插入由所述待更新第二值和所述待更新属性字段数据构成的第三值;
在所述集合数据表中的、与由所述待更新第一键、所述待更新第一值和所述待更新第二值构成的第四键对应的第四值数组中,利用所述待更新第四值替换对应的原第四值。
9.根据权利要求8所述的在哈希表数据库中更新键值的方法,其特征在于,所述第一值数组是依据排序算法对所述第一值数组中的所有第一值进行了排序操作的有序数组。
10.根据权利要求8所述的在哈希表数据库中更新键值的方法,其特征在于,所述第二值数组是依据排序算法对所述第二值数组中的所有第二值进行了排序操作的有序数组。
11.根据权利要求9或10所述的在哈希表数据库中更新键值的方法,其特征在于,所述排序算法包括:按数值大小排序算法或按字母顺序排序算法。
12.根据权利要求8所述的在哈希表数据库中更新键值的方法,其特征在于,所述哈希表数据库是分布式数据库。
13.一种在哈希表数据库中删除键值的方法,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的删除键值请求,其中,所述删除键值请求包括:待删除第一键、待删除第一值、待删除第二值、待删除属性字段名称、待删除属性字段数据;
在所述集合数据表中,删除与由所述待删除第一键、所述待删除第一值和所述待删除第二值构成的第四键对应的第四值数组;
在所述集合属性索引表中的、与由所述待删除第一键、所述待删除第一值和所述待删除属性字段名称构成的第三键对应的第三值数组中,删除由所述待删除第二值和所述待删除属性字段数据构成的第三值;
在所述集合标识索引表中的、与由所述待删除第一键和所述待删除第一值构成的第二键对应的第二值数组中,删除所述待删除第二值。
14.根据权利要求13所述的在哈希表数据库中删除键值的方法,其特征在于,在所述集合标识索引表中的、与由所述待删除第一键和所述待删除第一值构成的第二键对应的第二值数组中删除所述待删除第二值的步骤之后还包括以下步骤:判断在所述集合标识索引表中与由所述待删除第一键和所述待删除第一值构成的第二键对应的第二值数组的数组长度是否为零,如果为零,则在所述集合表中的、与所述待删除第一键对应的第一值数组中,删除所述待删除第一值;以及在所述集合标识索引表中删除包括所述待删除第一键和所述待删除第一值构成的第二键和该第二键所对应的第二值数组的键值对。
15.根据权利要求13所述的在哈希表数据库中删除键值的方法,其特征在于,所述第一值数组是依据排序算法对所述第一值数组中的所有第一值进行了排序操作的有序数组。
16.根据权利要求13所述的在哈希表数据库中删除键值的方法,其特征在于,所述第二值数组是依据排序算法对所述第二值数组中的所有第二值进行了排序操作的有序数组。
17.根据权利要求15或16所述的在哈希表数据库中删除键值的方法,其特征在于,所述排序算法包括:按数值大小排序算法或按字母顺序排序算法。
18.根据权利要求13所述的在哈希表数据库中删除键值的方法,其特征在于,所述哈希表数据库是分布式数据库。
19.一种在哈希表数据库中读取键值的方法,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取第二值;
在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
20.一种在哈希表数据库中读取键值的方法,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取属性字段名称、待读取属性字段数据;
在所述集合属性索引表中的、与由所述待读取第一键、所述待读取第一值和所述待读取属性字段名称构成的第三键对应的第三值数组中,查询得到与所述待读取属性字段数据对应的待查询第三值,并从所述待查询第三值中获得第二值作为待读取第二值;
在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
21.一种在哈希表数据库中读取键值的方法,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述方法包括如下步骤:
接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键和待读取第一值;
在所述集合标识索引表中,查询得到与由所述待读取第一键和所述待读取第一值构成的第二键对应的第二值数组作为待读取第二值数组;
对于所述待读取第二值数组中的每一个待读取第二值,在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
22.一种在哈希表数据库中插入键值的装置,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的插入键值请求,其中,所述插入键值请求包括:待插入第一键、待插入第一值、待插入第二值、待插入属性字段名称、待插入属性字段数据、待插入第四值;
判断模块,用于判断在所述集合标识索引表中是否存在由所述待插入第一键和所述待插入第一值构成的第二键,如果不存在,则在所述集合表的所述待插入第一键所对应的所述第一值数组中插入所述待插入第一值并且在所述集合标识索引表中插入由所述待插入第一键和所述待插入第一值构成的第二键;而如果存在,则直接调用以下的模块;
集合标识索引表插入模块,用于在所述集合标识索引表中的、与由所述待插入第一键和所述待插入第一值构成的第二键对应的第二值数组中插入所述待插入第二值;
集合属性索引表插入模块,用于在所述集合属性索引表中的、与由所述待插入第一键、所述待插入第一值和所述待插入属性字段名称构成的第三键对应的第三值数组中插入由所述待插入第二值和所述待插入属性字段数据构成的待插入第三值;
集合数据表插入模块,用于在所述集合数据表中的、与由所述待插入第一键、所述待插入第一值和所述待插入第二值构成的第四键对应的第四值数组中插入所述待插入第四值。
23.根据权利要求22所述的在哈希表数据库中插入键值的装置,其特征在于,所述第一值数组是依据排序算法对所述第一值数组中的所有第一值进行了排序操作的有序数组。
24.根据权利要求23所述的在哈希表数据库中插入键值的装置,其特征在于,所述判断模块进一步包括:依据对所述第一值数组应用的所述排序算法,在所述集合表的所述待插入第一键所对应的所述第一值数组中有序插入所述待插入第一值。
25.根据权利要求22所述的在哈希表数据库中插入键值的装置,其特征在于,所述第二值数组是依据排序算法对所述第二值数组中的所有第二值进行了排序操作的有序数组。
26.根据权利要求25所述的在哈希表数据库中插入键值的装置,其特征在于,所述集合标识索引表插入模块包括:依据对所述第二值数组应用的所述排序算法,在所述集合标识索引表中的、与由所述待插入第一键和所述待插入第一值构成的第二键对应的第二值数组中有序插入所述待插入第二值。
27.根据权利要求23或25所述的在哈希表数据库中插入键值的装置,其特征在于,所述排序算法包括:按数值大小排序算法或按字母顺序排序算法。
28.根据权利要求22所述的在哈希表数据库中插入键值的装置,其特征在于,所述哈希表数据库是分布式数据库。
29.一种在哈希表数据库中更新键值的装置,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的更新键值请求,其中,所述更新键值请求包括:待更新第一键、待更新第一值、待更新第二值、待更新属性字段名称、所述待更新属性字段名称下的原始属性字段数据、所述待更新属性字段名称下的待更新属性字段数据、待更新第四值;
集合属性索引表处理模块,用于在所述集合属性索引表中的、与由所述待更新第一键、所述待更新第一值和所述待更新属性字段名称构成的第三键对应的第三值数组中,首先删除由所述待更新第二值和所述原始属性字段数据构成的第三值,然后插入由所述待更新第二值和所述待更新属性字段数据构成的第三值;
集合数据表处理模块,用于在所述集合数据表中的、与由所述待更新第一键、所述待更新第一值和所述待更新第二值构成的第四键对应的第四值数组中,利用所述待更新第四值替换对应的原第四值。
30.根据权利要求29所述的在哈希表数据库中更新键值的装置,其特征在于,所述第一值数组是依据排序算法对所述第一值数组中的所有第一值进行了排序操作的有序数组。
31.根据权利要求29所述的在哈希表数据库中更新键值的装置,其特征在于,所述第二值数组是依据排序算法对所述第二值数组中的所有第二值进行了排序操作的有序数组。
32.根据权利要求30或31所述的在哈希表数据库中更新键值的装置,其特征在于,所述排序算法包括:按数值大小排序算法或按字母顺序排序算法。
33.根据权利要求29所述的在哈希表数据库中更新键值的装置,其特征在于,所述哈希表数据库是分布式数据库。
34.一种在哈希表数据库中删除键值的装置,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的删除键值请求,其中,所述删除键值请求包括:待删除第一键、待删除第一值、待删除第二值、待删除属性字段名称、待删除属性字段数据;
集合数据表删除模块,用于在所述集合数据表中,删除与由所述待删除第一键、所述待删除第一值和所述待删除第二值构成的第四键对应的第四值数组;
集合属性索引表删除模块,用于在所述集合属性索引表中的、与由所述待删除第一键、所述待删除第一值和所述待删除属性字段名称构成的第三键对应的第三值数组中,删除由所述待删除第二值和所述待删除属性字段数据构成的第三值;
集合标识索引表删除模块,用于在所述集合标识索引表中的、与由所述待删除第一键和所述待删除第一值构成的第二键对应的第二值数组中,删除所述待删除第二值。
35.根据权利要求34所述的在哈希表数据库中删除键值的装置,其特征在于,所述装置还包括:判断模块,用于判断在所述集合标识索引表中与由所述待删除第一键和所述待删除第一值构成的第二键对应的第二值数组的数组长度是否为零,如果为零,则调用删除子模块,所述删除子模块用于:在所述集合表中的、与所述待删除第一键对应的第一值数组中,删除所述待删除第一值;以及在所述集合标识索引表中删除包括所述待删除第一键和所述待删除第一值构成的第二键和该第二键所对应的第二值数组的键值对。
36.根据权利要求34所述的在哈希表数据库中删除键值的装置,其特征在于,所述第一值数组是依据排序算法对所述第一值数组中的所有第一值进行了排序操作的有序数组。
37.根据权利要求34所述的在哈希表数据库中删除键值的装置,其特征在于,所述第二值数组是依据排序算法对所述第二值数组中的所有第二值进行了排序操作的有序数组。
38.根据权利要求36或37所述的在哈希表数据库中删除键值的装置,其特征在于,所述排序算法包括:按数值大小排序算法或按字母顺序排序算法。
39.根据权利要求34所述的在哈希表数据库中删除键值的装置,其特征在于,所述哈希表数据库是分布式数据库。
40.一种在哈希表数据库中读取键值的装置,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取第二值;
读取模块,用于在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
41.一种在哈希表数据库中读取键值的装置,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键、待读取第一值、待读取属性字段名称、待读取属性字段数据;
第二值获取模块,用于在所述集合属性索引表中的、与由所述待读取第一键、所述待读取第一值和所述待读取属性字段名称构成的第三键对应的第三值数组中,查询得到与所述待读取属性字段数据对应的待查询第三值,并从所述待查询第三值中获得第二值作为待读取第二值;
读取模块,用于在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
42.一种在哈希表数据库中读取键值的装置,其特征在于,所述哈希表数据库包括如下哈希表:集合表、集合标识索引表、集合属性索引表、集合数据表,其中所述集合表用于存储由第一键、第一值数组构成的键值对;所述集合标识索引表用于存储由第二键、第二值数组构成的键值对,而所述第二键由所述第一键和所述第一值构成;所述集合属性索引表用于存储由第三键、第三值数组构成的键值对,而所述第三键由所述第一键、所述第一值和属性字段名称构成,所述第三值由所述第二值和所述属性字段名称下的属性字段数据构成;所述集合数据表用于存储由第四键、第四值数组构成的键值对,而所述第四键由所述第一键、所述第一值和所述第二值构成,其中所述属性字段名称是所述第四值所代表的数据记录的各个属性字段名称之一;
所述装置包括:
接收模块,用于接收对所述哈希表数据库的所述集合数据表的读取键值请求,其中,所述读取键值请求包括:待读取第一键和待读取第一值;
查询模块,用于在所述集合标识索引表中,查询得到与由所述待读取第一键和所述待读取第一值构成的第二键对应的第二值数组作为待读取第二值数组;
读取模块,用于对于所述待读取第二值数组中的每一个待读取第二值,在所述集合数据表中,读取与由所述待读取第一键、所述待读取第一值和所述待读取第二值构成的第四键对应的第四值数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310300815.7A CN103345521B (zh) | 2013-07-17 | 2013-07-17 | 一种在哈希表数据库中处理键值的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310300815.7A CN103345521B (zh) | 2013-07-17 | 2013-07-17 | 一种在哈希表数据库中处理键值的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103345521A true CN103345521A (zh) | 2013-10-09 |
CN103345521B CN103345521B (zh) | 2016-04-13 |
Family
ID=49280316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310300815.7A Active CN103345521B (zh) | 2013-07-17 | 2013-07-17 | 一种在哈希表数据库中处理键值的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103345521B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216708A (zh) * | 2014-08-20 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据监控的方法和装置 |
CN104486777A (zh) * | 2014-12-01 | 2015-04-01 | 中国联合网络通信集团有限公司 | 一种实现数据处理的方法及装置 |
CN104936210A (zh) * | 2015-04-20 | 2015-09-23 | 中国联合网络通信集团有限公司 | 一种确定号码状态的方法及装置 |
CN106503040A (zh) * | 2016-09-20 | 2017-03-15 | 福建天晴数码有限公司 | 适用sql查询方法的kv数据库及其创建方法 |
CN106899443A (zh) * | 2015-12-18 | 2017-06-27 | 北京神州泰岳软件股份有限公司 | 一种Netflow流量数据的采集方法和设备 |
CN108255859A (zh) * | 2016-12-29 | 2018-07-06 | 航天信息股份有限公司 | 一种用于为海量数字证书建立索引的方法及系统 |
CN108573035A (zh) * | 2018-04-02 | 2018-09-25 | 郑州云海信息技术有限公司 | 一种数据存储方法 |
CN109902092A (zh) * | 2019-02-22 | 2019-06-18 | 广州荔支网络技术有限公司 | 一种数据存储系统的操作方法、装置和移动终端 |
CN110245134A (zh) * | 2019-04-26 | 2019-09-17 | 石化盈科信息技术有限责任公司 | 一种应用于搜索服务的增量同步方法 |
CN111694676A (zh) * | 2020-04-30 | 2020-09-22 | 北京奇艺世纪科技有限公司 | 一种针对键值观察模式的处理方法及装置 |
US10789243B2 (en) | 2017-05-25 | 2020-09-29 | Alibaba Group Holding Limited | Database state determining method and device, and consistency verifying method and device |
CN111859445A (zh) * | 2020-06-14 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种基于k-db数据库的数据安全实现方法及系统 |
CN112597195A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 缓存数据刷新方法及分布式系统 |
CN113535258A (zh) * | 2021-06-25 | 2021-10-22 | 杭州加速科技有限公司 | 一种Pattern文件加载方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721749B1 (en) * | 2000-07-06 | 2004-04-13 | Microsoft Corporation | Populating a data warehouse using a pipeline approach |
CN101331496A (zh) * | 2005-12-15 | 2008-12-24 | 国际商业机器公司 | 用于在数据处理系统中将安全信息与信息对象关联起来的系统和方法 |
CN102662946A (zh) * | 2012-02-20 | 2012-09-12 | 北京地拓科技发展有限公司 | 一种自动监测数据库中记录变化的方法和系统 |
-
2013
- 2013-07-17 CN CN201310300815.7A patent/CN103345521B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721749B1 (en) * | 2000-07-06 | 2004-04-13 | Microsoft Corporation | Populating a data warehouse using a pipeline approach |
CN101331496A (zh) * | 2005-12-15 | 2008-12-24 | 国际商业机器公司 | 用于在数据处理系统中将安全信息与信息对象关联起来的系统和方法 |
CN102662946A (zh) * | 2012-02-20 | 2012-09-12 | 北京地拓科技发展有限公司 | 一种自动监测数据库中记录变化的方法和系统 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216708B (zh) * | 2014-08-20 | 2018-08-10 | 北京奇艺世纪科技有限公司 | 一种数据监控的方法和装置 |
CN104216708A (zh) * | 2014-08-20 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据监控的方法和装置 |
CN104486777A (zh) * | 2014-12-01 | 2015-04-01 | 中国联合网络通信集团有限公司 | 一种实现数据处理的方法及装置 |
CN104486777B (zh) * | 2014-12-01 | 2017-12-29 | 中国联合网络通信集团有限公司 | 一种实现数据处理的方法及装置 |
CN104936210A (zh) * | 2015-04-20 | 2015-09-23 | 中国联合网络通信集团有限公司 | 一种确定号码状态的方法及装置 |
CN104936210B (zh) * | 2015-04-20 | 2018-04-10 | 中国联合网络通信集团有限公司 | 一种确定号码状态的方法及装置 |
CN106899443A (zh) * | 2015-12-18 | 2017-06-27 | 北京神州泰岳软件股份有限公司 | 一种Netflow流量数据的采集方法和设备 |
CN106899443B (zh) * | 2015-12-18 | 2020-06-26 | 北京神州泰岳软件股份有限公司 | 一种Netflow流量数据的采集方法和设备 |
CN106503040B (zh) * | 2016-09-20 | 2019-08-02 | 福建天晴数码有限公司 | 适用sql查询方法的kv数据库及其创建方法 |
CN106503040A (zh) * | 2016-09-20 | 2017-03-15 | 福建天晴数码有限公司 | 适用sql查询方法的kv数据库及其创建方法 |
CN108255859A (zh) * | 2016-12-29 | 2018-07-06 | 航天信息股份有限公司 | 一种用于为海量数字证书建立索引的方法及系统 |
TWI710916B (zh) * | 2017-05-25 | 2020-11-21 | 開曼群島商創新先進技術有限公司 | 資料庫狀態確定方法、一致性驗證方法及裝置 |
US10789243B2 (en) | 2017-05-25 | 2020-09-29 | Alibaba Group Holding Limited | Database state determining method and device, and consistency verifying method and device |
CN108573035A (zh) * | 2018-04-02 | 2018-09-25 | 郑州云海信息技术有限公司 | 一种数据存储方法 |
CN109902092B (zh) * | 2019-02-22 | 2020-05-05 | 广州荔支网络技术有限公司 | 一种数据存储系统的操作方法、装置和移动终端 |
CN109902092A (zh) * | 2019-02-22 | 2019-06-18 | 广州荔支网络技术有限公司 | 一种数据存储系统的操作方法、装置和移动终端 |
CN110245134A (zh) * | 2019-04-26 | 2019-09-17 | 石化盈科信息技术有限责任公司 | 一种应用于搜索服务的增量同步方法 |
CN110245134B (zh) * | 2019-04-26 | 2021-07-06 | 石化盈科信息技术有限责任公司 | 一种应用于搜索服务的增量同步方法 |
CN111694676A (zh) * | 2020-04-30 | 2020-09-22 | 北京奇艺世纪科技有限公司 | 一种针对键值观察模式的处理方法及装置 |
CN111694676B (zh) * | 2020-04-30 | 2024-03-05 | 北京奇艺世纪科技有限公司 | 一种针对键值观察模式的处理方法及装置 |
CN111859445A (zh) * | 2020-06-14 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种基于k-db数据库的数据安全实现方法及系统 |
CN111859445B (zh) * | 2020-06-14 | 2022-08-02 | 苏州浪潮智能科技有限公司 | 一种基于k-db数据库的数据安全实现方法及系统 |
US12254100B2 (en) | 2020-06-14 | 2025-03-18 | Inspur Suzhou Intelligent Technology Co., Ltd. | Data security realization method and system based on K-DB database, and storage medium |
CN112597195A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 缓存数据刷新方法及分布式系统 |
CN112597195B (zh) * | 2020-12-16 | 2024-08-13 | 中国建设银行股份有限公司 | 缓存数据刷新方法及分布式系统 |
CN113535258A (zh) * | 2021-06-25 | 2021-10-22 | 杭州加速科技有限公司 | 一种Pattern文件加载方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103345521B (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103345521A (zh) | 一种在哈希表数据库中处理键值的方法和装置 | |
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
US20180365489A1 (en) | Automatically organizing images | |
US7840546B2 (en) | Method and apparatus for conducting data queries using consolidation strings and inter-node consolidation | |
US20110153644A1 (en) | Method and apparatus for utilizing a scalable data structure | |
CN107169083A (zh) | 公安卡口海量车辆数据存储与检索方法及装置、电子设备 | |
US10275742B2 (en) | Methods and devices for managing emails | |
CN102819586A (zh) | 一种基于高速缓存的url分类方法和设备 | |
CN102521364B (zh) | 一种图上两点间最短路径查询方法 | |
EP3767486B1 (en) | Multi-record index structure for key-value stores | |
CN103631909A (zh) | 对大规模结构化和非结构化数据联合处理的系统及方法 | |
CN108846121A (zh) | 一种数据搜索方法和装置 | |
US8015195B2 (en) | Modifying entry names in directory server | |
CN105224532A (zh) | 数据处理方法及装置 | |
CN101854374A (zh) | 数据节点装置、对端信息获取方法和系统 | |
Li et al. | Efficient subspace skyline query based on user preference using MapReduce | |
CN104346347A (zh) | 数据存储方法、装置、服务器及系统 | |
CN107862068B (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN111309946B (zh) | 一种已建立档案优化方法及装置 | |
US20090276436A1 (en) | Method, apparatus, and computer program product for providing service invitations | |
CN104956340A (zh) | 可扩展数据重复删除 | |
CN110515979A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN113779286A (zh) | 管理图数据的方法及装置 | |
CN103077214A (zh) | 文件存储方法及装置 | |
US20170004531A1 (en) | Advertisement selection using information retrieval systems |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180911 Address after: 100190 Beijing Haidian District Zhichun Road 49 No. 3 West 309 Patentee after: Tencent cloud computing (Beijing) limited liability company Address before: 518044 East 403 room, Sai Ge science and Technology Park, Futian District Zhenxing Road, Shenzhen, Guangdong, China, 2 Patentee before: Tencent Technology (Shenzhen) Co., Ltd. |