CN102402586A - 一种分布式数据存储方法 - Google Patents
一种分布式数据存储方法 Download PDFInfo
- Publication number
- CN102402586A CN102402586A CN2011103277046A CN201110327704A CN102402586A CN 102402586 A CN102402586 A CN 102402586A CN 2011103277046 A CN2011103277046 A CN 2011103277046A CN 201110327704 A CN201110327704 A CN 201110327704A CN 102402586 A CN102402586 A CN 102402586A
- Authority
- CN
- China
- Prior art keywords
- data
- splits
- node
- server end
- record
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种分布式数据存储方法,于服务器端进行数据库水平拆分,所述数据库水平拆分设置有多个节点,其通过以下三种数据操作方式中任意一种或几种方式组合进行对数据信息进行拆分,上述三种数据操作方式具体为:数值范围拆分,Hash拆分,xml文件中保存数据库及表的配置拆分。该方法能降低单台机器的负载,提高海量存储速率,最大限度的降低宕机造成的损失。
Description
技术领域
本发明涉及一种数据存储,尤其涉及一种分布式数据存储方法。
背景技术
随着互联网应用的广泛普及,海量数据的存储和访问成了系统设计的瓶颈问题。对于大型的互联网应用,每天庞大的网站访问无疑对数据库造成了相当高的负载。严峻考验系统的稳定性和扩展性。通过数据拆分减轻单台数据库压力,来提高数据库性能,横向扩展数据层已经成为架构研发人员首选的方式。水平拆分数据库,可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失。
有鉴于此,提供一种水平拆分数据库,降低单台机器的负载,提高海量存储速率,最大限度的降低宕机造成损失的分布式数据存储方法成为必要。
发明内容
本发明的目的是提供一种水平拆分数据库,降低单台机器的负载,提高海量存储速率,最大限度的降低宕机造成损失的分布式数据存储方法。
为了实现上述目的,本发明提供一种分布式数据存储方法,于服务器端进行数据库水平拆分,所述数据库水平拆分设置有多个节点,其通过以下三种数据操作方式中任意一种或几种方式组合进行对数据信息进行拆分,上述三种数据操作方式具体为:数值范围拆分,Hash拆分,xml文件中保存数据库及表的配置拆分。
进一步的,所述数值范围拆分包括以下步骤:
A)通过客户端向服务器端发送数据;
B)通过服务器端发出指令分别在各节点进行数据检索;
C)从各节点返回检索到的非空记录或返回空记录;
D)通过服务器端进行数据整理返回客户端。
进一步的,所述Hash拆分包括以下步骤:
A)通过客户端向服务器端发送数据;
B)在服务器端对数据记录中最后一条记录的编号进行Hash取模,并返回计算值;
C)通过计算值确认访问节点,对数据进行操作;
进一步的,所述xml文件中保存数据库及表的配置拆分包括以下步骤:
A)在服务端建立xml,并将全部节点均编序为一个循环队列;
B)通过客户端向服务器端发送数据;
C)在服务器端对xml中的记录进行检索,并返回检索信息包括一条非空记录或者一条空记录;
当返回空记录时:先后对第一个节点和xml均进行对客户端的数据操作;在xml中对客户端的数据进行操作,同时记录对相关节点操作信息;
当返回非空记录时:判断上一次操作的节点,并对循环队列中下一个操作节点进行操作;对xml中的记录进行操作,同时更新对相关节点操作信息。
进一步的,在服务器端将数据库横向扩展数据层负荷分担至多台负荷分担电脑的数据节点。
与现在技术相比,本发明提供的用于一种水平拆分数据库,降低单台机器的负载,提高海量存储速率,最大限度的降低当机造成损失的分布式数据存储方法具有重要意义。
附图说明
附图用于提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明的一种分布式数据存储方法的结构示意图;
图2为读数据流程图;
图3为存数据流程图。
具体实施方式
下面结合附图详细说明发明,其作为本说明书的一部分,通过实例来说明发明的原理,发明的其他方面,特征及其优点通过该详细说明将会变得一目了然。
如图1-3中任意附图所示,为了实现上述目的,本发明提供一种分布式数据存储方法,于服务器端2进行数据库水平拆分,上述数据库水平拆分设置有多个节点,其通过以下三种数据操作方式中任意一种或几种方式组合进行对数据信息进行拆分,上述三种数据操作方式具体为:数值范围拆分,Hash拆分,xml文件中保存数据库及表的配置拆分。
将服务器端2各数据库拆分为多个节点,各节点通过数值范围拆分,Hash拆分,xml文件中保存数据库及表的配置拆分的三种数据操作方式中任意一种或几种方式组合进行对数据信息进行拆分。通过对数据的水平拆分并将大量的数据处理分解到各节点,有效提高数据库整体数据处理速率的同时,还可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。
进一步的,如图2所示,上述数值范围拆分包括以下步骤:
A)通过客户端1向服务器端2发送数据;
B)通过服务器端2发出指令分别在各节点进行数据检索;
C)从各节点返回检索到的非空记录或返回空记录;
D)通过服务器端2进行数据整理返回客户端1。
作为在数据范围拆分中,假如将200条数据分布在两个数据节点a21和节点b22中,按ID数据序列如,在ID为1、3、5、7......的奇数数据保存在节点a21中,ID为2、4、6、8......的偶数数据保存在节点b中。如果要获取ID为1的数据,则在两个节点中分别执行以下语句。
执行如下语句:Select*from Table where ID=1。
此时,在节点a21返回ID为1的记录,数据库B返回空记录。这时合并节点a21和节点b22返回的记录,就可以得到正确的结果。
又如,执行如下语句:Select top 10*from Table order by ID。
此时,节点a21将返回10条数据,节点b22也返回10条数据,合并节点a21和节点b22返回的记录,得到20条记录数据表,此时,须要筛选正确的10条记录。
即,还需要对返回的记录执行如下语句:Select*from Table order by ID。
节点a21和节点b22返回的所有的记录,再次执行排序和top取值。通过对节点a和节点b分别返回的10条记录合并后、排序、移除的操作,得到最终正确结果。
在查询数据时需要处理的关键字还有如:最大值(max),最小值(min),求和(count),求平均(avg)等运算,同数据节点上的查询,可以转化成对单一数据库查询等效的结果。而这些处理归纳起来,只有合并,排序,移除这三种情况,其实这和Map(映射)/Reduce(简化)思想非常的类似,无论多么复杂的动作,最终归结都可以通过几个简单的并合后、排序、移除的操作完成。在海量数据的存储和访问中,多个节点同时将分解的数据进行检索,返回到同一个数据处理记录表中,排序和取值,使多个数据节点共同分担负荷,可以提高服务器速率,减小运算时间,减小宕机机率。
进一步的,如图3所示,上述Hash拆分包括以下步骤:
A)通过客户端1向服务器端2发送数据;
B)在服务器端2对数据记录中最后一条记录的ID进行Hash取模,并返回计算值;
C)通过计算值确认访问节点,对数据进行操作。
对服务器数据记录中最后一条记录的ID进行Hash取值,用一种特定的取值方式进行取模(如:用当前设置的节点数进行取模),如需将一个数据表拆分成5个数据节点,我们就用5这个数字对最后一条记录的ID进行hash取值和取模运算,也就是ID%5,当返回1时候,对应DBa32;当返回2时,对应DBb33;当返回3时,对应DBc34;当返回4时,对应DBd35,当返回0时,对应DBe36,这样可以做到非常均匀的将数据分配到5个DB中。
进一步的,如图3所示,上述xml文件中保存数据库及表的配置拆分包括以下步骤:
A)在服务端建立xml31,并将全部节点均编序为一个循环队列;
B)通过客户端1向服务器端2发送数据;
C)在服务器端2对xml31中的记录进行检索,并返回检索信息包括一条非空记录或者一条空记录;
当返回空记录时:对第一个节点32和xml31均进行对客户端1的数据操作;在xml中对客户端1的数据进行操作,同时记录对相关节点操作信息;
当返回非空记录时:判断上一次操作的节点,并对循环队列中下一个操作节点进行操作;对xml31中的记录进行操作,同时更新对相关节点操作信息。
在服务器端2建立一个DB文件xml31,这个DB单独保存ID到DB的映射关系,每次访问数据库的时候都要先查询一次这个数据库,以得到具体的记录信息,然后进行所需要的数据操作。
进一步的,在服务器端2将数据库横向扩展数据层负荷分担至多台负荷分担电脑的数据节点。水平拆分数据库,可以降低单台机器的负载,同时最大限度的降低了了当机造成的损失。
上面只是一些简单的数据处理,面对一些复杂的数据处理,要在数据处理的过程中,进行数据节点之间的数据交换才能完成的。因此要实现一个完全能够处理SQL语句的分布式数据库,需要在数据库的内核部分进行改动。在实现这个组件时,时间是有限的,进行内核部分的改造不现实,所以我采取了中间件的方式,来实现了这个分布式数据库。与现在技术相比,本发明提供的用于一种水平拆分数据库,降低单台机器的负载,提高海量存储速率,最大限度的降低当机造成损失的分布式数据存储方法具有重要意义。
以上所揭示的仅为发明的较佳实例而已,当然不能以此来限定发明之权利范围,因此依发明申请专利范围所作的等同变化,仍属于发明所涵盖的范围。
Claims (5)
1.一种分布式数据存储方法,其特征在于:于服务器端进行数据库水平拆分,所述数据库水平拆分设置有多个节点,其通过以下三种数据操作方式中任意一种或几种方式组合进行对数据信息进行拆分,上述三种数据操作方式具体为:数值范围拆分,Hash拆分,xml文件中保存数据库及表的配置拆分。
2.根据权利要求1所述的一种分布式数据存储方法,其特征在于:所述数值范围拆分包括以下步骤:
A)通过客户端向服务器端发送数据;
B)通过服务器端发出指令分别在各节点进行数据检索;
C)从各节点返回检索到的非空记录或返回空记录;
D)通过服务器端进行数据整理返回客户端。
3.根据权利要求1所述的一种分布式数据存储方法,其特征在于:所述Hash拆分包括以下步骤:
A)通过客户端向服务器端发送数据;
B)在服务器端对数据记录中最后一条记录的编号进行Hash取模,并返回计算值;
C)通过计算值确认访问节点,对数据进行操作。
4.根据权利要求1所述的一种分布式数据存储方法,其特征在于:所述xml文件中保存数据库及表的配置拆分包括以下步骤:
A)在服务端建立xml,并将全部节点均编序为一个循环队列;
B)通过客户端向服务器端发送数据;
C)在服务器端对xml中的记录进行检索,并返回检索信息包括一条非空记录或者一条空记录;
当返回空记录时:
对第一个节点和xml均进行对客户端的数据操作;
在xml中对客户端的数据进行操作,同时记录对相关节点操作信息;
当返回非空记录时:
判断上一次操作的节点,并对循环队列中下一个操作节点进行操作;
对xml中的记录进行操作,同时更新对相关节点操作信息。
5.根据权利要求1所述的一种分布式数据存储方法,其特征在于:在服务器端将数据库横向扩展数据层负荷分担至多台负荷分担电脑的数据节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103277046A CN102402586A (zh) | 2011-10-24 | 2011-10-24 | 一种分布式数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103277046A CN102402586A (zh) | 2011-10-24 | 2011-10-24 | 一种分布式数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102402586A true CN102402586A (zh) | 2012-04-04 |
Family
ID=45884786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103277046A Pending CN102402586A (zh) | 2011-10-24 | 2011-10-24 | 一种分布式数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102402586A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020193A (zh) * | 2012-12-03 | 2013-04-03 | 北京奇虎科技有限公司 | 处理数据库操作请求的方法和设备 |
CN103399943A (zh) * | 2013-08-14 | 2013-11-20 | 曙光信息产业(北京)有限公司 | 集群数据库并行查询的通讯方法和通讯装置 |
CN103514177A (zh) * | 2012-06-20 | 2014-01-15 | 盛趣信息技术(上海)有限公司 | 数据存储方法及系统 |
CN104090948A (zh) * | 2014-07-02 | 2014-10-08 | 中广核工程有限公司 | 核电站海量数据处理方法、装置及系统 |
CN104239417A (zh) * | 2014-08-19 | 2014-12-24 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库数据分片后动态调整方法及装置 |
CN105045877A (zh) * | 2015-07-20 | 2015-11-11 | 深圳市深信服电子科技有限公司 | 数据库数据分片存储方法和装置、数据查询方法和装置 |
CN105190611A (zh) * | 2012-12-06 | 2015-12-23 | 微软技术许可有限责任公司 | 数据库横向扩展 |
CN105404638A (zh) * | 2015-09-28 | 2016-03-16 | 高新兴科技集团股份有限公司 | 一种解决分布式跨库分片表关联查询的方法 |
CN106021492A (zh) * | 2016-05-20 | 2016-10-12 | 浪潮软件集团有限公司 | 一种对表格数据进行转存的方法及装置 |
CN107766459A (zh) * | 2017-09-27 | 2018-03-06 | 天翼电子商务有限公司 | 一种高性能及高可用性的分表方法及其系统 |
CN108959354A (zh) * | 2018-05-04 | 2018-12-07 | 北京小米移动软件有限公司 | 数据处理方法、装置及服务器 |
WO2020133962A1 (zh) * | 2018-12-27 | 2020-07-02 | 重庆小雨点小额贷款有限公司 | 基于区块链的数据存储方法、相关设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464884A (zh) * | 2008-12-31 | 2009-06-24 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统及应用该系统的数据处理方法 |
US7801848B2 (en) * | 2007-08-02 | 2010-09-21 | International Business Machines Corporation | Redistributing a distributed database |
CN101963978A (zh) * | 2010-09-21 | 2011-02-02 | 卓望数码技术(深圳)有限公司 | 一种分布式数据库的管理方法、装置及系统 |
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
CN102053982A (zh) * | 2009-11-02 | 2011-05-11 | 阿里巴巴集团控股有限公司 | 一种数据库信息管理方法和设备 |
-
2011
- 2011-10-24 CN CN2011103277046A patent/CN102402586A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7801848B2 (en) * | 2007-08-02 | 2010-09-21 | International Business Machines Corporation | Redistributing a distributed database |
CN101464884A (zh) * | 2008-12-31 | 2009-06-24 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统及应用该系统的数据处理方法 |
CN102053982A (zh) * | 2009-11-02 | 2011-05-11 | 阿里巴巴集团控股有限公司 | 一种数据库信息管理方法和设备 |
CN101963978A (zh) * | 2010-09-21 | 2011-02-02 | 卓望数码技术(深圳)有限公司 | 一种分布式数据库的管理方法、装置及系统 |
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514177A (zh) * | 2012-06-20 | 2014-01-15 | 盛趣信息技术(上海)有限公司 | 数据存储方法及系统 |
CN103020193A (zh) * | 2012-12-03 | 2013-04-03 | 北京奇虎科技有限公司 | 处理数据库操作请求的方法和设备 |
CN105190611B (zh) * | 2012-12-06 | 2019-05-07 | 微软技术许可有限责任公司 | 用于数据库横向扩展的方法及装置 |
CN105190611A (zh) * | 2012-12-06 | 2015-12-23 | 微软技术许可有限责任公司 | 数据库横向扩展 |
US10606865B2 (en) | 2012-12-06 | 2020-03-31 | Microsoft Technology Licensing, Llc | Database scale-out |
CN103399943A (zh) * | 2013-08-14 | 2013-11-20 | 曙光信息产业(北京)有限公司 | 集群数据库并行查询的通讯方法和通讯装置 |
CN104090948A (zh) * | 2014-07-02 | 2014-10-08 | 中广核工程有限公司 | 核电站海量数据处理方法、装置及系统 |
CN104239417A (zh) * | 2014-08-19 | 2014-12-24 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库数据分片后动态调整方法及装置 |
CN104239417B (zh) * | 2014-08-19 | 2017-06-09 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库数据分片后动态调整方法及装置 |
CN105045877A (zh) * | 2015-07-20 | 2015-11-11 | 深圳市深信服电子科技有限公司 | 数据库数据分片存储方法和装置、数据查询方法和装置 |
CN105045877B (zh) * | 2015-07-20 | 2018-10-12 | 深信服科技股份有限公司 | 数据库数据分片存储方法和装置、数据查询方法和装置 |
CN105404638A (zh) * | 2015-09-28 | 2016-03-16 | 高新兴科技集团股份有限公司 | 一种解决分布式跨库分片表关联查询的方法 |
CN106021492A (zh) * | 2016-05-20 | 2016-10-12 | 浪潮软件集团有限公司 | 一种对表格数据进行转存的方法及装置 |
CN107766459A (zh) * | 2017-09-27 | 2018-03-06 | 天翼电子商务有限公司 | 一种高性能及高可用性的分表方法及其系统 |
CN107766459B (zh) * | 2017-09-27 | 2021-03-02 | 天翼商业保理有限公司 | 一种分表方法及其系统 |
CN108959354A (zh) * | 2018-05-04 | 2018-12-07 | 北京小米移动软件有限公司 | 数据处理方法、装置及服务器 |
WO2020133962A1 (zh) * | 2018-12-27 | 2020-07-02 | 重庆小雨点小额贷款有限公司 | 基于区块链的数据存储方法、相关设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402586A (zh) | 一种分布式数据存储方法 | |
US20220156289A1 (en) | Generating a multi-column index for relational databases by interleaving data bits for selectivity | |
CN104252536B (zh) | 一种基于hbase的上网日志数据查询方法及装置 | |
CN103778135B (zh) | 一种实时数据的分布存储和分页查询方法 | |
US9256633B2 (en) | Partitioning data for parallel processing | |
CN103473267B (zh) | 数据存储查询方法及系统 | |
CN102541990B (zh) | 利用虚拟分区的数据库重新分布方法和系统 | |
CN104462430B (zh) | 关系型数据库的数据处理方法及装置 | |
CN104933112A (zh) | 分布式互联网交易信息存储处理方法 | |
US9760604B2 (en) | System and method for adaptive filtering of data requests | |
US11822521B2 (en) | Associating application-specific methods with tables used for data storage | |
CN103399945A (zh) | 一种基于云计算数据库系统的数据结构 | |
CN106503008A (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN107330094A (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
CN101763390A (zh) | 基于Berkeley DB的数据库存储系统及方法 | |
CN104462080B (zh) | 针对检索结果进行分组统计的索引结构创建方法和系统 | |
US9922090B1 (en) | System and method for automatic vertical decomposition of a table for improving input/output and memory utilization in a database | |
CN109726219A (zh) | 数据查询的方法及终端设备 | |
JP5464017B2 (ja) | 分散メモリデータベースシステム、データベースサーバ、データ処理方法およびそのプログラム | |
US11500931B1 (en) | Using a graph representation of join history to distribute database data | |
CN102761617A (zh) | 一种工作流队列服务器、工作流调度系统及其方法 | |
Liroz-Gistau et al. | Dynamic workload-based partitioning algorithms for continuously growing databases | |
CN103544305B (zh) | 基于双哈希结构二维动态联系人查询列表查询方法及系统 | |
Bao et al. | Query optimization of massive social network data based on hbase | |
CN103309890A (zh) | 一种Linux文件系统与实时数据库索引融合的技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120404 |