CN109376151A - 数据分库处理方法、系统、装置和存储介质 - Google Patents
数据分库处理方法、系统、装置和存储介质 Download PDFInfo
- Publication number
- CN109376151A CN109376151A CN201811026260.0A CN201811026260A CN109376151A CN 109376151 A CN109376151 A CN 109376151A CN 201811026260 A CN201811026260 A CN 201811026260A CN 109376151 A CN109376151 A CN 109376151A
- Authority
- CN
- China
- Prior art keywords
- cutting
- library
- data
- horizontal cutting
- carry out
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据分库处理方法、系统、装置和存储介质,所述方法包括:根据数据库中数据业务类型,对所述数据库进行垂直切分处理,得到多个切分库;对所述多个切分库内表格的数据量和增速进行数据分析,并判断是否需要进行水平切分;若需要进行所述水平切分,则对所述多个切分库进行水平切分。本发明能有效隔离故障,可构建更加科学的数据结构,便于数据快速迁移和快速横向扩展。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据分库处理方法、系统、装置和存储介质。
背景技术
互联网时代,也是关系型数据库独领风骚的时代,从早期的Oracle独步天下,到现在MySQL蒸蒸日上,关系型数据库是大多数互联网应用在数据可靠性存储上的“命脉”。
随着互联网产品在体量和规模上日益膨胀,无论是Oracle还是MySQL,都会第一时间面临来自磁盘、CPU和内存等单机瓶颈,为此,产品方除了需要不断购买成本难以控制的高规格服务器,还要面临不断迭代的在线数据迁移。在这种情况下,无论是海量的结构化数据还是快速成长的业务规模,都迫切需要一种水平扩展的方法将存储成本分摊到成本可控的商用服务器上。同时,也希望通过线性扩容降低全量数据迁移对线上服务带来的影响:(1)大数据量的存储需要大量的数据库资源;(2)数据量的不断增长要求数据库存储具有可扩展性;(3)在保证大数据量的情况下,要保证性能、高可用性等质量要求;(4)现有框架中没有彻底解决大数据量的存储问题。
尽管现有技术中也试图通过多种技术手段解决改善,但是却无法有效解决上述问题。
发明内容
为解决上述技术问题,本发明提供一种数据分库处理方法、系统、装置和存储介质,解决当前交易数据一致性差的问题。
根据本发明实施例的第一方面,提供了一种数据分库处理方法,所述方法包括:
根据数据库中数据业务类型,对所述数据库进行垂直切分处理,得到多个切分库;
对所述多个切分库内表格的数据量和增速进行数据分析,并判断是否需要进行水平切分;
若需要进行所述水平切分,则对所述多个切分库进行水平切分。
根据本发明实施例的第二方面,提供一种数据分库处理系统,所述系统包括:
垂直切分模块,用于根据数据库中数据业务类型,对所述数据库进行垂直切分处理,得到多个切分库;
分析判断模块,用于对所述多个切分库内表格的数据量和增速进行数据分析,并判断是否需要进行水平切分;
水平切分模块,用于若需要进行所述水平切分,则对所述多个切分库进行水平切分。
根据本发明实施例的第三方面,提供一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其中,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:
所述操作包括如上中任一项所述数据分库处理方法所包含的步骤。
根据本发明实施例的第四方面,提供一种数据分库处理装置,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如上所述的数据分库处理方法所包含的步骤。
实施本发明实施例提供的一种数据分库处理方法、系统、装置和存储介质,具有以下优点:能有效隔离故障,可构建更加科学的数据结构,便于数据快速迁移和快速横向扩展。
附图说明
图1是本发明实施例的一种数据分库处理方法的流程图;
图2是本发明实施例的一种数据分库处理系统1的结构示意图。
具体实施方式
为使本发明的实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
图1是本发明实施例的一种数据分库处理方法的流程图,参见图1,所述方法包括:
步骤S1,根据数据库中数据业务类型,对所述数据库进行垂直切分处理,得到多个切分库;
步骤S2,对所述多个切分库内表格的数据量和增速进行数据分析,并判断是否需要进行水平切分;
步骤S3,若需要进行所述水平切分,则对所述多个切分库进行水平切分。
在本发明的实施方式中,在步骤S2中,所述判断是否需要进行水平切分包括:若所述切分库内表格的数据增长速度达到预定阈值,则判断为需要进行水平切分;若所述切分库内表格的数据增长速度未达到预定阈值,则判断为不需要进行水平切分。
在本发明的实施方式中,在步骤S3中,对所述多个切分库进行水平切分包括:依据业务逻辑和表间关系,将每个切分库再切分为多个小切分库。所述水平切分后还包括:根据所述多个小切分库中的用户编号信息进行哈希分库分表处理。
其中,根据用户编号进行哈希分库分表,可以满足创建订单和通过USERID维度进行查询操作的需求,但是,业务上可能有其他检索的条件存在,例如按证件信息、手机号等进行查询的占比达到80%以上,所以需要解决通过其他条件进行订单的CURD等操作,所以需要建立全局索引表。例如证件号索引表是用于用户编号与证件号的对应关系表,根据证件号进行哈希取模,放到分库里面。根据证件号进行查询时,先查出证件号对应的用户编号,再根据用户编号取模查询去对应的库查询订单数据。证件号与用户编号的关系在创建后是一般不会更改的,为了进一步提高性能,引入缓存,把证件号与用户编号的关系存放到缓存里面,减少查表操作,提升性能,索引不命中时再去查表,并把查询结果更新到缓存中。建立全局索引表信息的异步构建机制,以定时器检查交易过程中的索引生成情况,若生成失败,就异步构建。其中,证件信息索引表如下所示:
证件信息索引表,CUSTINFO_INDEX
字段名称 | 字段类型 | 约束 | 说明 |
平台客户号 | Char(20) | ||
证件类型 | Char(4) | ||
证件号码 | Char(20) | ||
客户名称 |
主键:平台客户号
索引:证件类型+证件号码
本发明通过一种数据分库处理方式,能有效隔离故障,可构建更加科学的数据结构,便于数据快速迁移和快速横向扩展。
垂直切分的依据原则是:将业务紧密,表间关联密切的表划分在一起,例如同一模块的表。结合已经准备好的数据库ER图或领域模型图,仿照活动图中的泳道概念,一个泳道代表一个shard,把所有表格划分到不同的泳道中。
其中,所述判断是否需要进行水平切分包括:若所述切分库内表格的数据增长速度达到预定阈值,则判断为需要进行水平切分;若所述切分库内表格的数据增长速度未达到预定阈值,则判断为不需要进行水平切分。
垂直切分后,需要对shard(分片)内表格的数据量和增速进一步分析,以确定是否需要进行水平切分。若划分到一起的数据库表数据增长缓慢,在业务功能上线后,预估在未来足够长的时期内均可以由单一数据库承载,则不需要进行水平切分,所有表格驻留同一分库中。这样的话,这些数据库表间关联关系会得到最大限度的保留,保证了数据库操作语句的执行灵活性,包括联合、分页等复杂操作。
若划分到一起的表格数据量非常大,并且在未来一段时间内可预见地快速增长,需要进一步进行水平分割。进一步的水平分割就这样进行:结合业务逻辑和表间关系,将当前shard划分成多个更小的shard,通常情况下,这些更小的shard每一个都只包含一个主表(将以该表ID进行散列的表)和多个与其关联或间接关联的次表。这种一个shard一张主表多张次表的状况是水平切分的必然结果。这样切分下来,shard数量就会迅速增多。
对所述多个切分库进行水平切分包括:依据业务逻辑和表间关系,将每个切分库再切分为多个小切分库。所述水平切分后还包括:根据所述多个小切分库中的用户编号信息进行哈希分库分表处理。切分完成之后,需要考虑是否有真的有必要每一个shard都作为一个分库处理。如果每一个shard代表一个独立的数据库,那么管理和维护数据库将会非常麻烦,而且这些小shard往往只有两三张表,为此而建立一个新库,利用率并不高,因此,在水平切分完成后可再进行一次归并,将业务上相近,并且具有相近数据增长速率(主表数据量在同一数量级上)的两个或多个shard放到同一个数据库上,在逻辑上它们依然是独立的shard,有各自的主表,并依据各自主表的ID进行散列,不同的只是它们的散列取模(即节点数量)必需是一致的。这样,每个数据库结点上的表格数量就相对平均了。如,按用户编号HASH切分,使用用户编号哈希取模,根据数据量评估,把单库拆分成n个库,n个库分别存放到m组服务器中。
图2是本发明实施例的一种分布式数据一致性处理系统1的结构示意图,参见图2,所述系统1包括:
垂直切分模块100,用于根据数据库中数据业务类型,对所述数据库进行垂直切分处理,得到多个切分库;
分析判断模块200,用于对所述多个切分库内表格的数据量和增速进行数据分析,并判断是否需要进行水平切分;
水平切分模块300,用于若需要进行所述水平切分,则对所述多个切分库进行水平切分。
在本发明的实施方式中,执行分析判断模块200时,所述判断是否需要进行水平切分包括:若所述切分库内表格的数据增长速度达到预定阈值,则判断为需要进行水平切分;若所述切分库内表格的数据增长速度未达到预定阈值,则判断为不需要进行水平切分。
在本发明的实施方式中,执行水平切分模块300时,对所述多个切分库进行水平切分包括:依据业务逻辑和表间关系,将每个切分库再切分为多个小切分库。所述水平切分后还包括:根据所述多个小切分库中的用户编号信息进行哈希分库分表处理。
本发明通过一种数据分库处理方式,能有效隔离故障,可构建更加科学的数据结构,便于数据快速迁移和快速横向扩展。
另外,本发明还提供一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其特征在于,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:所述操作包括如上所述数据分库处理方法所包含的步骤,在此不再赘述。
另外,本发明还提供一种数据分库处理装置,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如上所述的数据分库处理方法所包含的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明的保护范围,因此依本发明权利要求的教导对上述实施例所作的等同变化,仍属于本发明权利要求所涵盖的范围内。
Claims (10)
1.一种数据分库处理方法,其特征在于,所述方法包括:
根据数据库中数据业务类型,对所述数据库进行垂直切分处理,得到多个切分库;
对所述多个切分库内表格的数据量和增速进行数据分析,并判断是否需要进行水平切分;
若需要进行所述水平切分,则对所述多个切分库进行水平切分。
2.如权利要求1所述方法,其特征在于,所述判断是否需要进行水平切分包括:
若所述切分库内表格的数据增长速度达到预定阈值,则判断为需要进行水平切分;
若所述切分库内表格的数据增长速度未达到预定阈值,则判断为不需要进行水平切分。
3.如权利要求1所述方法,其特征在于,对所述多个切分库进行水平切分包括:
依据业务逻辑和表间关系,将每个切分库再切分为多个小切分库。
4.如权利要求3所述方法,其特征在于,所述水平切分后还包括:
根据所述多个小切分库中的用户编号信息进行哈希分库分表处理。
5.一种数据分库处理系统,其特征在于,所述系统包括:
垂直切分模块,用于根据数据库中数据业务类型,对所述数据库进行垂直切分处理,得到多个切分库;
分析判断模块,用于对所述多个切分库内表格的数据量和增速进行数据分析,并判断是否需要进行水平切分;
水平切分模块,用于若需要进行所述水平切分,则对所述多个切分库进行水平切分。
6.如权利要求5所述系统,其特征在于所述判断是否需要进行水平切分包括:
若所述切分库内表格的数据增长速度达到预定阈值,则判断为需要进行水平切分;
若所述切分库内表格的数据增长速度未达到预定阈值,则判断为不需要进行水平切分。
7.如权利要求5所述系统,其特征在于,对所述多个切分库进行水平切分包括:
依据业务逻辑和表间关系,将每个切分库再切分为多个小切分库。
8.如权利要求7所述系统,其特征在于,所述水平切分后还包括:
根据所述多个小切分库中的用户编号信息进行哈希分库分表处理。
9.一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其特征在于,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:
所述操作包括如权利要求1-4中任一项所述数据分库处理方法所包含的步骤。
10.一种数据分库处理装置,其特征在于,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如权利要求1-4中任一项所述的数据分库处理方法所包含的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811026260.0A CN109376151A (zh) | 2018-09-04 | 2018-09-04 | 数据分库处理方法、系统、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811026260.0A CN109376151A (zh) | 2018-09-04 | 2018-09-04 | 数据分库处理方法、系统、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109376151A true CN109376151A (zh) | 2019-02-22 |
Family
ID=65405141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811026260.0A Pending CN109376151A (zh) | 2018-09-04 | 2018-09-04 | 数据分库处理方法、系统、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109376151A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110706051A (zh) * | 2019-07-03 | 2020-01-17 | 威富通科技有限公司 | 一种订单数据聚合方法、装置及服务器 |
CN110795419A (zh) * | 2019-10-08 | 2020-02-14 | 中国建设银行股份有限公司 | 动态分库路由的方法和装置 |
CN111241102A (zh) * | 2020-01-13 | 2020-06-05 | 中科驭数(北京)科技有限公司 | 数据存储方法、数据检索方法、数据库访问方法及装置 |
CN112765169A (zh) * | 2021-01-11 | 2021-05-07 | 北京众享比特科技有限公司 | 数据处理方法、装置、设备及存储介质 |
-
2018
- 2018-09-04 CN CN201811026260.0A patent/CN109376151A/zh active Pending
Non-Patent Citations (2)
Title |
---|
ANDYZHAOJIANHUI: "订单分库分表实践总结", 《HTTPS://BLOG.CSDN.NET/ANDYZHAOJIANHUI/ARTICLE/DETAILS/76223295?OPS_REQUEST_MISC=%257B%2522REQUEST%255FID%2522%253A%2522162316028416780265423272%2522%252C%2522SCM%2522%253A%252220140713.130102334》 * |
HONGYITONG.GITHUB.IO: "数据库Sharding的基本思想和切分策略(分库分表)", 《HTTP://HONGYITONG.GITHUB.IO/2016/12/16/%E5%88%86%E8%A1%A8%E5%88%86%E5%BA%93%EF%BC%88%E6%95%B0%E6%8D%AE%E5%BA%93%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%EF%BC%89%20/》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110706051A (zh) * | 2019-07-03 | 2020-01-17 | 威富通科技有限公司 | 一种订单数据聚合方法、装置及服务器 |
CN110795419A (zh) * | 2019-10-08 | 2020-02-14 | 中国建设银行股份有限公司 | 动态分库路由的方法和装置 |
CN111241102A (zh) * | 2020-01-13 | 2020-06-05 | 中科驭数(北京)科技有限公司 | 数据存储方法、数据检索方法、数据库访问方法及装置 |
CN111241102B (zh) * | 2020-01-13 | 2021-02-09 | 中科驭数(北京)科技有限公司 | 数据存储方法、数据检索方法、数据库访问方法及装置 |
CN112765169A (zh) * | 2021-01-11 | 2021-05-07 | 北京众享比特科技有限公司 | 数据处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109376151A (zh) | 数据分库处理方法、系统、装置和存储介质 | |
Dai et al. | Cloud infrastructure resource allocation for big data applications | |
Ashish et al. | Parallel bat algorithm-based clustering using mapreduce | |
CN103502942B (zh) | 虚拟机管理设备和虚拟机管理方法 | |
US10606649B2 (en) | Workload identification and display of workload-specific metrics | |
CN103595780B (zh) | 基于消重的云计算资源调度方法 | |
CN104216784B (zh) | 热点均衡控制方法及相关装置 | |
Patwary et al. | Window-based streaming graph partitioning algorithm | |
JP2018190450A (ja) | 基数推定を介した結合パスの効率的な判定 | |
JP2007095069A (ja) | 分散カーネル・サポート・ベクトル・マシン | |
Imene et al. | A third generation genetic algorithm NSGAIII for task scheduling in cloud computing | |
CN106250233A (zh) | MapReduce性能优化系统及优化方法 | |
US9002824B1 (en) | Query plan management in shared distributed data stores | |
Ms et al. | Performance evaluation of distributed association rule mining algorithms | |
Li et al. | A task allocation method for stream processing with recovery latency constraint | |
Gu et al. | Performance analysis and optimization of distributed workflows in heterogeneous network environments | |
US20210304025A1 (en) | Dynamic quality of service management for deep learning training communication | |
Mansouri | An effective weighted data replication strategy for data grid | |
Han et al. | Distributed deep learning platform for pedestrian detection on IT convergence environment | |
CN111290855B (zh) | 分布式环境中多gpu服务器的gpu卡管理方法、系统及存储介质 | |
Zhang et al. | Learning driven parallelization for large-scale video workload in hybrid CPU-GPU cluster | |
CN104951369B (zh) | 消除热点资源竞争的方法和装置 | |
Xiong et al. | QoS preference-aware replica selection strategy using MapReduce-based PGA in data grids | |
Potuzak | Distributed/parallel genetic algorithm for road traffic network division using step parallelization | |
Yamane et al. | Parallel partition sort for database machines |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190222 |