CN106339475A - 一种海量数据的分布式存储系统 - Google Patents
一种海量数据的分布式存储系统 Download PDFInfo
- Publication number
- CN106339475A CN106339475A CN201610757512.1A CN201610757512A CN106339475A CN 106339475 A CN106339475 A CN 106339475A CN 201610757512 A CN201610757512 A CN 201610757512A CN 106339475 A CN106339475 A CN 106339475A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- service
- engine
- storehouse
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种海量数据的分布式存储系统,包括:数据库主键生成器,用于在应用服务器生成数据库主键;散列引擎,对数据库主键生成器生成的主键进行散列分布,将主键对应的数据平衡分布到后端的业务数据库分区表中;分库分表数据操作引擎,按照业务类型将数据库拆分为多个业务数据库组,每组业务数据库中包含多个实际数据库实例;同时对某个业务数据库实例的具体业务表也使用散列引擎进行拆分,保证单表的记录数不超过百万级;数据平衡器,将已有的历史数据部分迁移到新的业务数据库中。本发明可以尽量减少数据的迁移,使数据平衡器的工作量大大减轻,减少了对业务系统的影响,以保证数据操作引擎的正确访问和数据平衡性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及了一种海量数据的分布式存储系统。
背景技术
随着IT技术及互联网+的发展,当今很多行业的信息化建设越来越完善,并且逐步将企业内部的信息对外开放,系统的使用者越来越多,访问频次指数级增长,使用者和系统交互过程中产生的数据越来越多。产生了海量数据的存储及访问这个复杂而艰巨的问题,它的主要难点有以下几个方面:
一、数据量过大,系统资源要求高。
如果说有单一表的数据量百万级、千万级甚至过亿,我们仍然可以通过增加数据库服务器软硬件的方式加以解决。但当数据量到达十亿级、百亿甚至千亿级,传统服务器的性能已经无法满足处理要求,而专有的大型机等服务器价格非常昂贵,企业基本无法承担。同时,传统的数据库处理软件也无法负载如此大量的数据,必须通过合理的软件架构改造进行处理。
二、扩展性不强,存在性能瓶颈。
对海量的数据进行处理,传统的硬件和数据库软件存在性能瓶颈,当到达此瓶颈之后我们可以通过增加处理节点的方式来提高性能,但传统数据库软件对多节点的支持有限,节点过多会使节点间通讯量大增,从而导致节点数量只能维持在个位数。
三、性价比不高,运行维护较难。
传统的小型机等服务器由于是专有硬件,采购价格非常高;传统数据库软件授权和维护价格也非常高,导致系统一开始的建设投入很高。初期投入需要考虑系统3-5年的使用,硬件和软件的配置较高,但初期根本没有那么多的数据和用户,导致前期硬件和软件性能基本处于浪费状态。专有的硬件和传统数据库软件的维护技术要求较高,维护成本高。
发明内容
本发明针对现有技术中扩展性不强、性价比不高的缺点,提供了一种海量数据的分布式存储系统。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种海量数据的分布式存储系统,包括:
数据库主键生成器,用于在应用服务器生成数据库主键,数据库主键生成器将一个长整形long类型的64位数据进行分成系统毫秒数、应用服务器ID和毫秒内序列3个部分;
散列引擎,对数据库主键生成器生成的主键进行散列分布,将主键对应的数据平衡分布到后端的业务数据库分区表中;
分库分表数据操作引擎,按照业务类型将数据库拆分为多个业务数据库组,每组业务数据库中包含多个实际数据库实例,保证单库的数据量不超过TB级;同时对某个业务数据库实例的具体业务表也使用散列引擎进行拆分,保证单表的记录数不超过百万级;
数据平衡器,将已有的历史数据部分迁移到新的业务数据库中。
作为优选,系统毫秒数取UNIXTIME的纪元时间到当前时间所经历的毫秒数-系统上线的时间。
作为优选,应用服务器ID占用10位,用于标识生成ID的服务器。
作为优选,毫秒内序列占用12位,储存1—4096个数字,当1毫秒内需获取的ID大于4096个,多出的部分延迟到下一毫秒获取。
一种如上所述的分库分表数据操作引擎的操作方法,如下步骤:
(1)首先按照业务类型将数据库使用散列引擎拆分为多组业务数据库,每组业务数据库中包含多个实际数据库实例,保证单库的数据量不超过TB级;同时对某个实际数据库实例的具体业务表也使用散列引擎进行拆分,保证单表的记录数不超过百万级;
(2)应用服务器收到客户端请求,若为新增操作则调用主键生成器;若为修改或查询操作则直接将业务类型,主键传入散列引擎;
(3)散列引擎根据业务类型确定数据所在的数据库实例ID,根据主键确定数据所在的表ID,并调用分库分表操作引擎;
(4)分库分表操作引擎根据传入的数据库实例ID和表ID,存入数据或者查询出数据,原路返回给客户端。
本发明由于采用了以上技术方案,具有显著的技术效果:当业务数据库组不能支撑目前的使用时,需要向业务数据库组中添加新的业务数据库。由于分布式散列引擎可以尽量减少数据的迁移,使数据平衡器的工作量大大减轻,减少了对业务系统的影响。当有新的业务数据库加入到业务数据库组中时,数据平衡器负责将已有的历史数据部分迁移到新的业务数据库中,以保证数据操作引擎的正确访问和数据的平衡性。
附图说明
图1是本发明一种海量数据的分布式存储系统的结构示意图;
图2是本发明一种海量数据的分布式存储系统中的主键的结构示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步详细描述。
如图1至图2所示,一种海量数据的分布式存储系统,包括:
数据库主键生成器,用于在应用服务器生成数据库主键,数据库主键生成器将一个长整形long类型的64位数据进行分成系统毫秒数、应用服务器ID和毫秒内序列3个部分;系统毫秒数取UNIXTIME的纪元时间到当前时间所经历的毫秒数—系统上线的时间;数据平衡器,将已有的历史数据部分迁移到新的业务数据库中;应用服务器ID占用10位,用于标识生成ID的服务器;毫秒内序列占用12位,储存1—4096个数字,当1毫秒内需获取的ID大于4096个,多出的部分延迟到下一毫秒获取;
散列引擎,对数据库主键生成器生成的主键进行散列分布,将主键对应的数据平衡分布到后端的业务数据库分区表中;
分库分表数据操作引擎,按照业务类型将数据库拆分为多个业务数据库组,每组业务数据库中包含多个实际数据库实例,保证单库的数据量不超过TB级;同时对某个业务数据库实例的具体业务表也使用散列引擎进行拆分,保证单表的记录数不超过百万级。
一种如上所述的分库分表数据操作引擎的操作方法,如下步骤:
(1)首先按照业务类型将数据库使用散列引擎拆分为多组业务数据库,每组业务数据库中包含多个实际数据库实例,保证单库的数据量不超过TB级;同时对某个实际数据库实例的具体业务表也使用散列引擎进行拆分,保证单表的记录数不超过百万级;
(2)应用服务器收到客户端请求,若为新增操作则调用主键生成器;若为修改或查询操作则直接将业务类型,主键传入散列引擎;
(3)散列引擎根据业务类型确定数据所在的数据库实例ID,根据主键确定数据所在的表ID,并调用分库分表操作引擎;
(4)分库分表操作引擎根据传入的数据库实例ID和表ID,存入数据或者查询出数据,原路返回给客户端。
本发明在一个集群中最大可以有1024台应用服务器,每台应用服务器可以在一个毫秒内生成4096个ID,并保证其不重复使用139年。
此种主键方法的优点如下:
1、通过该ID可以反向计算出ID的生成时间、生成的应用服务器ID;
2、如同序列一样自增,但不依赖具体数据库;
3、减少数据库交互和热点,因为ID在应用服务器生成,性能很高。
在分布式系统中,对数据库服务器的添加删除,或者机器故障后自动脱离集群这些操作是分布式数据库管理最基本的功能。
如果采用常用的hash(object)%N算法,那么在有机器添加或者删除后,很多原有的数据就无法找到了,这样严重的违反了散列的单调性原则。本发明设计的散列分布引擎,该引擎使用了一致性算列算法,满足了单调性和负载均衡的特性以及一般散列算法的分散性。它对主键生成器生成的主键进行散列分布,将主键对应的数据平衡分布到后端的业务数据库分区表中。
当业务数据库组不能支撑目前的使用时,需要向业务数据库组中添加新的业务数据库。由于分布式散列引擎可以尽量减少数据的迁移,所以数据平衡器的工作量大大减轻,减少了对业务系统的影响。当有新的业务数据库加入到业务数据库组中时,数据平衡器负责将已有的历史数据部分迁移到新的业务数据库中,以保证数据操作引擎的正确访问和数据的平衡性。
总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。
Claims (5)
1.一种海量数据的分布式存储系统,其特征在于:包括:
数据库主键生成器,用于在应用服务器生成数据库主键,数据库主键生成器将一个长整形long类型的64位数据进行分成系统毫秒数、应用服务器ID和毫秒内序列3个部分;
散列引擎,对数据库主键生成器生成的主键进行散列分布,将主键对应的数据平衡分布到后端的业务数据库分区表中;
分库分表数据操作引擎,按照业务类型将数据库拆分为多个业务数据库组,每组业务数据库中包含多个实际数据库实例,保证单库的数据量不超过TB级;同时对某个业务数据库实例的具体业务表也使用散列引擎进行拆分,保证单表的记录数不超过百万级;
数据平衡器,将已有的历史数据部分迁移到新的业务数据库中。
2.根据权利要求1所述的一种海量数据的分布式存储系统,其特征在于:系统毫秒数为UNIXTIME的纪元时间到当前时间所经历的毫秒数-系统上线的时间。
3.根据权利要求1所述的一种海量数据的分布式存储系统,其特征在于:应用服务器ID占用10位,用于标识生成ID的服务器。
4.根据权利要求1所述的一种海量数据的分布式存储系统,其特征在于:毫秒内序列占用12位,储存1—4096个数字,当1毫秒内需获取的ID大于4096个,多出的部分延迟到下一毫秒获取。
5.一种如权利要求1所述的分库分表数据操作引擎的操作方法,其特征在于,包括如下步骤:
(1)首先按照业务类型将数据库使用散列引擎拆分为多组业务数据库,每组业务数据库中包含多个实际数据库实例,保证单库的数据量不超过TB级;同时对某个实际数据库实例的具体业务表也使用散列引擎进行拆分,保证单表的记录数不超过百万级;
(2)应用服务器收到客户端请求,若为新增操作则调用主键生成器;若为修改或查询操作则直接将业务类型,主键传入散列引擎;
(3)散列引擎根据业务类型确定数据所在的数据库实例ID,根据主键确定数据所在的表ID,并调用分库分表操作引擎;
(4)分库分表操作引擎根据传入的数据库实例ID和表ID,存入数据或者查询出数据,原路返回给客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610757512.1A CN106339475A (zh) | 2016-08-29 | 2016-08-29 | 一种海量数据的分布式存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610757512.1A CN106339475A (zh) | 2016-08-29 | 2016-08-29 | 一种海量数据的分布式存储系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106339475A true CN106339475A (zh) | 2017-01-18 |
Family
ID=57822537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610757512.1A Pending CN106339475A (zh) | 2016-08-29 | 2016-08-29 | 一种海量数据的分布式存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106339475A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066522A (zh) * | 2017-02-20 | 2017-08-18 | 北京数字联盟网络科技有限公司 | 数据库的访问方法和装置 |
CN107402950A (zh) * | 2017-04-28 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 基于分库分表的文件处理方法和装置 |
CN108763381A (zh) * | 2018-05-18 | 2018-11-06 | 深圳市彬讯科技有限公司 | 基于一致性哈希算法的分表方法及设备 |
CN108804451A (zh) * | 2017-04-28 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 生成主键的方法、装置、电子设备和可读存储介质 |
CN110008750A (zh) * | 2019-04-09 | 2019-07-12 | 广东绍林科技开发有限公司 | 一种具有区块链分布式管理特色的数据存储系统及方法 |
CN111209284A (zh) * | 2020-01-10 | 2020-05-29 | 北京仁科互动网络技术有限公司 | 基于元数据的分表方法及装置 |
CN111427911A (zh) * | 2020-03-25 | 2020-07-17 | 平安医疗健康管理股份有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN112347076A (zh) * | 2020-11-05 | 2021-02-09 | 中国平安人寿保险股份有限公司 | 分布式数据库的数据存储方法、装置和计算机设备 |
CN112527200A (zh) * | 2020-12-07 | 2021-03-19 | 成都网信天成科技有限公司 | 一种Jmatrix分布式云储存系统 |
CN113254207A (zh) * | 2021-05-26 | 2021-08-13 | 北京达佳互联信息技术有限公司 | 一种标识码生成方法、装置、服务器和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019960A (zh) * | 2012-12-03 | 2013-04-03 | 华为技术有限公司 | 分布式缓存方法及系统 |
CN103399945A (zh) * | 2013-08-15 | 2013-11-20 | 成都博云科技有限公司 | 一种基于云计算数据库系统的数据结构 |
CN104008199A (zh) * | 2014-06-16 | 2014-08-27 | 北京京东尚科信息技术有限公司 | 一种数据查询方法 |
CN104683422A (zh) * | 2013-12-03 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 数据传输方法及装置 |
-
2016
- 2016-08-29 CN CN201610757512.1A patent/CN106339475A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019960A (zh) * | 2012-12-03 | 2013-04-03 | 华为技术有限公司 | 分布式缓存方法及系统 |
CN103399945A (zh) * | 2013-08-15 | 2013-11-20 | 成都博云科技有限公司 | 一种基于云计算数据库系统的数据结构 |
CN104683422A (zh) * | 2013-12-03 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 数据传输方法及装置 |
CN104008199A (zh) * | 2014-06-16 | 2014-08-27 | 北京京东尚科信息技术有限公司 | 一种数据查询方法 |
Non-Patent Citations (5)
Title |
---|
DONNEYYOUNG: "数据库分库分表(一)常见分布式主键ID生成策略", 《简书》 * |
凯文加内特: "Mysql分库分表方案", 《OSCHINA》 * |
刘圆等: "《面向大数据的分布式存储技术研究》", 《电信技术》 * |
孙勇等: "《面向云计算的键值型分布式存储系统研究》", 《电子学报》 * |
葛微等: "《HiBase:一种基于分层式索引的高效HBase查询技术与系统》", 《计算机学报》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066522A (zh) * | 2017-02-20 | 2017-08-18 | 北京数字联盟网络科技有限公司 | 数据库的访问方法和装置 |
CN107402950A (zh) * | 2017-04-28 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 基于分库分表的文件处理方法和装置 |
CN108804451A (zh) * | 2017-04-28 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 生成主键的方法、装置、电子设备和可读存储介质 |
CN107402950B (zh) * | 2017-04-28 | 2020-05-29 | 阿里巴巴集团控股有限公司 | 基于分库分表的文件处理方法和装置 |
CN108804451B (zh) * | 2017-04-28 | 2021-07-30 | 北京京东尚科信息技术有限公司 | 生成主键的方法、装置、电子设备和可读存储介质 |
CN108763381A (zh) * | 2018-05-18 | 2018-11-06 | 深圳市彬讯科技有限公司 | 基于一致性哈希算法的分表方法及设备 |
CN108763381B (zh) * | 2018-05-18 | 2022-05-17 | 土巴兔集团股份有限公司 | 基于一致性哈希算法的分表方法及设备 |
CN110008750B (zh) * | 2019-04-09 | 2021-01-15 | 广东绍林科技开发有限公司 | 一种具有区块链分布式管理特色的数据存储系统及方法 |
CN110008750A (zh) * | 2019-04-09 | 2019-07-12 | 广东绍林科技开发有限公司 | 一种具有区块链分布式管理特色的数据存储系统及方法 |
CN111209284A (zh) * | 2020-01-10 | 2020-05-29 | 北京仁科互动网络技术有限公司 | 基于元数据的分表方法及装置 |
CN111209284B (zh) * | 2020-01-10 | 2023-12-29 | 北京仁科互动网络技术有限公司 | 基于元数据的分表方法及装置 |
CN111427911A (zh) * | 2020-03-25 | 2020-07-17 | 平安医疗健康管理股份有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN112347076A (zh) * | 2020-11-05 | 2021-02-09 | 中国平安人寿保险股份有限公司 | 分布式数据库的数据存储方法、装置和计算机设备 |
CN112347076B (zh) * | 2020-11-05 | 2023-11-14 | 中国平安人寿保险股份有限公司 | 分布式数据库的数据存储方法、装置和计算机设备 |
CN112527200A (zh) * | 2020-12-07 | 2021-03-19 | 成都网信天成科技有限公司 | 一种Jmatrix分布式云储存系统 |
CN113254207A (zh) * | 2021-05-26 | 2021-08-13 | 北京达佳互联信息技术有限公司 | 一种标识码生成方法、装置、服务器和存储介质 |
CN113254207B (zh) * | 2021-05-26 | 2024-05-28 | 北京达佳互联信息技术有限公司 | 一种标识码生成方法、装置、服务器和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106339475A (zh) | 一种海量数据的分布式存储系统 | |
US10521396B2 (en) | Placement policy | |
KR20200027413A (ko) | 데이터 저장 방법, 장치 및 시스템 | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
US9135071B2 (en) | Selecting processing techniques for a data flow task | |
CN104202423B (zh) | 一种通过软件架构扩展缓存的系统 | |
CN101741907A (zh) | 一种均衡服务器负载的方法、系统和主服务器 | |
US10158709B1 (en) | Identifying data store requests for asynchronous processing | |
CN111966677B (zh) | 数据报表的处理方法、装置、电子设备及存储介质 | |
CN110941602B (zh) | 数据库的配置方法、装置、电子设备及存储介质 | |
CN104111924A (zh) | 一种数据库系统 | |
CN109408590A (zh) | 分布式数据库的扩容方法、装置、设备及存储介质 | |
CN104469392A (zh) | 一种视频文件存储方法及装置 | |
CN105205154A (zh) | 数据迁移方法以及装置 | |
JP2011170774A (ja) | 決定木生成装置、決定木生成方法、及びプログラム | |
CN108897876A (zh) | 一种数据接入方法及装置 | |
CN104317957A (zh) | 一种报表处理的开放平台、系统及报表处理方法 | |
CN107798120B (zh) | 一种数据转换方法及装置 | |
CN105740068A (zh) | 面向大数据平台基于内存数据局部性的调度方法及系统 | |
CN111400301A (zh) | 一种数据查询方法、装置及设备 | |
EP2662783A1 (en) | Data archiving approach leveraging database layer functionality | |
JP7440007B2 (ja) | データベースをクエリするためのシステム、方法および装置 | |
CN106161056B (zh) | 周期型数据的分布式缓存运维方法及装置 | |
CN113590651B (zh) | 一种基于hql的跨集群数据处理系统及方法 | |
CN113449042B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170118 |
|
RJ01 | Rejection of invention patent application after publication |