CN110489490B - 基于分布式数据库的数据存储和查询方法 - Google Patents
基于分布式数据库的数据存储和查询方法 Download PDFInfo
- Publication number
- CN110489490B CN110489490B CN201910783036.4A CN201910783036A CN110489490B CN 110489490 B CN110489490 B CN 110489490B CN 201910783036 A CN201910783036 A CN 201910783036A CN 110489490 B CN110489490 B CN 110489490B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- fragment
- log
- query method
- 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
Links
Images
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/22—Indexing; Data structures therefor; Storage structures
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于分布式数据库的数据存储和查询方法,包括如下步骤:S1:通过客户端设置连接的数据源,确认需要处理的数据的数据类型S2:确认数据为核心业务数据,存储到ORACLE数据库;S3:确认数据为日志数据,通过消息队列异步存储到数据库中间件后端的MySQL数据库中;S4:数据库中间件将数据存储到MySQL数据库主库的分片节点;S5:MySQL数据库主库定期抽取各分片节点的数据同步到历史数据库中。本发明消息队列异步将日志业务数据落地到日志数据中心库中,减轻了核心交易库数据体量,保障了核心业务库的性能,升了核心业务整体运行效率。同时,高效的解决了日志历史数据的查询和存储问题。
Description
技术领域
本发明涉及一种数据存储方法,尤其涉及一种基于分布式数据库的数据存储和查询方法。
背景技术
目前,ORACLE数据库部署方式主要采用传统的C/S或B/S架构,无论是基于客户端或浏览器的方式始终没有改变对核心数据库的依赖,然而由于数据库存储数据体量不断积累增大,以及核心数据库交易业务数和历史数据(业务报表类等数据和非核心业务数据)交互混合存放,导致业务处理性能越来越低,水平扩容也变得相对愈发困难,进而极易引发数据库性能问题和故障,从而影响业务连续性。现有技术存在如下缺点:
1.传统ORACLE数据库不能有效横向扩展:ORACLE横向拆库需要对业务影响进行评估,在测试环境进行拆库后的应用综合测试,需要有停机窗口进行数据的割接,以及割接完成业务的试运行,费时费力。
2.数据读写不分离:随着业务不断的扩展,数据不断增加,数据库的压力也会越来越大,对数据库或者SQL的基本优化达不到最终的效果,这时采用读写分离的策略来改变现状是必要的选择,传统ORACLE数据库的应用场景没有采用数据库的读写分离技术。
3.核心交易业务数据和日志数据混合存放,没有进行数据剥离,导致数据处理性能低下。
发明内容
本发明要解决的技术问题是提供一种基于分布式数据库的数据存储和查询方法,解决上述问题。
本发明为解决上述技术问题而采用的技术方案是提供一种基于分布式数据库的数据存储和查询方法,包括如下步骤:S1:通过客户端设置连接的数据源,确认需要处理的数据的数据类型;数据类型包括核心业务数据、日志数据;S2:确认数据为核心业务数据,则将数据存储到ORACLE数据库;S3:确认数据为日志数据,则将数据通过消息队列异步存储到数据库中间件后端的MySQL数据库中;S4:数据库中间件将数据存储到MySQL数据库主库的分片节点,并将MySQL数据库主库分片节点的数据备份到MySQL数据库备库的分片节点供数据查询;S5:MySQL数据库主库定期抽取各分片节点的数据同步到历史数据库中。
进一步的,所述步骤S1中数据源包括核心业务数据源和日志数据源,核心业务数据源主要存放核心业务的数据;日志数据源主要存放日志数据,包括业务报表类业务数据和非核心业务数据。
进一步的,所述步骤S4具体包括:S21:数据库中间件通过数据分片规则将数据表横向和纵向拆分至多个数据库分片节点;S22:数据库中间件解析客户端发送的SQL语句,查找涉及到的数据表;S23:查看涉及到的数据表的定义,根据定义中包含的分片规则,获取SQL语句中分片字段的值,并匹配分片函数,得到该SQL对应的分片列表;S24:将SQL发往对应的分片执行,收集和处理所有分片返回的结果数据,并输出到客户端。
进一步的,所述S21中的数据分片规则设定将要分片的表字段columns、分片函数algorithm、分片个数列表partition Count和分片范围列表partition Length,分片的分配比例和容量大小由分片个数列表partition Count和分片范围列表partition Length决定。
进一步的,所述partition Count和partition Length两个数组的长度一致,且两个数组的向量点积恒等于1024,支持分片范围最大为1024。
进一步的,所述步骤S5中MySQL数据库通过ETL工具将数据自动同步到历史数据库中。
进一步的,MySQL数据库根据业务需求保存最近N个月的数据,应用程序通过数据库中间件从后端MySQL数据库的备库中提取最近N个月的数据;应用程序通过配置连接历史数据库提取N个月之前的数据。
本发明对比现有技术有如下的有益效果:本发明提供的基于分布式数据库的数据存储和查询方法,实现核心业务数据和日志数据的分别存储,通过消息队列使用异步的方式将日志数据写入至报表类中心库,在保障核心业务高效运行的同时,其他业务也可以有效平稳的运行,提升综合业务的整体运行效率;实现性能线性扩展,通过分布式部署,获取更高的并发访问量,使用ETL数据同步工具,实现从MySQL数据库分库分表迁移到MySQL历史数据库,大幅提升业务运行效率;实现业务读写分离,对数据库读和写的操作分开对应不同的数据库服务器,有效地减轻数据库压力,减轻IO压力,提高业务运行效率和稳定性。
附图说明
图1为本发明实施例中基于分布式数据库的数据存储和查询方法流程图;
图2为本发明实施例中分布式数据库架构图;
图3为本发明实施例中数据库中间件分片示意图;
图4为本发明实施例中数组存储原理图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1为本发明实施例中基于分布式数据库的数据存储和查询方法流程图;图2为本发明实施例中分布式数据库架构图。
请参见图1和图2,本发明提供的基于分布式数据库的数据存储和查询方法,包括如下步骤:
S1:通过客户端设置连接的数据源,确认需要处理的数据的数据类型;数据类型包括核心业务数据、日志数据;
客户端可通过设置连接配置不同的数据源,数据源可分为核心业务数据源和日志数据源,核心业务数据源主要存放核心交易业务的数据,日志数据源主要存放业务报表类等业务数据和部分非核心业务数据,根据数据的来源为核心业务数据源还是日志数据源,可以辨识数据为核心业务数据还是日志数据,从而基于辨识结果,将核心交易业务数据和日志数据分别落地到不同的数据库服务端,从而达到不同业务数据分离的作用。
S2:确认数据为核心业务数据,则将数据存储到ORACLE数据库;
S3:确认数据为日志数据,则将数据通过消息队列异步存储到数据库中间件后端的MySQL数据库中;
S4:数据库中间件将数据存储到MySQL数据库主库的分片节点,并将MySQL数据库主库分片节点的数据备份到MySQL数据库备库的分片节点供数据查询;
S5:MySQL数据库主库定期抽取各分片节点的数据同步到历史数据库中,MySQL数据库通过ETL工具将数据自动同步到历史数据库中。
ETL(Extract Transform Load)用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。
对于报表类业务系统改造而言,应用程序与连接单一的一个数据库是没有差别,后端数据库的分布式是对前端应用无感知,并且结合VIP等工作方式实现中间件的高可用,进而保障业务正常运行。
具体的,本发明提供的基于分布式数据库的数据存储和查询方法,数据库中间件将数据存储到MySQL数据库主库的分片节点,具体包括:
S21:数据库中间件通过数据分片规则将数据表横向和纵向拆分至多个数据库分片节点;
S22:数据库中间件解析客户端发送的SQL语句,查找涉及到的数据表;
S23:查看涉及到的数据表的定义,根据定义中包含的分片规则,获取SQL语句中分片字段的值,并匹配分片函数,得到该SQL对应的分片列表;
S24:将SQL发往对应的分片执行,收集和处理所有分片返回的结果数据,并输出到客户端。
如图3所示,Orders表被分为三个分片DN1、DN2和DN3,这三个分片是分布在两台MySQL服务器Mysql1和Mysql2上,以select*from Orders where prov=?这一SQL语句为例,查到prov=wuhan,按照分片函数,wuhan返回dn1,于是SQL就发给了MySQL1,去取DB1上的查询结果,并返回给用户。
数据库中间件采用数据分片规则进行数据分片,该规则配置策略比较灵活,可以均匀分配也可以非均匀分配,分片规则设定将要分片的表字段columns、分片函数algorithm、分片个数列表partition Count和分片范围列表partition Length,分片的分配比例和容量大小由分片个数列表partition Count和分片范围列表partition Length决定,partition Count和partition Length两个数组的长度一致,且两个数组的向量点积恒等于1024,支持分片范围最大为1024。
以分区策略将数据水平分成3份,前两份各占25%,第三份占50%为例,即为非均匀分区,第一份占256,第二份占256,第三份占512,因此设置
count[0]=2,count[1]=1
int[]count=new int[]{2,1};
int[]length=new int[]{256,512};
PartitionUtil pu=new PartitionUtil(count,length)
请参见图4,根据分片规则,进行数据存储时将数组的每个成员设定一个指针,指向一个链表的头,当然这个链表可能为空,也可能元素很多。根据元素的一些特征把元素分配到不同的链表中去,也是根据这些特征,找到正确的链表,再从链表中找出这个元素,元素特征转变为数组下标。该分片算法类似于十进制的求模运算,区别在于是二进制的操作,是取id的二进制低10位,即id二进制&1111111111。此算法的优点在于如果按照10进制取模运算,在连续插入1-10时候1-10会被分到1-10个分片,增大了插入的事务控制难度,而此算法根据二进制则可能会分到连续的分片,减少插入事务控制难度。
存放日志数据MySQL数据库根据业务需求保存最近N个月的数据,应用程序通过数据库中间件从后端MySQL数据库的备库中提取最近N个月的数据;应用程序通过配置连接历史数据库提取N个月之前的数据,N为自然数。
综上所述,本发明提供的基于分布式数据库的数据存储和查询方法,实现核心业务数据和日志数据的分别存储,通过消息队列使用异步的方式将日志数据写入至报表类中心库,在保障核心业务高效运行的同时,其他业务也可以有效平稳的运行,提升综合业务的整体运行效率;实现性能线性扩展,通过分布式部署,获取更高的并发访问量,使用ETL数据同步工具,实现从MySQL数据库分库分表迁移到MySQL历史数据库,大幅提升业务运行效率;实现业务读写分离,对数据库读和写的操作分开对应不同的数据库服务器,有效地减轻数据库压力,减轻IO压力,提高业务运行效率和稳定性。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (7)
1.一种基于分布式数据库的数据存储和查询方法,其特征在于,包括如下步骤:
S1:通过客户端设置连接的数据源,确认需要处理的数据的数据类型;数据类型包括核心业务数据、日志数据;
S2:确认数据为核心业务数据,则将数据存储到ORACLE数据库;
S3:确认数据为日志数据,则将数据通过消息队列异步存储到数据库中间件后端的MySQL数据库中;
S4:数据库中间件将数据存储到MySQL数据库主库的分片节点,并将MySQL数据库主库分片节点的数据备份到MySQL数据库备库的分片节点供数据查询;
S5:MySQL数据库主库定期抽取各分片节点的数据同步到历史数据库中。
2.如权利要求1所述的基于分布式数据库的数据存储和查询方法,其特征在于,所述步骤S1中数据源包括核心业务数据源和日志数据源,核心业务数据源主要存放核心业务的数据;日志数据源主要存放日志数据,包括业务报表类业务数据和非核心业务数据。
3.如权利要求1所述的基于分布式数据库的数据存储和查询方法,其特征在于,所述步骤S4具体包括:
S21:数据库中间件通过数据分片规则将数据表横向和纵向拆分至多个数据库分片节点;
S22:数据库中间件解析客户端发送的SQL语句,查找涉及到的数据表;
S23:查看涉及到的数据表的定义,根据定义中包含的分片规则,获取SQL语句中分片字段的值,并匹配分片函数,得到该SQL对应的分片列表;
S24:将SQL发往对应的分片执行,收集和处理所有分片返回的结果数据,并输出到客户端。
4.如权利要求3所述的基于分布式数据库的数据存储和查询方法,其特征在于,所述S21中的数据分片规则设定将要分片的表字段columns、分片函数algorithm、分片个数列表partition Count和分片范围列表partition Length,分片的分配比例和容量大小由分片个数列表partition Count和分片范围列表partition Length决定。
5.如权利要求4所述的基于分布式数据库的数据存储和查询方法,其特征在于,所述partition Count和partition Length两个数组的长度一致,且两个数组的向量点积恒等于1024,支持分片范围最大为1024。
6.如权利要求1所述的基于分布式数据库的数据存储和查询方法,其特征在于,所述步骤S5中MySQL数据库通过ETL工具将数据自动同步到历史数据库中。
7.如权利要求1所述的基于分布式数据库的数据存储和查询方法,其特征在于,MySQL数据库根据业务需求保存最近N个月的数据,应用程序通过数据库中间件从后端MySQL数据库的备库中提取最近N个月的数据;应用程序通过配置连接历史数据库提取N个月之前的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910783036.4A CN110489490B (zh) | 2019-08-23 | 2019-08-23 | 基于分布式数据库的数据存储和查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910783036.4A CN110489490B (zh) | 2019-08-23 | 2019-08-23 | 基于分布式数据库的数据存储和查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489490A CN110489490A (zh) | 2019-11-22 |
CN110489490B true CN110489490B (zh) | 2022-11-29 |
Family
ID=68553214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910783036.4A Active CN110489490B (zh) | 2019-08-23 | 2019-08-23 | 基于分布式数据库的数据存储和查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489490B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930817A (zh) * | 2020-07-28 | 2020-11-13 | 银盛支付服务股份有限公司 | 一种基于大数据的分布式非结构化数据库关联查询方法 |
CN113032447A (zh) * | 2020-12-31 | 2021-06-25 | 一汽资本控股有限公司 | 一种数据分布式存储的方法以及分布式数据存储系统 |
CN114090530A (zh) * | 2021-11-23 | 2022-02-25 | 中国银行股份有限公司 | 分布式架构下的日志汇总查询方法及装置 |
CN114817341B (zh) * | 2022-06-30 | 2022-09-06 | 北京奥星贝斯科技有限公司 | 访问数据库的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2891994A1 (en) * | 2013-11-04 | 2015-07-08 | Guangdong Electronics Industry Institute Ltd. | Method for achieving automatic synchronization of multisource heterogeneous data resources |
CN105138615A (zh) * | 2015-08-10 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种构建大数据分布式日志的方法和系统 |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN107343021A (zh) * | 2017-05-22 | 2017-11-10 | 国网安徽省电力公司信息通信分公司 | 国网云中应用的一种基于大数据的日志管理系统 |
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN109471861A (zh) * | 2018-11-01 | 2019-03-15 | 南京天辰礼达电子科技有限公司 | 一种基于MySql的数据分布式储存系统 |
-
2019
- 2019-08-23 CN CN201910783036.4A patent/CN110489490B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2891994A1 (en) * | 2013-11-04 | 2015-07-08 | Guangdong Electronics Industry Institute Ltd. | Method for achieving automatic synchronization of multisource heterogeneous data resources |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN105138615A (zh) * | 2015-08-10 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种构建大数据分布式日志的方法和系统 |
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN107343021A (zh) * | 2017-05-22 | 2017-11-10 | 国网安徽省电力公司信息通信分公司 | 国网云中应用的一种基于大数据的日志管理系统 |
CN109471861A (zh) * | 2018-11-01 | 2019-03-15 | 南京天辰礼达电子科技有限公司 | 一种基于MySql的数据分布式储存系统 |
Non-Patent Citations (2)
Title |
---|
基于Mycat的分布式数据存储研究;陈宇收;《中国新通信》;20181120(第22期);全文 * |
数据库系统应用分片中间件;王亚玲等;《计算机系统应用》;20151015(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110489490A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489490B (zh) | 基于分布式数据库的数据存储和查询方法 | |
CN111400408B (zh) | 数据同步方法、装置、设备及存储介质 | |
AU2007317574B2 (en) | Managing storage of individually accessible data units | |
US7788225B2 (en) | Apparatus and method for identifying asynchronous data in redundant data stores and for re-synchronizing same | |
AU2009246432B2 (en) | Managing storage of individually accessible data units | |
US20140025685A1 (en) | Managing storage of individually accessible data units | |
EP2545451B1 (en) | Managing storage of individually accessible data units | |
CN101311930A (zh) | 具有重复值的表的块压缩 | |
CN107977396B (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN101311931A (zh) | 基于值的出现的表压缩 | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
US11880368B2 (en) | Compressing data sets for storage in a database system | |
CN114153809A (zh) | 基于数据库日志并行实时增量统计的方法 | |
CN113934797B (zh) | 一种银行业超大数据同步方法和系统 | |
CN105589908A (zh) | 用于事务集合的关联规则计算方法 | |
CN106056425A (zh) | 订单数据处理方法和处理装置 | |
US10769111B2 (en) | Data transformation of Cassandra files for improved deduplication during backup | |
CN104391891A (zh) | 一种数据库异构复制方法 | |
CN110297836B (zh) | 基于压缩位图方式的用户标签存储方法和检索方法 | |
US11481370B1 (en) | Devices, systems, and methods for optimization of data sets | |
CN108027835B (zh) | 用于管理主数据库和副本数据库的存储的装置和方法 | |
CN114926255A (zh) | 财务数据核对方法、装置、设备及存储介质 | |
CN112783980A (zh) | 数据同步处理方法、装置、电子设备以及计算机可读介质 | |
CN116756247B (zh) | 数据修复方法、装置、计算机设备和存储介质 | |
CN116821237A (zh) | 数据库增量数据同步方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |