CN103268318A - 一种强一致性的分布式键值数据库***及其读写方法 - Google Patents
一种强一致性的分布式键值数据库***及其读写方法 Download PDFInfo
- Publication number
- CN103268318A CN103268318A CN2013101314548A CN201310131454A CN103268318A CN 103268318 A CN103268318 A CN 103268318A CN 2013101314548 A CN2013101314548 A CN 2013101314548A CN 201310131454 A CN201310131454 A CN 201310131454A CN 103268318 A CN103268318 A CN 103268318A
- Authority
- CN
- China
- Prior art keywords
- module
- node
- write request
- read
- write
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式键值数据库***,包括客户端和数据服务器集群,客户端包括哈希模块、定位模块和转发模块,数据服务器集群包括多个数据区间,每个数据区间包括一个主节点和多个从节点,主节点包括第一读模块、写模块、第一恢复模块、第一日志模块、第一决议模块和第一存储引擎模块,哈希模块用于接收从客户发来的写请求,并根据写请求的键将该写请求定位到数据区间,每个写请求都具有一个***自动分配的编号,定位模块用于将写请求定位到数据区间的主节点,转发模块用于将写请求发送到主节点的写模块。本发明实现了在较小的开销的情况下,提供数据副本之间的强一致性。
Description
技术领域
本发明属于数据库及数据存储技术领域,更具体地,涉及一种强一致性的分布式键值数据库***及其读写方法。
背景技术
随着数字化时代的到来,数据信息呈***式增长趋势。特别是随着近年来web2.0时代的到来、大规模的互联网应用的出现以及云存储的兴起,积累了大量的非结构化的数据,这些应用逐步扩展其存储需求从而超出了传统企业数据库所能管理的数据容量。
针对该类场景,成功的解决方案是利用分布式键值(key-value)型Nosql数据库结合压缩、分块等技术提高数据的压缩效率和存储规模。典型的分布式键值型No sql数据库有Google的Bigtable,Apache的Hbase,Amazon的Dynamo以及Yahoo的PNUTS。
除了扩展性方面的需求,许多网络和云计算应用还需要数据库提供24*7的高可靠、高可用性***,然而在数千个节点的集群中,节点失效是不可避免的,因此,需要一定的副本策略来保证***的高可用性和容错。一种解决方案是采用主备副本协议,然而主备协议不是一种好的解决方案,其在处理两个节点失效时很难保证副本间的一致性以及***的可用性;在***中有3个及以上的副本数时,paxos协议被证明是唯一可保证副本强一致性的协议,对于有2F+1个副本的***中,paxos协议可以容忍F个节点失效,使***具有较高的可用性。
上述几种典型的解决方案都存在有以下缺陷:一致性不好,或者导致开销大。Amazon的Dynamo只能提供副本之间的最终一致性,不同副本之间的数据出现不一致时,需要使用复杂的冲突避免和解决机制;Google的Bigtable可以提供副本强一致性并且支持单操作事务,但是Bigtable依赖于GFS文件***,Bigtable在处理事务操作时开销很大;Yahoo的PNUTS提供弱一致性保证,而且其关注的是跨数据中心的副本一致性。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种强一致性的分布式键值数据库***,其针对现有***的存储引擎做了优化,并实现了在较小的开销的情况下,提供数据副本之间的强一致性。
为实现上述目的,本发明提供了一种强一致性的分布式键值数据库***,包括客户端和数据服务器集群,客户端包括哈希模块、定位模块和转发模块,数据服务器集群包括多个数据区间,每个数据区间包括一个主节点和多个从节点,主节点包括第一读模块、写模块、第一恢复模块、第一日志模块、第一决议模块、第一存储引擎模块,从节点包括第二读模块、第二决议模块、第二日志模块、第二恢复模块、第二存储引擎模块,哈希模块用于接收从客户发来的写请求,并根据写请求的键将该写请求定位到数据区间,每个写请求都具有一个***自动分配的编号,定位模块用于将写请求定位到数据区间的主节点,转发模块用于将写请求发送到主节点的写模块,主节点的写模块用于将写请求发送到第一日志模块和第一决议模块,第一日志模块用于将写请求写入日志,第一决议模块用于将写请求发送到多个从节点的第二决议模块,从节点的第二决议模块用于将写请求发送到第二日志模块,并将应答信息发送到主节点的第一决议模块,第二日志模块用于将写请求写入日志,第一决议模块还用于统计来自从节点的第二决议模块的应答信息的数量,并判断其是否大于从节点数量的一半,如果大于则表示该写请求可以被继续执行,将写请求写入主节点的第一存储引擎模块,否则过程结束,第一决议模块还用于定时将提交信息发送到从节点的第二决议模块,第二决议模块还用于根据接收到的提交信息将写请求写入第二存储引擎模块,哈希模块还用于接收从客户发来的读请求,并根据读请求的键值将该读请求定位到相应的数据区间,定位模块还用于判断读请求是否需要读取最新的数据,若是则将该读请求定位到数据区间的主节点,否则将该读请求定位到数据空间的主节点或任意从节点,转发模块还用于将读请求发送到定位模块所定位到的主节点的第一读模块或者从节点的第二读模块,第一读模块用于从转发模块接收读请求,并从第一存储引擎模块中读取所需数据,并将数据返回给客户端,第二读模块用于从转发模块接收读请求,并从第二存储引擎模块中读取所需数据,并将数据返回给客户端。
第一决议模块具体是从***中得到该主节点所属数据区间的从节点ip列表,然后根据ip逐个给从节点发送写请求以及该写请求的编号。
第二决议模块具体是首先获得该从节点已经收到的写请求的最大编号x,并跟当前收到的写请求编号y相比,如果x+1=y,则第二决议模块会给主节点发送应答信息,如果x+1≠y,则第二决议模块不会给主节点发送应答信息。
提交信息为主节点最近处理的写请求的编号。
第一存储引擎模块和第二存储引擎模块完全相同,且均为Leveldb存储库,且采用二级缓存队列的方式,Leveldb存储库中的二级缓存采用固态硬盘,用于缓存内存中有的SSTable的真实数据,Leveldb存储库中的一级缓存采用内存,用于缓存SSTable的元信息,内存和SSD的缓存置换算法都采用LRU算法。
第二决议模块根据写请求的信息中的键值,通过Leveldb存储库的写方法,将该条键值记录写入Leveldb存储库中。
第一读模块和第二读模块具体是根据读请求的信息中的键,通过Leveldb存储库的读方法,从Leveldb存储库中读取到键所对应的值。
通过本发明所构思的以上技术方案,与现有技术相比,本***具有以下的有益效果:
1、具有强一致性:由于采用了第一决议模块和第二决议模块,***只有确保写请求在主节点成功执行以及写请求得到从节点的认可,该写请求才算成功执行,然后向客户端返回,同时主节点也会定时的向从节点发送数据同步信息,主备节点都具有相同的最新数据。
2、***开销小:由于本***采用了具有中心化节点的架构,节点之间无复杂的通信开销,并且没有主备协议或二阶段提交协议的由于某一副本写入失败而阻塞整个写入过程的缺点。
本发明的另一目的在于提供一种强一致性的分布式键值数据库***的写方法,其针对现有***的存储引擎做了优化,并实现了在较小的开销的情况下,提供数据副本之间的强一致性。
为实现上述目的,本发明提供了一种强一致性的分布式键值数据库***的写方法,包括以下步骤:
(1)哈希模块接收从客户发来的写请求,并根据写请求的键将该写请求定位到数据区间;
(2)定位模块将写请求定位到数据区间的主节点;
(3)客户端转发模块将请求发送给主节点的写模块;
(4)主节点的写模块将写请求发送到第一决议模块和第一日志模块;
(5)第一日志模块将写请求写入日志;
(6)第一决议模块将写请求发送到该数据区间的所有从节点的第二决议模块;
(7)从节点的第二决议模块将写请求发送到第二日志模块,并将应答信息发送到主节点的第一决议模块;
(8)第二日志模块将写请求写入日志;
(9)第一决议模块统计来自从节点的第二决议模块的应答信息的数量,并判断其是否大于从节点数量的一半,如果大于则表示该写请求可以被执行,转到步骤(10),否则过程结束;
(10)第一决议模块将已经决议的写请求写入主节点的第一存储引擎模块;
(11)第一决议模块定时将提交信息发送到从节点的第二决议模块;
(12)第二决议模块根据接收到的提交信息,将该编号以前的所有写请求写入第二存储引擎模块。
通过本发明所构思的以上技术方案,与现有技术相比,本方法具有以下的有益效果:
1、具有强一致性:由于本方法只有确保写请求在主节点成功执行以及写请求得到从节点的认可,该写请求才算成功执行,然后向客户端返回,同时主节点也会定时的向从节点发送数据同步信息,主备节点都具有相同的最新数据。
2、***开销小:由于本方法采用了具有中心化节点的架构,节点之间无复杂的通信开销,并且没有主备协议或二阶段提交协议的由于某一副本写入失败而阻塞整个写入过程的缺点。
本发明的另一目的在于提供一种强一致性的分布式键值数据库***的读方法,其针对现有***的存储引擎做了优化,并实现了在较小的开销的情况下,提供数据副本之间的强一致性。
为实现上述目的,本发明提供了一种强一致性的分布式键值数据库***的读方法,包括以下步骤:
(1)哈希模块接收从客户发来的读请求,并根据读请求的键值将该读请求定位到相应的数据区间;
(2)定位模块判断读请求是否需要读取最新的数据,若是则将该读请求定位到数据区间的主节点,否则将该读请求定位到数据空间的主节点或任意从节点;
(3)转发模块判断定位模块定位到的节点,若是主节点,则将读请求发送到主节点的第一读模块,转到步骤(4),否则,将读请求发送到从节点的第二读模块,转到步骤(5);
(4)第一读模块从转发模块接收读请求,并从第一存储引擎模块中读取所需数据,若读取成功将读到的数据返回给客户端,否则给客户端发送读取失败信息;
(5)第二读模块从转发模块接收读请求,并从第二存储引擎模块中读取所需数据,若读取成功将读到的数据返回给客户端,否则给客户端发送读取失败信息。
通过本发明所构思的以上技术方案,与现有技术相比,本方法具有以下的有益效果:
1、具有强一致性:由于本方法只有确保读请求在主节点成功执行以及读请求得到从节点的认可,该写请求才算成功执行,然后向客户端返回,同时主节点也会定时的向从节点发送数据同步信息,主备节点都具有相同的最新数据。
2、***开销小:由于本方法采用了具有中心化节点的架构,节点之间无复杂的通信开销,并且没有主备协议或二阶段提交协议的由于某一副本写入失败而阻塞整个写入过程的缺点。
附图说明
图1是本发明分布式键值数据库***的结构示意图。
图2是本发明***中第一存储引擎模块和第二存储引擎模块的示意图。
图3是本发明分布式键值数据库***写方法的流程图。
图4是本发明分布式键值数据库***读方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明的分布式键值数据库***包括客户端1和数据服务器集群,客户端1包括哈希模块11、定位模块12和转发模块13,数据服务器集群包括多个数据区间,每个数据区间包括一个主节点3和多个从节点4,主节点3包括第一读模块31、写模块33、第一恢复模块34、第一日志模块35、第一决议模块36、第一存储引擎模块37。从节点4包括第二读模块41、第二决议模块43、第二日志模块44、第二恢复模块45、第二存储引擎模块46。所有的键值可以根据键被划分成多个数据区间,每个数据区间管理特定的数据,每个数据只能被存储到一个数据区间中,每个数据区间包括有一个主节点3和多个从节点4。
如图2所示,第一存储引擎模块37和第二存储引擎模块46完全相同,且均为Google公司开发的Leveldb存储库(Storage library),本发明使用了二级缓存队列的方式改进Leveldb原有的缓存机制,从而提高了Leveldb的读性能,具体做法为:Leveldb原有的缓存机制是使用内存缓存Leveldb中SSTable的元信息,每次需要从SSTable中读取数据时,都需要从磁盘上读取真实的数据,本发明在原有缓存机制上增加了固态硬盘(Solid state disk,简称SSD)构成二级缓存,内存为一级缓存,仍然缓存SSTable的元信息,SSD为二级缓存,用于缓存内存中有的SSTable的真实数据,内存和SSD的缓存置换算法都采用最近最少使用算法(LeastRecently Used,简称LRU);另外,由于Leveldb作为分布式键值数据库***的底层存储引擎,而本发明的分布式键值数据库***本身已经具有日志模块,因此去掉了现有Leveldb的日志模块,存储引擎执行写操作时,不再写日志。
如图1所示,在本发明的分布式键值数据库***处于写过程中时,哈希模块11用于接收从客户发来的写请求,并根据写请求的键(key)将该写请求定位到数据区间。每个写请求都具有一个***自动分配的编号。
定位模块12用于将写请求定位到数据区间的主节点3。
转发模块13用于将写请求发送到主节点3的写模块33。
主节点3的写模块33用于将写请求发送到第一日志模块35和第一决议模块36。
第一日志模块35用于将写请求写入日志。
第一决议模块36用于将写请求发送到多个从节点4的第二决议模块43。具体而言,第一决议模块会从***中得到该主节点3所属数据区间的从节点ip列表,然后根据ip逐个给从节点4发送该写请求信息,发送的信息中还包括了该写请求的编号。
从节点4的第二决议模块43用于将写请求发送到第二日志模块44,并将应答信息发送到主节点3的第一决议模块36。具体而言,第二决议模块会首先获得该从节点4已经收到的写请求的最大编号(设为x),然后跟当前收到的写请求编号(设为y)相比,如果x+1=y,则第二决议模块会给主节点3发送应答信息,如果x+1≠y,则第二决议模块不会给主节点发送应答信息。
第二日志模块44用于将写请求写入日志。
第一决议模块36还用于统计来自从节点4的第二决议模块43的应答信息的数量,并判断其是否大于从节点4数量的一半,如果大于则表示该写请求可以被继续执行,将写请求写入主节点3的第一存储引擎模块37,否则过程结束。
第一决议模块36还用于定时将提交(Commit)信息发送到从节点4的第二决议模块43。在本实施方式中,提交的时间周期为30秒。提交信息具体为主节点3最近处理的写请求的编号。
第二决议模块43还用于根据接收到的提交信息将写请求写入第二存储引擎模块46。具体而言,根据写请求的信息中的键(key)值(value),通过Leveldb的写方法(put方法),将该条键值记录写入Leveldb中去。
如图3所示,本发明***的写方法包括以下步骤:
(1)哈希模块11接收从客户发来的写请求,并根据写请求的键(key)将该写请求定位到数据区间;
(2)定位模块12将写请求定位到数据区间的主节点3;
(3)客户端转发模块将请求发送给主节点3的写模块33;
(4)主节点3的写模块33将写请求发送到第一决议模块36和第一日志模块35。
(5)第一日志模块35将写请求写入日志。
(6)第一决议模块36将写请求发送到该数据区间的所有从节点4的第二决议模块43。具体而言,第一决议模块会从***中得到该主节点3所属数据区间的从节点ip列表,然后根据ip逐个给从节点4发送该写请求信息,发送的信息中还包括了该写请求的编号。
(7)从节点4的第二决议模块43将写请求发送到第二日志模块44,并将应答信息发送到主节点3的第一决议模块36。具体而言,第二决议模块会首先获得该从节点4已经收到的写请求的最大编号(设为x),然后跟当前收到的写请求编号(设为y)相比,如果x+1=y,则第二决议模块会给主节点3发送应答信息,转到步骤(8)如果x+1≠y,则第二决议模块不会给主节点发送应答信息,转到步骤(9)。
(8)第二日志模块44将写请求写入日志。
(9)第一决议模块36统计来自从节点4的第二决议模块43的应答信息的数量,并判断其是否大于从节点4数量的一半,如果大于则表示该写请求可以被执行,转到步骤(10),否则过程结束。
(10)第一决议模块36将已经决议的写请求写入主节点3的第一存储引擎模块37。
(11)第一决议模块36定时将提交(Commit)信息发送到从节点4的第二决议模块43。在本实施方式中,提交的时间周期为30秒。提交信息具体为主节点3最近处理的写请求的编号。
(12)第二决议模块43根据接收到的提交信息(主节点最近处理的写请求执行编号),将该编号以前的所有写请求写入第二存储引擎模块46。具体而言,根据写请求的信息中的键(key)值(value),通过Leveldb的写方法(put方法),将该条键值记录写入Leveldb中去,写入过程结束。
如图1所示,在本发明的分布式键值数据库***处于读过程中时,哈希模块11用于接收从客户发来的读请求,并根据读请求的键值将该读请求定位到相应的数据区间。
定位模块12用于判断读请求是否需要读取最新的数据,若是则将该读请求定位到数据区间的主节点3,否则将该读请求定位到数据空间的任意节点(包括主节点3和任意从节点4)。
转发模块13用于将读请求发送到定位模块12所定位到的主节点3的第一读模块31或者从节点4的第二读模块41。
第一读模块31用于从转发模块13接收读请求,并从第一存储引擎模块37中读取所需数据,并将数据返回给客户端。具体而言,根据读请求的信息中的键(key),通过Leveldb的读方法(get方法),从Leveldb中读取到键(key)所对应的值(value)。
第二读模块41用于从转发模块13接收读请求,并从第二存储引擎模块47中读取所需数据,并将数据返回给客户端。具体而言,根据读请求的信息中的键(key),通过Leveldb的读方法(get方法),从Leveldb中读取到键(key)所对应的值(value)。
如图4所示,本发明***的读方法包括以下步骤:
(1)哈希模块11接收从客户发来的读请求,并根据读请求的键值将该读请求定位到相应的数据区间。
(2)定位模块12判断读请求是否需要读取最新的数据,若是则将该读请求定位到数据区间的主节点3,否则将该读请求定位到数据空间的任意节点(包括主节点3和任意从节点4)。
(3)转发模块13判断定位模块12定位到的节点,若是主节点3,则将读请求发送到主节点3的第一读模块31,转到步骤(4),否则,将读请求发送到从节点4的第二读模块41,转到步骤(5)。
(4)第一读模块31从转发模块13接收读请求,并从第一存储引擎模块37中读取所需数据,具体而言,根据读请求的信息中的键(key),通过Leveldb的读方法(get方法),从Leveldb中读取到键(key)所对应的值(value)。若读取成功将读到的数据返回给客户端,否则给客户端发送读取失败信息。
第二读模块41从转发模块13接收读请求,并从第二存储引擎模块47中读取所需数据,若读取成功将读到的数据返回给客户端,否则给客户端发送读取失败信息。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种强一致性的分布式键值数据库***,包括客户端和数据服务器集群,客户端包括哈希模块、定位模块和转发模块,数据服务器集群包括多个数据区间,每个数据区间包括一个主节点和多个从节点,主节点包括第一读模块、写模块、第一恢复模块、第一日志模块、第一决议模块、第一存储引擎模块,从节点包括第二读模块、第二决议模块、第二日志模块、第二恢复模块、第二存储引擎模块,其特征在于,
哈希模块用于接收从客户发来的写请求,并根据写请求的键将该写请求定位到数据区间,每个写请求都具有一个***自动分配的编号;
定位模块用于将写请求定位到数据区间的主节点;
转发模块用于将写请求发送到主节点的写模块;
主节点的写模块用于将写请求发送到第一日志模块和第一决议模块;
第一日志模块用于将写请求写入日志;
第一决议模块用于将写请求发送到多个从节点的第二决议模块;
从节点的第二决议模块用于将写请求发送到第二日志模块,并将应答信息发送到主节点的第一决议模块;
第二日志模块用于将写请求写入日志;
第一决议模块还用于统计来自从节点的第二决议模块的应答信息的数量,并判断其是否大于从节点数量的一半,如果大于则表示该写请求可以被继续执行,将写请求写入主节点的第一存储引擎模块,否则过程结束;
第一决议模块还用于定时将提交信息发送到从节点的第二决议模块;
第二决议模块还用于根据接收到的提交信息将写请求写入第二存储引擎模块;
哈希模块还用于接收从客户发来的读请求,并根据读请求的键值将该读请求定位到相应的数据区间;
定位模块还用于判断读请求是否需要读取最新的数据,若是则将该读请求定位到数据区间的主节点,否则将该读请求定位到数据空间的主节点或任意从节点;
转发模块还用于将读请求发送到定位模块所定位到的主节点的第一读模块或者从节点的第二读模块;
第一读模块用于从转发模块接收读请求,并从第一存储引擎模块中读取所需数据,并将数据返回给客户端;
第二读模块用于从转发模块接收读请求,并从第二存储引擎模块中读取所需数据,并将数据返回给客户端。
2.根据权利要求1所述的分布式键值数据库***,其特征在于,第一决议模块具体是从***中得到该主节点所属数据区间的从节点ip列表,然后根据ip逐个给从节点发送写请求以及该写请求的编号。
3.根据权利要求1所述的分布式键值数据库***,其特征在于,第二决议模块具体是首先获得该从节点已经收到的写请求的最大编号x,并跟当前收到的写请求编号y相比,如果x+1=y,则第二决议模块会给主节点发送应答信息,如果x+1≠y,则第二决议模块不会给主节点发送应答信息。
4.根据权利要求1所述的分布式键值数据库***,其特征在于,提交信息为主节点最近处理的写请求的编号。
5.根据权利要求1所述的分布式键值数据库***,其特征在于,
第一存储引擎模块和第二存储引擎模块完全相同,且均为改进的Leveldb存储库,且采用二级缓存队列的方式;
Leveldb存储库中的二级缓存采用固态硬盘,用于缓存内存中有的SSTable的真实数据;
Leveldb存储库中的一级缓存采用内存,用于缓存SSTable的元信息;
内存和SSD的缓存置换算法都采用LRU算法。
6.根据权利要求5所述的分布式键值数据库***,其特征在于,第二决议模块根据写请求的信息中的键值,通过Leveldb存储库的写方法,将该条键值记录写入Leveldb存储库中。
7.根据权利要求1所述的分布式键值数据库***,其特征在于,第一读模块和第二读模块具体是根据读请求的信息中的键,通过Leveldb存储库的读方法,从Leveldb存储库中读取到键所对应的值。
8.一种根据权利要求1所述分布式键值数据库***的写方法,其特征在于,包括以下步骤:
(1)哈希模块接收从客户发来的写请求,并根据写请求的键将该写请求定位到数据区间;
(2)定位模块将写请求定位到数据区间的主节点;
(3)客户端转发模块将请求发送给主节点的写模块;
(4)主节点的写模块将写请求发送到第一决议模块和第一日志模块;
(5)第一日志模块将写请求写入日志;
(6)第一决议模块将写请求发送到该数据区间的所有从节点的第二决议模块;
(7)从节点的第二决议模块将写请求发送到第二日志模块,并将应答信息发送到主节点的第一决议模块;
(8)第二日志模块将写请求写入日志;
(9)第一决议模块统计来自从节点的第二决议模块的应答信息的数量,并判断其是否大于从节点数量的一半,如果大于则表示该写请求可以被执行,转到步骤(10),否则过程结束;
(10)第一决议模块将已经决议的写请求写入主节点的第一存储引擎模块;
(11)第一决议模块定时将提交信息发送到从节点的第二决议模块;
(12)第二决议模块根据接收到的提交信息,将该编号以前的所有写请求写入第二存储引擎模块。
9.一种根据权利要求1所述分布式键值数据库***的读方法,其特征在于,包括以下步骤:
(1)哈希模块接收从客户发来的读请求,并根据读请求的键值将该读请求定位到相应的数据区间;
(2)定位模块判断读请求是否需要读取最新的数据,若是则将该读请求定位到数据区间的主节点,否则将该读请求定位到数据空间的主节点或任意从节点;
(3)转发模块判断定位模块定位到的节点,若是主节点,则将读请求发送到主节点的第一读模块,转到步骤(4),否则,将读请求发送到从节点的第二读模块,转到步骤(5);
(4)第一读模块从转发模块接收读请求,并从第一存储引擎模块中读取所需数据,若读取成功将读到的数据返回给客户端,否则给客户端发送读取失败信息;
(5)第二读模块从转发模块接收读请求,并从第二存储引擎模块中读取所需数据,若读取成功将读到的数据返回给客户端,否则给客户端发送读取失败信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310131454.8A CN103268318B (zh) | 2013-04-16 | 2013-04-16 | 一种强一致性的分布式键值数据库***及其读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310131454.8A CN103268318B (zh) | 2013-04-16 | 2013-04-16 | 一种强一致性的分布式键值数据库***及其读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103268318A true CN103268318A (zh) | 2013-08-28 |
CN103268318B CN103268318B (zh) | 2016-04-13 |
Family
ID=49011947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310131454.8A Active CN103268318B (zh) | 2013-04-16 | 2013-04-16 | 一种强一致性的分布式键值数据库***及其读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103268318B (zh) |
Cited By (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103747072A (zh) * | 2013-12-30 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种读写数据的方法和应用服务器 |
CN104283956A (zh) * | 2014-09-30 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 强一致性分布式数据存储方法、装置及*** |
CN104735107A (zh) * | 2013-12-20 | 2015-06-24 | ***通信集团公司 | 分布式存储***中数据副本恢复方法及装置 |
CN104754006A (zh) * | 2013-12-31 | 2015-07-01 | 上海品志文化传播有限公司 | 构建高可用性分布式***的方法 |
CN104866430A (zh) * | 2015-04-30 | 2015-08-26 | 上海交通大学 | 结合主从备份和纠删码的内存计算***高可用优化方法 |
CN104935654A (zh) * | 2015-06-10 | 2015-09-23 | 华为技术有限公司 | 一种服务器集群***中的缓存方法、写入点客户端和读客户端 |
CN105068765A (zh) * | 2015-08-13 | 2015-11-18 | 浪潮(北京)电子信息产业有限公司 | 一种基于键值数据库的日志处理方法及*** |
CN105426439A (zh) * | 2015-11-05 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 一种元数据的处理方法和装置 |
CN105426451A (zh) * | 2015-11-11 | 2016-03-23 | 深圳市华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及*** |
CN105468718A (zh) * | 2015-11-18 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 数据一致性处理方法、装置和*** |
CN105589960A (zh) * | 2015-12-22 | 2016-05-18 | 北京奇虎科技有限公司 | 基于多个数据库集群的数据请求处理方法及装置 |
CN103812877B (zh) * | 2014-03-12 | 2016-10-12 | 西安电子科技大学 | 基于Bigtable分布式存储***的数据压缩方法 |
CN106126583A (zh) * | 2016-06-20 | 2016-11-16 | 环球大数据科技有限公司 | 一种分布式图数据库的集群强一致性处理方法及*** |
CN106557282A (zh) * | 2016-11-07 | 2017-04-05 | 华为技术有限公司 | 响应写请求的方法和装置 |
CN106598497A (zh) * | 2016-12-09 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种服务器集群数据存储方法及装置 |
CN106682134A (zh) * | 2016-12-16 | 2017-05-17 | 郑州云海信息技术有限公司 | leveldb数据库中数据对写入的方法、装置及*** |
CN107066498A (zh) * | 2016-12-30 | 2017-08-18 | 成都华为技术有限公司 | 键值kv存储方法和装置 |
CN107396320A (zh) * | 2017-07-05 | 2017-11-24 | 河海大学 | 一种基于缓存队列的多探测源分布式室内实时定位方法 |
WO2018006624A1 (zh) * | 2016-07-08 | 2018-01-11 | 苏州超块链信息科技有限公司 | 一种数据一致性并行维护方法 |
CN107710203A (zh) * | 2015-06-29 | 2018-02-16 | 微软技术许可有限责任公司 | 分布式键/值存储库之上的事务数据库层 |
CN107908370A (zh) * | 2017-11-30 | 2018-04-13 | 新华三技术有限公司 | 数据存储方法及装置 |
CN108009019A (zh) * | 2016-10-29 | 2018-05-08 | 网宿科技股份有限公司 | 分布式数据定位实例的方法、客户端及分布式计算*** |
CN108345621A (zh) * | 2017-01-24 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种数据对账方法、***及数据*** |
CN108829787A (zh) * | 2018-05-31 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种元数据分布式*** |
CN109426435A (zh) * | 2017-08-25 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 分布式***的一致性实现方法和装置 |
CN109560951A (zh) * | 2017-09-27 | 2019-04-02 | 亿阳信通股份有限公司 | 一种配置方法、告警实时统计方法、服务器及*** |
CN109634965A (zh) * | 2018-12-17 | 2019-04-16 | 郑州云海信息技术有限公司 | 背板配置信息访问方法、装置、设备及介质 |
CN109739684A (zh) * | 2018-11-20 | 2019-05-10 | 清华大学 | 基于向量时钟的分布式键值数据库的副本修复方法与装置 |
CN110046202A (zh) * | 2019-03-07 | 2019-07-23 | 中国人民解放军海军工程大学 | 基于内存键值数据库的综合电力***实时数据管理方法 |
CN110419026A (zh) * | 2017-03-10 | 2019-11-05 | 维萨国际服务协会 | 存储器内搜索技术 |
WO2020000734A1 (zh) * | 2018-06-28 | 2020-01-02 | 平安科技(深圳)有限公司 | 存储对象的空间管理方法、装置、计算机装置及存储介质 |
CN110659315A (zh) * | 2019-08-06 | 2020-01-07 | 上海孚典智能科技有限公司 | 基于非易失性存储***的高性能非结构化数据库服务 |
CN110674106A (zh) * | 2019-08-30 | 2020-01-10 | 中国人民财产保险股份有限公司 | 保单数据的存储方法、装置、设备及计算机可读存储介质 |
WO2020024590A1 (en) * | 2018-08-02 | 2020-02-06 | Memverge, Inc. | Persistent memory key-value store in a distributed memory architecture |
CN111209138A (zh) * | 2018-11-22 | 2020-05-29 | 浙江宇视科技有限公司 | 数据存储***的运维方法及装置 |
CN111291062A (zh) * | 2020-01-21 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 数据同步写入方法、装置、计算机设备及存储介质 |
CN111368002A (zh) * | 2020-03-05 | 2020-07-03 | 广东小天才科技有限公司 | 一种数据处理方法、***、计算机设备和存储介质 |
CN111386522A (zh) * | 2017-11-22 | 2020-07-07 | 亚马逊科技公司 | 数据库表的多区多主复制 |
CN112000285A (zh) * | 2020-08-12 | 2020-11-27 | 广州市百果园信息技术有限公司 | 强一致存储***、数据强一致存储方法、服务器及介质 |
CN113220235A (zh) * | 2021-05-17 | 2021-08-06 | 北京青云科技股份有限公司 | 读写请求的处理方法、装置、设备及存储介质 |
CN113297231A (zh) * | 2020-07-28 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库处理方法及装置 |
WO2021168697A1 (zh) * | 2020-02-26 | 2021-09-02 | 深圳市欢太科技有限公司 | 数据同步方法、装置、数据存储***及计算机可读介质 |
CN113934745A (zh) * | 2020-06-29 | 2022-01-14 | 中兴通讯股份有限公司 | 数据同步处理方法、电子设备以及存储介质 |
CN116155922A (zh) * | 2023-04-17 | 2023-05-23 | 中国工商银行股份有限公司 | 会话数据处理方法、装置、***、电子设备及存储介质 |
WO2023143061A1 (zh) * | 2022-01-27 | 2023-08-03 | 华为技术有限公司 | 一种数据访问方法及其数据访问*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2189307A1 (en) * | 1995-11-02 | 1997-05-03 | Gerald K. Bortvedt | Method of commitment in a distributed database transaction |
CN102880531A (zh) * | 2012-09-27 | 2013-01-16 | 新浪网技术(中国)有限公司 | 数据库备份***及其备份方法和从数据库服务器 |
CN103002027A (zh) * | 2012-11-26 | 2013-03-27 | 中国科学院高能物理研究所 | 基于键值对***实现树形目录结构的数据存储***及方法 |
CN103020078A (zh) * | 2011-09-24 | 2013-04-03 | 国家电网公司 | 分布式实时数据库数据层次索引方法 |
US20130091241A1 (en) * | 2011-10-11 | 2013-04-11 | David Goetz | Distributed Rate Limiting Of Handling Requests |
-
2013
- 2013-04-16 CN CN201310131454.8A patent/CN103268318B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2189307A1 (en) * | 1995-11-02 | 1997-05-03 | Gerald K. Bortvedt | Method of commitment in a distributed database transaction |
CA2189307C (en) * | 1995-11-02 | 2004-07-20 | Gerald K. Bortvedt | Method of commitment in a distributed database transaction |
CN103020078A (zh) * | 2011-09-24 | 2013-04-03 | 国家电网公司 | 分布式实时数据库数据层次索引方法 |
US20130091241A1 (en) * | 2011-10-11 | 2013-04-11 | David Goetz | Distributed Rate Limiting Of Handling Requests |
CN102880531A (zh) * | 2012-09-27 | 2013-01-16 | 新浪网技术(中国)有限公司 | 数据库备份***及其备份方法和从数据库服务器 |
CN103002027A (zh) * | 2012-11-26 | 2013-03-27 | 中国科学院高能物理研究所 | 基于键值对***实现树形目录结构的数据存储***及方法 |
Non-Patent Citations (1)
Title |
---|
闫湖等: "基于分布式键值对存储技术的EMS数据库平台", 《电网技术》, vol. 36, no. 9, 30 September 2012 (2012-09-30), pages 162 - 167 * |
Cited By (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104735107A (zh) * | 2013-12-20 | 2015-06-24 | ***通信集团公司 | 分布式存储***中数据副本恢复方法及装置 |
CN104735107B (zh) * | 2013-12-20 | 2018-12-18 | ***通信集团公司 | 分布式存储***中数据副本恢复方法及装置 |
CN103747072A (zh) * | 2013-12-30 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种读写数据的方法和应用服务器 |
CN104754006A (zh) * | 2013-12-31 | 2015-07-01 | 上海品志文化传播有限公司 | 构建高可用性分布式***的方法 |
CN103812877B (zh) * | 2014-03-12 | 2016-10-12 | 西安电子科技大学 | 基于Bigtable分布式存储***的数据压缩方法 |
CN104283956A (zh) * | 2014-09-30 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 强一致性分布式数据存储方法、装置及*** |
CN104283956B (zh) * | 2014-09-30 | 2016-01-20 | 腾讯科技(深圳)有限公司 | 强一致性分布式数据存储方法、装置及*** |
CN104866430A (zh) * | 2015-04-30 | 2015-08-26 | 上海交通大学 | 结合主从备份和纠删码的内存计算***高可用优化方法 |
CN104866430B (zh) * | 2015-04-30 | 2017-12-15 | 上海交通大学 | 结合主从备份和纠删码的内存计算***高可用优化方法 |
CN104935654A (zh) * | 2015-06-10 | 2015-09-23 | 华为技术有限公司 | 一种服务器集群***中的缓存方法、写入点客户端和读客户端 |
CN104935654B (zh) * | 2015-06-10 | 2018-08-21 | 华为技术有限公司 | 一种服务器集群***中的缓存方法、写入点客户端和读客户端 |
WO2016197666A1 (zh) * | 2015-06-10 | 2016-12-15 | 华为技术有限公司 | 一种服务器集群***中的缓存方法、写入点客户端和读客户端 |
US11301457B2 (en) | 2015-06-29 | 2022-04-12 | Microsoft Technology Licensing, Llc | Transactional database layer above a distributed key/value store |
CN107710203A (zh) * | 2015-06-29 | 2018-02-16 | 微软技术许可有限责任公司 | 分布式键/值存储库之上的事务数据库层 |
CN105068765A (zh) * | 2015-08-13 | 2015-11-18 | 浪潮(北京)电子信息产业有限公司 | 一种基于键值数据库的日志处理方法及*** |
CN105426439A (zh) * | 2015-11-05 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 一种元数据的处理方法和装置 |
CN105426451A (zh) * | 2015-11-11 | 2016-03-23 | 深圳市华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及*** |
CN105468718B (zh) * | 2015-11-18 | 2020-09-08 | 腾讯科技(深圳)有限公司 | 数据一致性处理方法、装置和*** |
CN105468718A (zh) * | 2015-11-18 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 数据一致性处理方法、装置和*** |
CN105589960A (zh) * | 2015-12-22 | 2016-05-18 | 北京奇虎科技有限公司 | 基于多个数据库集群的数据请求处理方法及装置 |
CN106126583A (zh) * | 2016-06-20 | 2016-11-16 | 环球大数据科技有限公司 | 一种分布式图数据库的集群强一致性处理方法及*** |
WO2018006624A1 (zh) * | 2016-07-08 | 2018-01-11 | 苏州超块链信息科技有限公司 | 一种数据一致性并行维护方法 |
CN108009019A (zh) * | 2016-10-29 | 2018-05-08 | 网宿科技股份有限公司 | 分布式数据定位实例的方法、客户端及分布式计算*** |
CN106557282A (zh) * | 2016-11-07 | 2017-04-05 | 华为技术有限公司 | 响应写请求的方法和装置 |
CN106557282B (zh) * | 2016-11-07 | 2019-08-23 | 华为技术有限公司 | 响应写请求的方法和装置 |
CN106598497A (zh) * | 2016-12-09 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种服务器集群数据存储方法及装置 |
CN106598497B (zh) * | 2016-12-09 | 2019-09-24 | 郑州云海信息技术有限公司 | 一种服务器集群数据存储方法及装置 |
CN106682134A (zh) * | 2016-12-16 | 2017-05-17 | 郑州云海信息技术有限公司 | leveldb数据库中数据对写入的方法、装置及*** |
CN107066498A (zh) * | 2016-12-30 | 2017-08-18 | 成都华为技术有限公司 | 键值kv存储方法和装置 |
CN107066498B (zh) * | 2016-12-30 | 2020-04-14 | 成都华为技术有限公司 | 键值kv存储方法和装置 |
CN108345621A (zh) * | 2017-01-24 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种数据对账方法、***及数据*** |
CN108345621B (zh) * | 2017-01-24 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 一种数据对账方法、***及数据*** |
CN110419026A (zh) * | 2017-03-10 | 2019-11-05 | 维萨国际服务协会 | 存储器内搜索技术 |
US11687542B2 (en) | 2017-03-10 | 2023-06-27 | Visa International Service Association | Techniques for in-memory data searching |
CN110419026B (zh) * | 2017-03-10 | 2024-04-16 | 维萨国际服务协会 | 存储器内搜索技术 |
CN107396320B (zh) * | 2017-07-05 | 2020-02-18 | 河海大学 | 一种基于缓存队列的多探测源分布式室内实时定位方法 |
CN107396320A (zh) * | 2017-07-05 | 2017-11-24 | 河海大学 | 一种基于缓存队列的多探测源分布式室内实时定位方法 |
CN109426435B (zh) * | 2017-08-25 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 分布式***的一致性实现方法和装置 |
CN109426435A (zh) * | 2017-08-25 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 分布式***的一致性实现方法和装置 |
CN109560951A (zh) * | 2017-09-27 | 2019-04-02 | 亿阳信通股份有限公司 | 一种配置方法、告警实时统计方法、服务器及*** |
CN109560951B (zh) * | 2017-09-27 | 2023-04-07 | 亿阳信通股份有限公司 | 一种配置方法、告警实时统计方法、服务器及*** |
CN111386522A (zh) * | 2017-11-22 | 2020-07-07 | 亚马逊科技公司 | 数据库表的多区多主复制 |
CN111386522B (zh) * | 2017-11-22 | 2023-11-03 | 亚马逊科技公司 | 用于数据存储的***和方法 |
CN107908370A (zh) * | 2017-11-30 | 2018-04-13 | 新华三技术有限公司 | 数据存储方法及装置 |
CN107908370B (zh) * | 2017-11-30 | 2021-07-06 | 新华三技术有限公司 | 数据存储方法及装置 |
CN108829787A (zh) * | 2018-05-31 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种元数据分布式*** |
WO2020000734A1 (zh) * | 2018-06-28 | 2020-01-02 | 平安科技(深圳)有限公司 | 存储对象的空间管理方法、装置、计算机装置及存储介质 |
WO2020024590A1 (en) * | 2018-08-02 | 2020-02-06 | Memverge, Inc. | Persistent memory key-value store in a distributed memory architecture |
CN109739684A (zh) * | 2018-11-20 | 2019-05-10 | 清华大学 | 基于向量时钟的分布式键值数据库的副本修复方法与装置 |
CN111209138A (zh) * | 2018-11-22 | 2020-05-29 | 浙江宇视科技有限公司 | 数据存储***的运维方法及装置 |
CN109634965B (zh) * | 2018-12-17 | 2021-10-29 | 郑州云海信息技术有限公司 | 背板配置信息访问方法、装置、设备及介质 |
CN109634965A (zh) * | 2018-12-17 | 2019-04-16 | 郑州云海信息技术有限公司 | 背板配置信息访问方法、装置、设备及介质 |
CN110046202B (zh) * | 2019-03-07 | 2023-05-26 | 中国人民解放军海军工程大学 | 基于内存键值数据库的综合电力***实时数据管理方法 |
CN110046202A (zh) * | 2019-03-07 | 2019-07-23 | 中国人民解放军海军工程大学 | 基于内存键值数据库的综合电力***实时数据管理方法 |
CN110659315A (zh) * | 2019-08-06 | 2020-01-07 | 上海孚典智能科技有限公司 | 基于非易失性存储***的高性能非结构化数据库服务 |
CN110659315B (zh) * | 2019-08-06 | 2020-11-20 | 上海孚典智能科技有限公司 | 基于非易失性存储***的高性能非结构化数据库服务 |
CN110674106A (zh) * | 2019-08-30 | 2020-01-10 | 中国人民财产保险股份有限公司 | 保单数据的存储方法、装置、设备及计算机可读存储介质 |
CN110674106B (zh) * | 2019-08-30 | 2022-03-15 | 中国人民财产保险股份有限公司 | 保单数据的存储方法、装置、设备及计算机可读存储介质 |
CN111291062A (zh) * | 2020-01-21 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 数据同步写入方法、装置、计算机设备及存储介质 |
WO2021168697A1 (zh) * | 2020-02-26 | 2021-09-02 | 深圳市欢太科技有限公司 | 数据同步方法、装置、数据存储***及计算机可读介质 |
CN111368002A (zh) * | 2020-03-05 | 2020-07-03 | 广东小天才科技有限公司 | 一种数据处理方法、***、计算机设备和存储介质 |
CN113934745A (zh) * | 2020-06-29 | 2022-01-14 | 中兴通讯股份有限公司 | 数据同步处理方法、电子设备以及存储介质 |
CN113297231A (zh) * | 2020-07-28 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库处理方法及装置 |
CN112000285A (zh) * | 2020-08-12 | 2020-11-27 | 广州市百果园信息技术有限公司 | 强一致存储***、数据强一致存储方法、服务器及介质 |
WO2022033290A1 (zh) * | 2020-08-12 | 2022-02-17 | 百果园技术(新加坡)有限公司 | 强一致存储***、数据强一致存储方法、服务器及介质 |
CN113220235A (zh) * | 2021-05-17 | 2021-08-06 | 北京青云科技股份有限公司 | 读写请求的处理方法、装置、设备及存储介质 |
CN113220235B (zh) * | 2021-05-17 | 2024-02-06 | 北京青云科技股份有限公司 | 读写请求的处理方法、装置、设备及存储介质 |
WO2023143061A1 (zh) * | 2022-01-27 | 2023-08-03 | 华为技术有限公司 | 一种数据访问方法及其数据访问*** |
CN116155922A (zh) * | 2023-04-17 | 2023-05-23 | 中国工商银行股份有限公司 | 会话数据处理方法、装置、***、电子设备及存储介质 |
CN116155922B (zh) * | 2023-04-17 | 2023-07-04 | 中国工商银行股份有限公司 | 会话数据处理方法、装置、***、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103268318B (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103268318B (zh) | 一种强一致性的分布式键值数据库***及其读写方法 | |
US11726697B2 (en) | Synchronous replication | |
US10713275B2 (en) | System and method for augmenting consensus election in a distributed database | |
US11138061B2 (en) | Method and apparatus to neutralize replication error and retain primary and secondary synchronization during synchronous replication | |
US9081841B2 (en) | Asynchronous distributed garbage collection for replicated storage clusters | |
US9152501B2 (en) | Write performance in fault-tolerant clustered storage systems | |
CN103312791B (zh) | 物联网异构数据存储方法及*** | |
JP2019036353A (ja) | 索引更新パイプライン | |
AU2015360953A1 (en) | Dataset replication in a cloud computing environment | |
CN113168404B (zh) | 用于在分布式数据库***中复制数据的***和方法 | |
JP2016524750A5 (zh) | ||
US11768624B2 (en) | Resilient implementation of client file operations and replication | |
CN103037004A (zh) | 云存储***操作的实现方法和装置 | |
CN103399894A (zh) | 一种基于共享存储池的分布式事务处理方法 | |
CN104184812A (zh) | 一种基于私有云的多点数据传输方法 | |
US11288237B2 (en) | Distributed file system with thin arbiter node | |
CN106873902B (zh) | 一种文件存储***、数据调度方法及数据节点 | |
Zhang et al. | Leveraging glocality for fast failure recovery in distributed RAM storage | |
KR101589122B1 (ko) | 네트워크 분산 파일 시스템 기반 iSCSI 스토리지 시스템에서의 장애 복구 방법 및 시스템 | |
US11038960B1 (en) | Stream-based shared storage system | |
KR101323729B1 (ko) | 비대칭 클러스터링 파일 시스템에서의 오류 복구 처리 장치 및 방법 | |
CN117176744A (zh) | 基于分布式数字底座的物联网实时数据分层存储***及方法 |
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 |