CN105354315B - 分布式数据库中子表分裂的方法、子表节点和系统 - Google Patents

分布式数据库中子表分裂的方法、子表节点和系统 Download PDF

Info

Publication number
CN105354315B
CN105354315B CN201510767508.9A CN201510767508A CN105354315B CN 105354315 B CN105354315 B CN 105354315B CN 201510767508 A CN201510767508 A CN 201510767508A CN 105354315 B CN105354315 B CN 105354315B
Authority
CN
China
Prior art keywords
sublist
data
node
status indicator
information
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
CN201510767508.9A
Other languages
English (en)
Other versions
CN105354315A (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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510767508.9A priority Critical patent/CN105354315B/zh
Publication of CN105354315A publication Critical patent/CN105354315A/zh
Priority to EP16863329.5A priority patent/EP3349129B1/en
Priority to PCT/CN2016/080144 priority patent/WO2017080139A1/zh
Priority to US15/960,167 priority patent/US11868315B2/en
Application granted granted Critical
Publication of CN105354315B publication Critical patent/CN105354315B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/173Customisation support for file systems, e.g. localisation, multi-language support, personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种分布式数据库中子表分裂的方法、子表节点和系统,根据预设条件,设置第一子表,第一子表是指为存储新的键‑值类型的数据而预留的空表;该方法包括:当新的键‑值类型的数据需要存储到第一子表中时,接收用户输入的子表分裂命令;根据子表分裂命令,将状态表中第一子表的状态标识更新为不再提供读写服务,并将第一子表分裂为至少两个第二子表,更新状态表中第二子表的状态标识为可提供读写服务;指示将第二子表的存储位置信息记录在元数据表中。因此,通过在用户表中预留一个当前数据存储时保持为空的子表,当需要将数据存储到该子表中时,先将该子表进行分裂,分裂完成后再存入数据,实现了用户表中子表的快速分裂。

Description

分布式数据库中子表分裂的方法、子表节点和系统
技术领域
本发明涉及数据库领域,尤其涉及一种分布式数据库中子表分裂方法、子表节点和系统。
背景技术
在大多数分布式数据库中,通常采用KeyValue类型的存储方式,即将用户需要存储的数据存放在Value部分,构建与Value对应的Key,当用户需要查找Value时,通过Key索引查找对应的Value。在数据存储时,是按照Key的字典顺序自然排序的。
数据存储在用户创建的相应用户表(Table)。一个Table中可以存储大量的数据,为了方便分布式管理和维护,可以按照记录的Key值的字典顺序切割生成一个或多个子表(Region),每个Region是一个Key区间数据的集合,也可以说是连续行数据的集合。每个KeyValue所对应的Key只包括在一个Region区间。例如图1所示,图1为一个用户表中子表的示意图,其中,图1中Region-1中的Key-A代表着在字典顺序上一个无穷小的值,Region-M中的Key-Y代表着在字典顺序上一个无穷大的值。
目前,子表的分裂分为两种形式:第一,在建表初期,预设定分裂点(SplitPoints),子表会按照预设定的分裂点生成新的子表。例如:建表时建立Region[Key-A,Key-Y),预设定的分裂点为{B,C,……X},Region[Key-A,Key-Y)会按照预设定的分裂点自动生成多个子表:Region-1[Key-A,Key-B),Region-2[Key-B,Key-C),Region-3[Key-C,Key-D),……Region-M[Key-X,Key-Y),如图2所示。第二,当子表中存储的数据达到一定内存时,会自动分为两个子表,或者通过用户手动触发子表分裂。例如:如图3所示,图3为一个子表分裂为两个子表的示意图,分别将Region[,C),Region[C,E),Region[E,G),……,Region[X,)分裂为两个子表,依次分裂为Region[,B)、Region[B,C),Region[C,D)、Region[D,E),Region[E,F)、Region[F,G),……,Region[X,Y)、Region[Y,Z)。当一个用户表中包括多个子表时,也可以按照第二种分裂方式将子表进行分裂,以提高读写数据的性能。
但是,如果在建表初期预设定的分裂点不合理,例如在建表时确定的分裂点为{a,b,c,d,e,f},基于这些分裂点的子表为(-∞,a),[a,b),[b,c),[c,d),[d,e),[e,f),[f,+∞)。运行一段时间之后,发现原来的分裂点是不合理的,更加合理的分裂点应该为{g,h,i,j,k,l,m},而原来的子表中又已经存在用户数据了,此时对子表进行分裂,读取一个文件中的数据,然后存放到两个或多个文件中,子表分裂速度慢,且读写数据的性能较差,如果将子表分裂的越多,读写数据的性能会越差,且分裂后的子表也依然会造成数据分布不均匀的问题。
发明内容
本发明实施例提供一种分布式数据库中子表分裂的方法、子表节点和系统,通过在用户表中预留一个子表,该子表在当前数据存储时保持为空子表。当需要将数据存储到该子表中时,将该子表进行分裂,以实现用户表中子表的快速多点分裂,提升用户表的读写性能。
一方面,本申请的实施例提供一种分布式数据库中子表分裂的方法,当数据按照键-值类型存储的方式进行存储时,根据预设条件,例如业务类型,预估计当前业务类型存储数据的Key值范围,设置空子表,该空子表为存储新的键-值类型的数据预留的空表,即当前存储的数据不会存储在该空表中。该方法包括:当以键-值类型存储的数据需要存储到空子表中时,接收子表分裂命令,该子表分裂命令可以为用户调用的一个接口或者一个命令,该子表分裂命令中包括空子表分裂的分裂点信息。根据子表分裂命令将状态表中记录的空子表的状态标识为不再提供读写服务,也可以理解为不支持提供读写服务。根据空子表分裂点的信息,将空子表分裂为两个或者两个以上的新子表,并将状态表中记录的新生成的子表的状态标识为可提供读写服务,可理解为支持提供读写服务。并指示将新生成的子表存储的子表节点(或存储节点)的位置信息记录在元数据表中,以便于用户根据元数据表中记录的新生成子表所在的子表节点的位置信息,获取存储在新生成子表中的数据。
基于上述方案,通过在用户表中预留一个子表,该子表在当前数据存储时保持为空子表。当需要将数据存储到该子表中时,将该子表进行分裂,分裂完成之后再存入数据,实现了用户表中子表的快速多点分裂,提升了用户表的读写性能。
在一个可能的设计中,当接收到子表分裂命令时,向共享状态机发送一个可以表征空子表开始分裂的信息。当共享状态机接收到该信息时,将记录的空子表的状态标识为空子表开始分裂,以明确该子表的服务状态,避免向该空子表中写入数据,造成数据丢失。
在另一个可能的设计中,当子表分裂完成之后,向共享状态机发送可以表征空子表完成分裂的信息。当共享状态机接收到该信息时,将记录的空子表的状态标识为空子表分裂完成,以明确该空子表的状态,以禁止向该空子表中写入数据,造成数据丢失。
在又一个可能的设计中,当空子表分裂为至少两个新子表时,指示更新元数据表中空子表的状态为不支持提供可读写服务,便于通过查询元数据表获取该空子表的服务状态,以用于在后续存储空间清理中,删除该空子表的信息。
另一方面,本申请的实施例提供一种子表节点,当数据按照键-值类型的存储方式进行数据存储时,根据预设条件,例如存储数据的业务类型,预估计存储数据的Key值的范围,设置空子表,即当前存储的数据不会存储在该空子表中。该子表节点包括接收单元、更新单元、分裂单元和记录单元。当新的键-值类型的数据需要存储在空子表中时,接收单元接收子表分裂命令,该子表分裂命令可以为用户调用的一个接口或者一个命令,该命令包括空子表分裂点信息。更新单元根据子表分裂命令将状态表中的空子表的状态标识为不再提供读写服务,即不支持提供读写服务。分裂单元根据分裂点信息,将空子表分裂成两个或者两个以上的新子表,并将新子表的状态标识为可提供读写服务,可理解为支持提供读写服务。指示记录单元将新子表所在的子表节点(或存储节点)的位置信息记录在元数据表中,以便于通过查询元数据表中记录的新子表的位置信息,获取存储在新子表中的数据。
基于上述方案,通过在用户表中预留一个子表,该子表在当前数据存储时保持为空子表。当需要将数据存储到该子表中时,将该子表进行分裂,分裂完成之后再存入数据,实现了用户表中子表的快速多点分裂,提升了用户表的读写性能。
在一个可能的设计中,该表节点还包括发送单元,用于向共享状态机发送表征空子表开始分裂的信息。当共享状态机接收到该信息时,将空子表的状态标识为开始分裂,以避免向该空子表中写入数据,造成数据丢失。
在另一个可能的设计中,当子表分裂完成之后,发送单元向共享状态机发送可以表征空子表完成分裂的信息。当共享状态机接收到该信息时,将记录的空子表的状态标识为空子表分裂完成,以明确该空子表的状态,以禁止向该空子表中写入数据,造成数据丢失。
在又一个可能的设计中,指示更新单元将元数据表中的空子表的状态标识为不支持提供读写服务,便于通过查询元数据表获取该空子表的服务状态,以用于在后续存储空间清理中,删除该空子表的信息。
再一方面,本申请实施例提供一种系统,该系统包括多个管理节点和共享状态机,多个管理节点可以管理一个或者多个另一方面中的子表节点,以用于数据按照键-值类型的存储方式存储时,根据预设条件,设置第一子表,所述第一子表是指为存储新的键-值类型的数据而预留的空表;当所述新的键-值类型的数据需要存储到所述第一子表时,通过所述至少一个子表节点、所述多个管理节点和所述共享状态机完成对所述第一子表的分裂。
本申请提供的分布式数据库中子表分裂的方法、子表节点和系统,通过在用户表中预留一个子表,该子表在当前数据存储时保持为空子表。当需要将数据存储到该子表中时,将该子表进行分裂,分裂完成之后再存入数据,实现了用户表中子表的快速多点分裂,提升了用户表的读写性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个用户表中子表的示意图;
图2为一个用户表中一个子表分裂为多个子表的分裂示意图;
图3为一个用户表中每个子表分裂为两个子表的分裂示意图;
图4为本发明实施例提供的分布式数据库;
图5为本发明实施例提供的一种子表节点的结构示意图;
图6为本发明实施例提供的一种分布式数据库中子表分裂方法的流程图;
图7为元数据表的结构示意图;
图8为本发明另一实施例提供的一种分布式数据库中子表分裂方法的流程图;
图9为本发明实施例提供的一种子表节点的结构示意图;
图10为本发明另一实施例提供的一种子表节点的结构示意图。
具体实施方式
本发明实施例应用于分布式数据库中,通常以键-值(KeyValue)类型的存储方式进行数据存储。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
如图4所示,图4为本发明实施例提供的分布式数据库,也可以称作“系统”。该分布式数据库100可以包括多个管理节点110和共享状态机120,每个管理节点管理一个或多个子表节点130(RegionServer),每个子表节点通常为一个物理服务器。每个子表节点中包括至少一个子表和一个状态表。每个子表用于存储数据;状态表用于记录各个子表的状态,例如:子表处于支持提供读写服务的状态,或者子表处于不支持提供读写服务的状态。共享状态机为全集群范围内的一个管理节点,可以用来记录各个子表的状态,以用于分布式数据库中的其他管理节点知道各个子表的状态,例如:子表处于分裂状态或者子表处于分裂完成状态。
在用户建立用户表,划分子表时,先预留一个第一子表,在当前数据存储中,数据不会存储到该第一子表中。该第一子表的预留可以根据用户需要存储的数据类型来预留,例如,当目前存储的数据都为“A类型”数据时,预估计该类型数据存储的Key值范围,为将来可能存储的其他类型的数据,例如“B类型”、“C类型”,或者其他类型的数据预留一个空的子表。当需要存储“B类型”、“C类型”,或者其他类型的数据时,将该空子表分裂为需要个数的子表,以提高用户表数据的读写性能。
图5为本发明实施例提供的一种子表节点的结构示意图,如图5所示,该子表节点为如图4所示的子表节点130,该子表节点130包括:通信接口131、存储器132,处理器133和总线134,该通信接口131、存储器132,处理器133通过总线134连接,并完成相互之间的通信。通信接口131用于接收外部设备输入的信号或者向外部设备发送相应的指令。存储器132用来存储指令和数据。处理器133用于调用存储器中的指令,并执行相应的操作。
在本发明实施例中,处理器133可以是中央处理单元(Central Processing Unit,CPU),该处理器133还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
总线134除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线134。
存储器132可以包括只读存储器和随机存取存储器,并向处理器133提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
如图5所示,该子表节点130还可以包括输入设备135和输出设备136,例如:键盘和显示器。输入设备135用于向该子表节点输入相关的指令或信息。输出设备136用于向外部设备输出相应的信息。
图6为本发明实施例提供的一种分布式数据库中子表分裂方法的流程图。如图6所示,该子表分裂的方法200的执行主体为图4或图5中的子表节点130。该方法200包括:
S210,当以键-值类型存储的新数据需要存储到第一子表中时,接收子表分裂命令,子表分裂命令包括第一子表的分裂点信息;
S220,根据子表分裂命令,更新状态表中第一子表的状态标识为第一标识,第一标识用于表示第一子表不再提供读写服务;
S230,根据子表分裂命令中记录的分裂点信息,将第一子表分裂为至少两个第二子表,并将状态表中第二子表的状态标识记录为第二标识,第二标识用于表示第二子表可提供读写服务;
S240,指示将至少两个第二子表所在的子表节点的位置信息记录在元数据表中,以便于根据元数据表找到用于存储新数据的第二子表所在的子表节点。
具体的,在S210中,第一子表为用户划分子表时,预留下来的一个空子表。用户在预留该空子表时,可以根据当前存储数据类型,预估计数据存储中Key值的范围,以保证当前存储的数据不会落在该空子表中。
当需要将数据存储到该空子表中时,子表节点根据用户调用的一个接口或者一个命令,该命令为子表分裂命令,触发空子表按照预设定的多个分裂点(Split Points)分裂为多个子表。其中,子表分裂命令中包括空子表分裂的信息。分裂点是按照数据存储的Key值点来分的。例如:子表的Key值范围为从1至9,则可以设置分裂点为3和6。
在S220中,子表节点中可以包括状态表,状态表用于记录子表节点中各个子表的状态,例如:子表处于支持提供读写服务状态或者子表处于不支持提供读写服务状态。子表节点根据空子表的分裂信息,将状态表中空子表的状态标识修改为不支持提供读写服务的标识,例如表1所示,表1为本发明实施例提供的一种状态表的结构示意图。
表1
子表 状态标识
子表1 不支持提供读写服务
子表2 支持提供读写服务
子表3 支持提供读写服务
应理解,在本发明实施例中,表1的内容只是为了详细的描述技术方案,表1中的状态标识还可以通过其他的逻辑表示方式进行标识,例如,通过“0”表示不支持提供读写服务,通过“1”表示支持提供读写服务,在本发明实施例中对此不作任何限制。
还需理解,在本发明实施例中,子表节点中记录各子表的状态标识是通过状态表的形式体现的,在本发明实施例中也可以通过其他的逻辑关系实现子表节点中各子表的状态信息记录,在本发明实施例中对此不作限制。
在本发明实施例中,子表节点将空子表的状态标识修改为不支持提供读写服务,以便于子表节点内部明确该空子表的服务状态,同时避免了在空子表分裂过程中,向该空子表写入数据造成的数据丢失的问题。
在S230中,第二子表为子表节点根据空子表分裂点信息和预设定的分裂点,将子表分裂成的新的子表。通常用户会预设定多个分裂点,将空子表分裂为两个或者两个以上的新的子表,以用于提高数据的读写性能。
在状态表中记录新生成的子表,将新生成的子表的状态标识为支持提供读写服务的标识,以明确知道该新生成的多个子表处于哪种服务状态,方便将数据存储到新生成的子表中,以提高数据的读写性能。
在S240中,元数据表(Meta Table,META)为一类特殊的表,该表保存了所有用户表的子表的路由信息,即每个子表位于哪个子表节点的相关信息,例如图7所示,图7为元数据表的结构示意图。
子表节点指示将新生成的子表所在的子表节点的位置信息记录在元数据表中。以便于用户可以通过元数据表找到存储新数据的各子表的位置。当元数据表存储在该方法的执行主体的子表节点时,即元数据表存储在当前执行子表分裂的子表节点时,子表节点直接更新元数据表;当元数据表存储与其他子表节点时,需要该方法执行主体的子表节点指示其他存储节点(即其他子表节点)更新元数据表。
本发明实施例提供的分布式数据库中子表分裂的方法,通过预先设定一个空子表,在需要将数据存储到该空子表时,根据预设的多个分裂点,先将空子表分裂为至少两个子表,再向新生成的至少两个子表中存储数据,实现子表的快速分裂,以提高数据读写性能。
可选地,作为本发明另一实施例,如图8所示,当接收到用户输入的子表分裂命令时,方法200还包括:
S250,向共享状态机发送第一信息,第一信息表征第一子表开始分裂,以使共享状态机根据第一信息,将记录的第一子表的状态标识更新为第三标识,第三标识用于表示第一子表开始分裂。
具体的,管理节点为管理该子表节点的一个节点,一个管理节点可以管理一个或多个子表节点,该管理节点为图4中的管理节点110。该共享状态机为图4中的共享状态机120,共享状态机记录了各个子表的状态信息,例如子表处于开始分裂状态或是处于分裂完成状态。共享状态机记录各子表的状态信息可以通过状态表的形式体现,例如表2所示,表2为本发明实施例提供的共享状态机中状态表的结构示意图。
表2
子表 状态标识
子表1 Spliting
子表2 Splited
应理解,在本发明实施例中,表2的内容只是为了详细的描述技术方案,表2中的状态标识还可以通过其他的逻辑表示方式进行标识,例如,通过“0”表示正在分裂状态,通过“1”表示分裂完成状态,在本发明实施例中对此不作任何限制。
还需理解,在本发明实施例中,共享状态机中记录各子表的状态标识是通过状态表的形式体现的,在本发明实施例中也可以通过其他的逻辑关系形式实现共享状态机中记录各子表的状态信息,在本发明实施例中对此不作限制。
在S250中,当子表节点接收到用户输入的子表分裂命令时,通过管理节点向共享状态机发送第一子表,即预设置的空子表开始分裂信息,以便于共享状态机接收到空子表开始分裂信息之后,根据接收到的信息修改共享状态机的状态表中记录的空子表的状态标识,将状态标识修改为开始分裂的状态标识,如表2中所示的状态标识为“Spliting”;这样,期望访问第一子表时,可以通过共享状态机清楚了解第一子表的状态。
可选地,作为本发明另一实施例,如图8所示,在将第一子表分裂为至少两个第二子表之后,该方法200还包括:
S260,向共享状态机发送第二信息,第二信息包括第一子表分裂完成信息,以用于共享状态机根据第二信息,将记录的第一子表的状态标识更新为第四标识,第四标识用于表示第一子表分裂完成。
具体的,当第一子表,也就是用户为建立的用户表,划分子表时预留的空子表,当子表节点将空子表按照多个分裂点分裂为多个新子表之后,通过管理节点向共享状态机发送该空子表分裂完成的信息,以便于共享状态机接收到空子表分裂完成信息之后,将状态表中记录的空子表的状态标识由“Spliting”,修改为“Splited”,修改后的形式如表2中的子表2的状态标识,便于访问第一子表时,可以通过共享状态机清楚了解第一子表的状态。
本发明实施例提供的分布式数据库中子表分裂的方法,通过预先设定一个空子表,在需要将数据存储到该空子表时,根据预设的多个分裂点,先将空子表分裂为至少两个子表,再向新生成的至少两个子表中存储数据,实现子表的快速分裂,以提高数据读写性能。同时,在将空子表分裂之前,修改共享状态机中记录的子表的状态标识,以便于分布式数据库中的管理节点明确该空子表的服务状态,避免管理节点将该空子表节点移动到其他的子表节点中。
可选地,作为本发明另一实施例,将第一子表分裂为至少两个第二子表之后,该方法200还包括:
S270,更新元数据表中的第一子表的状态标识为第一标识。
具体的,第一标识为不支持提供读写服务的状态标识。当子表节点分裂第一子表时,在S220中在子表节点内部的状态表中将第一子表的状态标识修改为不支持提供读写服务,以便于子表快速分裂,同时避免了在子表分裂过程中,写入数据造成的数据丢失问题。当子表分裂完成之后,需要在元数据表中记录分裂之前的第一子表的状态标识为不在提供读写服务。如图7所示其中,第一子表为用户为建立的用户表划分子表时,预留的空子表。
应理解,在本发明实施例中,图7中的状态标识时通过“不再提供读写服务”和“可提供读写服务”来标识各个子表的状态标识,在本发明实施例中,元数据表中记录各子表的状态标识还可以通过其他的逻辑表示方式进行标识,例如,通过“0”表示不支持提供读写服务,通过“1”表示支持提供读写服务,在本发明实施例中对此不作任何限制。
应理解,在发明实施例中,“可提供读写服务”、“不再提供读写服务”可以分别理解为“支持提供读写服务”、“不支持提供读写服务”。
应理解,在本发明实施例中,图6和图8中描述的方法200的方法/步骤可以通过图4中的通信接口131和处理器133来实现。
还需理解,在本发明实施例中,元数据表存在于该方法200的执行主体子表节点中,元数据表还可以存在于其他的子表节点中,同样可以通过本发明实施例图5和图7所描述的方法/步骤中完成该技术方案。
图9为本发明实施例提供的一种子表节点的结构示意图,如图8所示,该子表节点800包括:当数据按照键-值类型的存储方式存储时,根据预设条件,设置第一子表,第一子表是指为存储新的键-值类型的数据而预留的空表;其中,该子表节点800包括:接收单元810、更新单元820、分裂单元830和指示记录单元840,
接收单元810,用于当新的键-值类型的数据需要存储到第一子表中时,接收用户输入的子表分裂命令,子表分裂命令包括所述第一子表的分裂点信息;
更新单元820,用于根据子表分裂命令,更新状态表中第一子表的状态标识为第一标识,第一标识用于表示第一子表不再提供读写服务;
分裂单元830,用于根据子表分裂命令中记录的分裂点信息,将第一子表分裂为至少两个第二子表,并将所述状态表中所述第二子表的状态标识为第二标识,所述第二标识用于表示所述第二子表可提供读写服务;
指示记录单元840,用于指示将至少两个第二子表所在子表节点的位置信息记录在元数据表中,以便根据所述元数据表找到用于存储所述新的键-值类型的数据的所述第二子表所在的子表节点。
具体的,第一子表为用户划分子表时,预留下来的一个空子表。用户在预留该空子表时,可以根据当前存储数据类型,预估计数据存储中Key值的范围,以保证当前存储的数据不会落在该空子表中。第二子表为子表节点根据空子表分裂信息和预设定的分裂点,将子表分裂成的新的子表。元数据表为一类特殊的表,该表保存了所有用户表的子表的路由信息,即每个子表位于哪个子表节点的相关信息。
当需要将数据存储到该空子表中时,接收单元810根据用户调用的一个接口或者一个命令,该命令为子表分裂命令,触发空子表按照预设定的分裂点分裂子表。其中,子表分裂命令中包括空子表分裂的信息。预设定的分裂点通常为至少一个分裂点,可以将空子表分裂为两个或者多个新子表。分裂点是按照数据存储的Key值点来分的。
在子表节点中可以包括状态表,状态表用于记录子表节点中各个子表的状态,例如:子表处于支持提供读写服务状态或者子表处于不支持提供读写服务状态。更新单元820根据空子表的分裂信息,将状态表中空子表的状态标识修改为不支持提供读写服务的标识。
应理解,在本发明实施例中,子表节点中记录各子表的状态标识是通过状态表的形式体现的,在本发明实施例中也可以通过其他的逻辑关系实现子表节点中各子表的状态信息记录,在本发明实施例中对此不作限制。
在本发明实施例中,子表节点将空子表的状态标识修改为不支持提供读写服务,以便于子表节点内部明确该空子表的服务状态。
分裂单元830根据空子表分裂点信息和预设定的分裂点,将子表分裂成的新的子表,以用于提高数据的读写性能。
在本发明实施例中,子表节点将新生成的子表的状态标识为支持提供读写服务,以明确新生成子表处于何种中服务状态,方便将存储的新数据存储到新生成的子表中,以提高数据的读写性能。
指示记录单元840将新生成的至少两个子表所在的子表节点的位置信息记录在元数据表中,以便于可以通过元数据表记录的数据存储的子表节点位置信息,寻找所需要查询的数据。
本发明实施例提供的分布式数据库,通过预先设定一个空子表,在需要将数据存储到该空子表时,根据预设的多个分裂点,先将空子表分裂为至少两个子表,再向新生成的至少两个子表中存储数据,实现子表的快速分裂,以提高数据读写性能。
可选地,作为本发明另一实施例,如图10所示,分布式数据库800还包括发送单元850,发送单元850用于向共享状态机发送第一信息,第一信息包括第一子表开始分裂的信息,以使共享状态机根据第一信息,将记录的第一子表的状态标识更新为第三标识,第三标识用于表示第一子表开始分裂。
可选地,作为本发明另一实施例,发送单元850还用于,向共享状态机发送第二信息,第二信息包括第一子表分裂完成信息,以用于共享状态机根据第二信息,将记录的第一子表的状态标识更新为第四标识,第四标识用于表示第一子表分裂完成。
可选地,作为本发明另一实施例,更新单元820还用于,更新元数据表中的第一子表的状态标识为第一标识。
本发明实施例提供的分布式数据库中子表分裂的方法,通过预先设定一个空子表,在需要将数据存储到该空子表时,根据预设的多个分裂点,先将空子表分裂为至少两个子表,再向新生成的至少两个子表中存储数据,实现子表的快速分裂,以提高数据读写性能。同时,在将空子表分裂之前,修改共享状态机中记录的子表的状态标识,以便于分布式数据库中的其他子表节点明确该空子表的服务状态,避免在空子表分裂过程中移动,造成数据丢失。
应理解,在发明实施例中,“可提供读写服务”、“不再提供读写服务”可以分别理解为“支持提供读写服务”、“不支持提供读写服务”。
需要说明的是,在本发明实施例中,根据本发明实施例的子表节点800对应根据本发明实施例的方法200的执行主体,并且子表节点800中的各个模块的上述和其他操作和/或功能分别为了实现图6和图8中的各个方法的相应流程,为了简洁,在这里不再赘述。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种分布式数据库中子表分裂的方法,其特征在于,当数据按照键-值类型的存储方式存储时,根据预设条件,设置第一子表,所述第一子表是指为存储新的键-值类型的数据而预留的空表;所述方法包括:
当所述新的键-值类型的数据需要存储到所述第一子表中时,接收子表分裂命令,所述子表分裂命令包括所述第一子表的分裂点信息;
根据所述子表分裂命令,更新状态表中所述第一子表的状态标识为第一标识,所述第一标识用于表示所述第一子表不再提供读写服务;
根据所述子表分裂命令中记录的分裂点信息,将所述第一子表分裂为至少两个第二子表,并将所述状态表中所述第二子表的状态标识记录为第二标识,所述第二标识用于表示所述第二子表可提供读写服务;
指示将所述至少两个第二子表所在子表节点的位置信息记录在元数据表中,以便根据所述元数据表找到用于存储所述新的键-值类型的数据的所述第二子表所在的子表节点。
2.根据权利要求1所述的方法,其特征在于,所述更新状态表中所述第一子表的状态标识为第一标识之前,所述方法还包括:
向共享状态机发送第一信息,所述第一信息表征所述第一子表开始分裂,以使所述共享状态机根据所述第一信息,将记录的所述第一子表的状态更新为第三标识,所述第三标识用于表示所述第一子表开始分裂。
3.根据权利要求1所述的方法,其特征在于,将所述第一子表分裂为至少两个第二子表之后,所述方法还包括:
指示更新所述元数据表中的所述第一子表的状态标识为所述第一标识。
4.根据权利要求1所述的方法,其特征在于,所述预设条件为业务类型。
5.一种子表节点,其特征在于,当数据按照键-值类型的存储方式存储时,根据预设条件,设置第一子表,所述第一子表是指为存储新的键-值类型的数据而预留的空表;所述子表节点包括:
接收单元,用于当所述新的键-值类型的数据需要存储到所述第一子表中时,接收子表分裂命令,所述子表分裂命令包括所述第一子表的分裂点信息;
更新单元,用于根据所述子表分裂命令,更新状态表中所述第一子表的状态标识为第一标识,所述第一标识用于表示所述第一子表不再提供读写服务;
分裂单元,用于根据所述子表分裂命令中记录的分裂点信息,将所述第一子表分裂为至少两个第二子表,并将所述状态表中所述第二子表的状态标识为第二标识,所述第二标识用于表示所述第二子表可提供读写服务;
指示记录单元,用于指示将所述至少两个第二子表所在子表节点的位置信息记录在元数据表中,以便根据所述元数据表找到用于存储所述新的键-值类型的数据的所述第二子表所在的子表节点。
6.根据权利要求5所述的子表节点,其特征在于,所述子表节点还包括发送单元,所述发送单元用于在所述更新状态表中所述第一子表的状态标识为第一标识之前向共享状态机发送第一信息,所述第一信息表征所述第一子表开始分裂,以使所述共享状态机根据所述第一信息,将记录的所述第一子表的状态标识更新为第三标识,所述第三标识用于表示所述第一子表开始分裂。
7.根据权利要求6所述的子表节点,其特征在于,所述更新单元还用于,指示更新所述元数据表中的所述第一子表的状态标识为所述第一标识。
8.根据权利要求6所述的子表节点,其特征在于,所述预设条件为业务类型。
9.一种分布式数据库中子表分裂的系统,其特征在于,所述系统包括:多个管理节点和共享状态机,所述多个管理节点管理至少一个权利要求5至8任一项所述的子表节点,以用于当数据按照键-值类型的存储方式存储时,根据预设条件,设置第一子表,所述第一子表是指为存储新的键-值类型的数据而预留的空表;当所述新的键-值类型的数据需要存储到所述第一子表时,通过所述至少一个子表节点、所述多个管理节点和所述共享状态机完成对所述第一子表的分裂。
CN201510767508.9A 2015-11-11 2015-11-11 分布式数据库中子表分裂的方法、子表节点和系统 Active CN105354315B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201510767508.9A CN105354315B (zh) 2015-11-11 2015-11-11 分布式数据库中子表分裂的方法、子表节点和系统
EP16863329.5A EP3349129B1 (en) 2015-11-11 2016-04-25 Region division method in distributed database, region node and system
PCT/CN2016/080144 WO2017080139A1 (zh) 2015-11-11 2016-04-25 分布式数据库中子表分裂的方法、子表节点和系统
US15/960,167 US11868315B2 (en) 2015-11-11 2018-04-23 Method for splitting region in distributed database, region node, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510767508.9A CN105354315B (zh) 2015-11-11 2015-11-11 分布式数据库中子表分裂的方法、子表节点和系统

Publications (2)

Publication Number Publication Date
CN105354315A CN105354315A (zh) 2016-02-24
CN105354315B true CN105354315B (zh) 2018-10-30

Family

ID=55330287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510767508.9A Active CN105354315B (zh) 2015-11-11 2015-11-11 分布式数据库中子表分裂的方法、子表节点和系统

Country Status (4)

Country Link
US (1) US11868315B2 (zh)
EP (1) EP3349129B1 (zh)
CN (1) CN105354315B (zh)
WO (1) WO2017080139A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354315B (zh) 2015-11-11 2018-10-30 华为技术有限公司 分布式数据库中子表分裂的方法、子表节点和系统
CN107291743B (zh) * 2016-03-31 2020-10-16 北京星选科技有限公司 数据的调用方法和装置
CN107870940B (zh) 2016-09-28 2021-06-18 杭州海康威视数字技术股份有限公司 一种文件存储方法及装置
CN106844564A (zh) * 2016-12-30 2017-06-13 郑州云海信息技术有限公司 一种网盘文件分表方法及装置
CN107861989A (zh) * 2017-10-17 2018-03-30 平安科技(深圳)有限公司 数据的分区存储方法、装置、计算机设备及存储介质
CN110109879B (zh) * 2018-01-18 2023-07-18 伊姆西Ip控股有限责任公司 在多核系统中冲刷元数据的方法、设备和计算机可读介质
CN111291112B (zh) * 2018-12-07 2023-04-28 阿里巴巴集团控股有限公司 分布式数据库的读写控制方法和装置以及电子设备
CN111680108B (zh) * 2019-03-11 2023-11-03 杭州海康威视数字技术股份有限公司 一种数据存储方法、装置及一种数据获取方法、装置
CN111209284B (zh) * 2020-01-10 2023-12-29 北京仁科互动网络技术有限公司 基于元数据的分表方法及装置
CN113946624A (zh) * 2021-10-11 2022-01-18 北京达佳互联信息技术有限公司 分布式集群、信息处理方法、装置、电子设备及存储介质
CN114462900B (zh) * 2022-04-13 2022-07-29 云智慧(北京)科技有限公司 一种业务活动节点的拆分方法、装置及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102890678A (zh) * 2011-07-20 2013-01-23 华东师范大学 一种基于格雷编码的分布式数据布局方法及查询方法
CN104133867A (zh) * 2014-07-18 2014-11-05 中国科学院计算技术研究所 分布式顺序表片内二级索引方法及系统
CN104331478A (zh) * 2014-11-05 2015-02-04 浪潮电子信息产业股份有限公司 一种自精简存储系统数据一致性管理方法
CN104503966A (zh) * 2014-10-16 2015-04-08 杭州斯凯网络科技有限公司 PostgreSQL大数据高效免维护自动分区方法
CN104881466A (zh) * 2015-05-25 2015-09-02 百度在线网络技术(北京)有限公司 数据分片的处理以及垃圾文件的删除方法和装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7480909B2 (en) * 2002-02-25 2009-01-20 International Business Machines Corporation Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking
US7299239B1 (en) * 2002-12-02 2007-11-20 Oracle International Corporation Methods for partitioning an object
US7174345B2 (en) * 2003-05-30 2007-02-06 Oracle International Corporation Methods and systems for auto-partitioning of schema objects
US8055839B2 (en) * 2007-08-20 2011-11-08 International Business Machines Corporation Maintaining reserved free space at the end of a physical volume for creating new segments of segmented logical volumes in the reserved free space
US8521986B2 (en) * 2009-10-29 2013-08-27 Condusiv Technologies Corporation Allocating storage memory based on future file size or use estimates
US8214355B2 (en) * 2010-02-09 2012-07-03 Yahoo! Inc. Small table: multitenancy for lots of small tables on a cloud database
US8996563B2 (en) * 2010-04-06 2015-03-31 Tokutek, Inc. High-performance streaming dictionary
US8805784B2 (en) * 2010-10-28 2014-08-12 Microsoft Corporation Partitioning online databases
EP3115913B1 (en) * 2011-05-10 2018-03-14 Uber Technologies, Inc. Systems and methods for performing search and retrieval of electronic documents using a big index
US8549010B2 (en) * 2011-05-13 2013-10-01 Nokia Corporation Method and apparatus for providing distributed key range management
US9052831B1 (en) * 2011-06-30 2015-06-09 Amazon Technologies, Inc. System and method for performing live partitioning in a data store
US8930312B1 (en) * 2012-01-17 2015-01-06 Amazon Technologies, Inc. System and method for splitting a replicated data partition
WO2013147785A1 (en) * 2012-03-29 2013-10-03 Hitachi Data Systems Corporation Highly available search index with storage node addition and removal
US8850596B2 (en) * 2012-11-08 2014-09-30 Microsoft Corporation Data leakage detection in a multi-tenant data architecture
US9223517B1 (en) * 2013-05-03 2015-12-29 Emc Corporation Scalable index store
US9208032B1 (en) * 2013-05-15 2015-12-08 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US9053167B1 (en) * 2013-06-19 2015-06-09 Amazon Technologies, Inc. Storage device selection for database partition replicas
JP6025149B2 (ja) * 2013-11-06 2016-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データを管理するシステムおよび方法
US20160350302A1 (en) * 2015-05-27 2016-12-01 Hedvig, Inc. Dynamically splitting a range of a node in a distributed hash table
US9971526B1 (en) * 2015-06-29 2018-05-15 Amazon Technologies, Inc. Volume-based key-value store
US10713210B2 (en) * 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
CN105354315B (zh) * 2015-11-11 2018-10-30 华为技术有限公司 分布式数据库中子表分裂的方法、子表节点和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102890678A (zh) * 2011-07-20 2013-01-23 华东师范大学 一种基于格雷编码的分布式数据布局方法及查询方法
CN104133867A (zh) * 2014-07-18 2014-11-05 中国科学院计算技术研究所 分布式顺序表片内二级索引方法及系统
CN104503966A (zh) * 2014-10-16 2015-04-08 杭州斯凯网络科技有限公司 PostgreSQL大数据高效免维护自动分区方法
CN104331478A (zh) * 2014-11-05 2015-02-04 浪潮电子信息产业股份有限公司 一种自精简存储系统数据一致性管理方法
CN104881466A (zh) * 2015-05-25 2015-09-02 百度在线网络技术(北京)有限公司 数据分片的处理以及垃圾文件的删除方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Key-Value数据存储加速技术研究;胡昊 等;《中国优秀硕士学位论文全文数据库 信息科技辑》;20141231;I138-241 *
基于DHT的key-value分布式存储系统;温安宇 等;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120229;I137-47 *
基于DHT的key-value存储的范围查询技术研究;赵雪霞 等;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130430;I138-817 *

Also Published As

Publication number Publication date
US11868315B2 (en) 2024-01-09
WO2017080139A1 (zh) 2017-05-18
CN105354315A (zh) 2016-02-24
US20180239780A1 (en) 2018-08-23
EP3349129A4 (en) 2018-08-15
EP3349129B1 (en) 2019-11-06
EP3349129A1 (en) 2018-07-18

Similar Documents

Publication Publication Date Title
CN105354315B (zh) 分布式数据库中子表分裂的方法、子表节点和系统
US10740308B2 (en) Key_Value data storage system
CN111881133B (zh) 存储桶管理方法、装置、计算机设备及可读存储介质
CN110674053B (zh) Ssd数据存储节点管理方法、装置、计算机设备及存储介质
CN108829344A (zh) 数据存储方法、装置及存储介质
CN105242983B (zh) 一种数据存储方法以及一种数据存储管理服务器
CN109240607B (zh) 一种文件读取方法和装置
JP2016510918A (ja) ボリューム複製を目的としたワークロードの特定およびバッファのサイズ設定
US10642817B2 (en) Index table update method, and device
CN111400334A (zh) 数据处理方法、装置、存储介质及电子装置
CN109086462A (zh) 一种分布式文件系统中元数据的管理方法
US11429311B1 (en) Method and system for managing requests in a distributed system
CN108646987B (zh) 一种文件卷的管理方法、装置、存储介质及终端
JP2000252986A (ja) 通信装置及び通信方法
JP5790755B2 (ja) データベース管理装置及びデータベース管理方法
CN112506875B (zh) 文件存储方法、相关装置及文件存储系统
CN116820323A (zh) 数据存储方法、装置、电子设备及计算机可读存储介质
CN116069263B (zh) 文件系统的优化方法、装置、服务器、设备及存储介质
US11829398B2 (en) Three-dimensional probabilistic data structure
US11816088B2 (en) Method and system for managing cross data source data access requests
CN114880355A (zh) 数据处理方法、电子设备和计算机可读存储介质
CN115334206A (zh) VoIP话单实时预警方法、电子设备及可存储介质
CN118170726A (zh) 一种分布式文件系统的文件截断方法、设备和存储介质
CN112306955A (zh) 一种文件系统容量管理优化装置及方法以及电子设备
CN115017104A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220210

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right