CN113760889B - 数据处理方法、装置、计算机系统和计算机可读存储介质 - Google Patents
数据处理方法、装置、计算机系统和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113760889B CN113760889B CN202011242600.0A CN202011242600A CN113760889B CN 113760889 B CN113760889 B CN 113760889B CN 202011242600 A CN202011242600 A CN 202011242600A CN 113760889 B CN113760889 B CN 113760889B
- Authority
- CN
- China
- Prior art keywords
- database
- determining
- weight
- databases
- interval
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 13
- 238000004590 computer program Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000002360 preparation method Methods 0.000 description 5
- 238000002372 labelling Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
-
- 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
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据处理方法、装置、计算机系统和计算机可读存储介质。该方法包括:获取针对多个数据库中每个数据库的分配权重;根据每个数据库的分配权重确定分配至每个数据库的目标数据;以及将目标数据分配至与该目标数据对应的数据库中,以实现数据处理。
Description
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种数据处理方法、装置、计算机系统和计算机可读存储介质。
背景技术
随着通信及计算机技术的快速发展,相关的业务量也快速增长,单个数据库早已不能满足迅猛增长的业务数据量的存储需求。有鉴于此,目前最常用的解决办法就是把数据分散到N个数据库来存储,从而避免达到单个数据库承载数据的瓶颈。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:现有技术中采用平均分配的策略将数据存储到多个数据库中,该策略并未考虑到每个数据库的实际配置和处理能力,导致数据分配并不合理。
发明内容
有鉴于此,本公开提供了一种数据处理方法、装置、计算机系统和计算机可读存储介质。
本公开的一个方面提供了一种数据处理方法,包括:获取针对多个数据库中每个所述数据库的分配权重;根据每个所述数据库的分配权重确定分配至每个所述数据库的目标数据;以及将所述目标数据分配至与所述目标数据对应的所述数据库中,以实现数据处理。
根据本公开的实施例,所述获取针对多个数据库中每个所述数据库的分配权重包括:针对每个所述数据库,获取所述数据库的软硬件配置信息,其中,不同的所述软硬件配置信息对应不同的权重系数;根据所述软硬件配置信息的权重系数确定所述数据库的权重值;以及根据所述权重值确定所述数据库的分配权重。
根据本公开的实施例,根据每个所述数据库的分配权重确定分配至每个所述数据库的目标数据包括:根据每个所述数据库的分配权重确定每个所述数据库的加权区间;计算待处理数据字段的哈希值;计算所述哈希值相对于所述多个数据库的分配权重之和的取模结果;以及根据所述取模结果和所述加权区间的关系确定分配至每个所述数据库的目标数据。
根据本公开的实施例,所述多个数据库至少包括第一数据库和第二数据库,其分配权重分别为第一权重和第二权重,根据每个所述数据库的分配权重确定每个所述数据库的加权区间包括:根据所述第一权重的值确定所述第一数据库的第一区间范围;将所述第一数据库的第一区间开始值确定为1;根据所述第一区间范围和所述第一区间开始值确定所述第一数据库的第一区间结束值;以及根据所述第一区间开始值和所述第一区间结束值确定所述第一数据库的加权区间。
根据本公开的实施例,根据每个所述数据库的分配权重确定每个所述数据库的加权区间还包括:根据所述第二权重的值确定所述第二数据库的第二区间范围;根据所述第一数据库的第一区间结束值确定所述第二数据库的第二区间开始值;根据所述第二区间范围和所述第二区间开始值确定所述第二数据库的第二区间结束值;以及根据所述第二区间开始值和所述第二区间结束值确定所述第二数据库的加权区间。
根据本公开的实施例,根据所述取模结果和所述加权区间的关系确定分配至每个所述数据库的目标数据包括:在所述取模结果属于所述第一数据库的加权区间的情况下,将所述待处理数据字段作为分配至所述第一数据库的目标数据;以及在所述取模结果属于所述第二数据库的加权区间的情况下,将所述待处理数据字段作为分配至所述第二数据库的目标数据。
根据本公开的实施例,根据每个所述数据库的分配权重确定分配至每个所述数据库的目标数据还包括:根据每个所述数据库的分配权重相对于所述多个数据库的分配权重之和的百分比,确定分配至每个所述数据库的数据量;以及根据所述分配至每个所述数据库的数据量确定分配至每个所述数据库的目标数据。
根据本公开的实施例,所述数据处理方法还包括:在至少一个所述数据库的软硬件配置信息发生变化的情况下,更新软硬件配置信息发生变化的所述数据库的分配权重。
本公开的另一个方面提供了一种数据处理装置,包括:获取模块,用于获取针对多个数据库中每个所述数据库的分配权重;确定模块,用于根据每个所述数据库的分配权重确定分配至每个所述数据库的目标数据;以及分配模块,用于将所述目标数据分配至与所述目标数据对应的所述数据库中,以实现数据处理。
本公开的另一方面提供了一种计算机系统,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,通过采用了获取针对多个数据库中每个数据库的分配权重;根据每个数据库的分配权重确定分配至每个数据库的目标数据;以及将目标数据分配至与该目标数据对应的数据库中,以实现数据处理的技术手段,由于针对每个数据库设置了分配权重,并根据分配权重确定分配至每个数据库的目标数据,所以至少部分地克服了传统数据分配时采用的平均分配策略仅考虑数据库个数不考虑数据库实际处理能力而导致的数据分配不合理的技术问题,进而达到了将数据分配至多个不同性能的数据库中时可保证针对每个数据库的数据分配均合理的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的可以应用数据处理方法的示例性系统架构;
图2示意性示出了根据本公开实施例的数据处理方法的流程图;
图3示意性示出了根据本公开实施例的数据处理方法的哈希加权总体流程图;
图4示意性示出了根据本公开实施例的数据处理方法对应的数据结构的系统类图;
图5示意性示出了根据本公开实施例的数据处理方法的加权准备阶段的流程图;
图6示意性示出了根据本公开实施例的数据处理方法的哈希取模阶段的流程图;
图7示意性示出了根据本公开实施例的数据处理方法的数据源选择阶段的流程图;
图8示意性示出了根据本公开的实施例的数据处理装置的框图;以及
图9示意性示出了根据本公开实施例的适于实现上文描述的数据处理方法的计算机系统的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
为了应对业务增长带来的大量数据的存储需求,通常需要将数据分配至不同的数据库中进行存储。发明人在实现本公开构思的过程中发现,现有技术通常采用相对平均的数据分布方式,但在实际的环境中后台多个数据库的配置有可能不相同,也就是说这些数据库的处理能力不同,如果把数据平均分布到处理能力不同的数据库显然是不合理的。
本公开的实施例提供了一种数据处理方法、装置、计算机系统和计算机可读存储介质。该方法包括获取针对多个数据库中每个数据库的分配权重;根据每个数据库的分配权重确定分配至每个数据库的目标数据;以及将目标数据分配至与该目标数据对应的数据库中,以实现数据处理。
图1示意性示出了根据本公开实施例的可以应用数据处理方法的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和数据库服务器105、106、107。网络104用以在终端设备101、102、103和数据库服务器105、106、107之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
用户在终端设备101、102、103上的交互数据可以通过网络104存储至数据库服务器105、106、107中。终端设备101、102、103上可以安装有各种业务类应用软件。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
数据库服务器105、106、107可以是提供数据存储、访问或请求等各种服务的服务器,例如对用户利用终端设备101、102、103所请求的业务数据提供存储功能的后台管理数据库服务器。后台管理数据库服务器可以对接收到的数据信息进行存储,也可以将已有数据反馈给终端用户。
需要说明的是,本公开实施例所提供的数据处理方法一般可以由数据库服务器105、106、107执行。相应地,本公开实施例所提供的数据处理装置一般可以设置于数据库服务器105、106、107中。本公开实施例所提供的数据处理方法也可以由不同于数据库服务器105、106、107且能够与终端设备101、102、103和/或数据库服务器105、106、107通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据处理装置也可以设置于不同于数据库服务器105、106、107且能够与终端设备101、102、103和/或数据库服务器105、106、107通信的服务器或服务器集群中。或者,本公开实施例所提供的数据处理方法也可以由终端设备101、102、或103执行,或者也可以由不同于终端设备101、102、或103的其他终端设备执行。相应地,本公开实施例所提供的数据处理装置也可以设置于终端设备101、102、或103中,或设置于不同于终端设备101、102、或103的其他终端设备中。
例如,数据库的分配权重可以原本存储在终端设备101、102、或103中的任意一个(例如,终端设备101,但不限于此)之中,或者存储在外部存储设备上并可以导入到终端设备101中。然后,终端设备101可以在本地执行本公开实施例所提供的数据处理方法,或者将数据库的分配权重发送到其他终端设备、服务器、或服务器集群,并由接收该待处理图像的其他终端设备、服务器、或服务器集群来执行本公开实施例所提供的数据处理方法。
应该理解,图1中的终端设备、网络和数据库服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和数据库服务器。其中,数据库的性能也可以是多样化的。
图2示意性示出了根据本公开实施例的数据处理方法的流程图。
如图2所示,该方法包括操作S201~S203。
在操作S201,获取针对多个数据库中每个数据库的分配权重。
根据本公开的实施例,受限于单个数据库的存储容量,在一般的管理系统中均会设置多个数据库来实现大容量数据的存储。在实际应用中,多个数据库可能不完全相同,例如一些数据库存储能力强而读取能力差,另一些数据库存储能力差而读取能力强,以及不同的数据库存储容量及性能参数也可能存在差异等。为实现数据在该些不同数据库中的合理分配,针对每个数据库均设置有一分配权重。
在操作S202,根据每个数据库的分配权重确定分配至每个数据库的目标数据。
根据本公开的实施例,分配权重用以表示可分配至数据库的数据量或数据对象。目标数据例如可以是符合某一特征的数据,该特征一般为与分配权重相关的特征,或者可以是由分配权重引申出来的一些特征,例如加权区间等。目标数据例如还可以是具有一特定数据量的数据。
在操作S203,将目标数据分配至与该目标数据对应的数据库中,以实现数据处理。
根据本公开的实施例,通过分配权重确定目标数据与数据库的对应关系,并根据该对应关系将目标数据存储至目标数据库中,以完成对数据的处理。
通过本公开的上述实施例,在需要将数据分配存储至不同的数据库中时,由于不同的数据库的性能可能并不相同,因此在综合考虑所有需要被分配数据的数据库后,针对每个数据库设置了合适的分配权重,以使得根据分配权重实现数据在不同性能数据库中的合理分配,解决了传统的数据分配存储过程中,只考虑数据库个数而不考虑数据库性能,可能导致的数据读写不一致以及信息获取或加载不流畅等问题。
根据本公开的实施例,上述操作S201包括:针对每个数据库,获取数据库的软硬件配置信息,其中,不同的软硬件配置信息对应不同的权重系数;根据软硬件配置信息的权重系数确定数据库的权重值;以及根据权重值确定数据库的分配权重。
根据本公开的实施例,数据库的软硬件配置信息例如可以包括CPU、内存、硬盘等,针对每种类型的配置设置相应的权重系数,将属于同一数据库内的所有配置各自的权重系数通过直接相加或函数计算等方式计算得到该数据库的权重值,综合所有数据库的权重值和实际的数据分配存储策略确定每一个数据库的分配权重。
需要说明的是,在上述确定数据库的分配权重的过程中,可以不只是根据软硬件配置信息来确定,在某些具体实施例中,例如还可以结合数据库的实际处理能力、数据库的实际剩余存储空间等综合确定,或者还可以根据实际需求直接人为的设定,又或者是可以通过预设的映射关系进行确定,映射关系例如可以是权重值与分配权重之间的一对一或多对一的关系,通过该种关系可以根据权重值确定唯一的分配权重。
通过本公开的上述实施例,由于将数据库的实际性能以分配权重的方式直观展示,可以根据分配权重明确分配至每一个数据库的数据量,从而在实现数据的合理分配的同时还实现对每一个数据库的性能优势的合理利用。
根据本公开的实施例,上述操作S202包括:根据每个数据库的分配权重确定每个数据库的加权区间;计算待处理数据字段的哈希值;计算哈希值相对于多个数据库的分配权重之和的取模结果;以及根据取模结果和加权区间的关系确定分配至每个数据库的目标数据。
根据本公开的实施例,上述根据每个数据库的分配权重确定每个数据库的加权区间的过程中,该数据库至少包括第一数据库和第二数据库,其分配权重分别为第一权重和第二权重。
针对第一数据库,根据第一数据库的分配权重确定第一数据库的加权区间包括:根据第一权重的值确定第一数据库的第一区间范围;将第一数据库的第一区间开始值确定为1;根据第一区间范围和第一区间开始值确定第一数据库的第一区间结束值;以及根据第一区间开始值和第一区间结束值确定第一数据库的加权区间。
针对第二数据库,根据第二数据库的分配权重确定第二数据库的加权区间包括:根据第二权重的值确定第二数据库的第二区间范围;根据第一数据库的第一区间结束值确定第二数据库的第二区间开始值;根据第二区间范围和第二区间开始值确定第二数据库的第二区间结束值;以及根据第二区间开始值和第二区间结束值确定第二数据库的加权区间。
需要说明的是,上述根据第一区间结束值确定第二区间开始值一般为将第一区间结束值加一的结果作为第二区间开始值。
需要说明的是,上述数据库的个数不仅限于以上两个,在实际应用中,一般包括更多个性能或类型等存在差异的数据库。
根据本公开的实施例,在上述数据库存在多个的情况下,根据每个数据库的分配权重确定每个数据库的加权区间包括:对多个数据库进行排序,排序方式可以是随机排序,也可以是按照一定规则进行排序;将排序结果处于第一位的数据库按上述确定第一数据库的加权区间的方式确定该第一位的数据库的加权区间;将排序结果处于第二位及以后的数据库按上述确定第二数据库的加权区间的方式依次确定该第二位及以后的每个数据库的加权区间。通过此种方式即可完成全部数据库中每个数据库的加权区间的确定。
根据本公开的实施例,上述根据取模结果和加权区间的关系确定分配至每个数据库的目标数据的过程包括:在取模结果属于第一数据库的加权区间的情况下,将待处理数据字段作为分配至第一数据库的目标数据;以及在取模结果属于第二数据库的加权区间的情况下,将待处理数据字段作为分配至第二数据库的目标数据。
需要说明的是,在数据库存在多个的情况下,均是根据取模结果和加权区间的一一对应关系确定目标数据要被分配到的数据库。
根据本公开的实施例,上述操作S202还包括:根据每个数据库的分配权重相对于多个数据库的分配权重之和的百分比,确定分配至每个数据库的数据量;以及根据分配至每个数据库的数据量确定分配至每个数据库的目标数据。
通过本公开的上述实施例,由于将目标数据以哈希值的形式表现,将具有分配权重的数据库以加权区间的形式表现,并通过对哈希值与数据库的分配权重进行取模来确定哈希值与加权区间的对应关系,从而确定该哈希值对应的目标数据与相应的加权区间对应的数据库的对应关系,实现根据分配权重将目标数据进行合理分配。
根据本公开的实施例,上述的数据处理方法还包括:在至少一个数据库的软硬件配置信息发生变化的情况下,更新软硬件配置信息发生变化的数据库的分配权重。
通过本公开的上述实施例,可以在例如数据库维护阶段或业务调整阶段更新系统中每一个数据库的分配权重,从而可以在某个数据库偶遇突发状况(例如硬件损坏或软件错误等)的情况下可以及时调整分配至每个数据库的目标数据,以避免数据存储出现错误。
下面参考图3~图7,结合具体实施例对上述的数据处理方法做进一步详细说明。
图3示意性示出了根据本公开实施例的数据处理方法的哈希加权总体流程图。
如图3所示,该数据处理方法的整体流程包括加权准备、哈希取模和数据源(即数据库)选择三个阶段。其中,在加权准备阶段完成数据库加权标注和数据库加权区间计算的过程,在哈希取模阶段完成业务字段hash计算和hash值对总权重取模的过程,在数据源选择阶段完成数据库的选择过程。
通过本公开的上述实施例,采用哈希加权的方式,根据后台数据库的处理能力来分布业务数据,从而达到更合理的数据分布结果。
图4示意性示出了根据本公开实施例的数据处理方法对应的数据结构的系统类图。
如图4所示,该数据处理方法可以通过计算机程序来实现,实现该数据处理方法的程序中可以设计三个类WeightDataSource、Range和WeightDataSourceHolder。WeightDataSource描述附加权重的数据源(即具有分配权重的多个数据库),与其相关的参数包括dataSource(数据库)、weight(每个数据库的分配权重)和range(每个数据库的加权区间),其中,参数range的值可以用Range表示。Range描述每个数据源的分片(即加权区间),在Range下还包括参数begin和end,用于表示每个数据库的加权区间的开始值和结束值。WeightDataSourceHolder作为封装WeightDataSource的列表供外部使用,与其相关的参数包括weightDataSourceList(数据源列表)、totalWeight(总权重值),其下的getDataSource()、calcTotalWeight()和buildRange()均代表与实现该方法相关的函数。其中,1∶1表示数据源和加权区间以一一对应的方式存在,*:1表示数据源与封装函数以多对一的方式存在。
图5示意性示出了根据本公开实施例的数据处理方法的加权准备阶段的流程图。
根据本公开的实施例,加权准备是数据处理方法的前期准备阶段,其又分为两个阶段:数据库加权标注和数据库加权区间计算。其中,数据库加权标注阶段首先需要根据数据库的处理能力(比如CPU、内存、硬盘)对数据库的数据源进行加权标注。数据库加权区间计算阶段用于计算出每个数据源负责的分片范围,该加权区间计算通过WeightDataSourceHolder.buildRange()方法实现。
结合参见图4和图5所示,该过程用到了WeightDataSource、Range和WeightDataSourceHolder三个类,该过程包括操作S501~S504。
在操作S501,初始化WeightDataSource实例列表。
根据本公开的实施例,在该操作中确定需要被分配数据的所有数据库,并将其存为一个列表以供后续调用。
在操作S502,创建Range(加权区间)实例。
在操作S503,设置Range实例的开始值/结束值和针对dataSource(数据库)的weight(分配权重)。
在操作S504,设置Range实例到WeightDataSource的对应关系。
需要说明的是,针对WeightDataSource实例列表中的每一个数据库,均需完成上述操作S502~S504的过程,以最终确定每个数据库的加权区间范围。
图6示意性示出了根据本公开实施例的数据处理方法的哈希取模阶段的流程图。
根据本公开的实施例,在哈希取模阶段,要把每个业务字段(即目标数据)的murmur(哈希值)对总权重值取模。其中,murmur哈希是一种非加密散列函数,散列结果更分散,总权重值是累加权重数据源集合的所有权重。
结合参见图4和图6所示,该过程用到了WeightDataSource和WeightDataSourceHolder两个类,该过程包括操作S601~S604。
在操作S601,计算业务字段的murmur值。
在操作S602,获取WeightDataSource的权重。
在操作S603,累加WeightDataSource的总权重值。
在操作S604,哈希值对总权重值取模。
需要说明的是,针对WeightDataSource实例列表中的每一个数据库,均需完成上述操作S602~S604的过程,以便可以确定每个业务字段对应的哈希值的取模结果。
图7示意性示出了根据本公开实施例的数据处理方法的数据源选择阶段的流程图。
根据本公开的实施例,在数据源选择阶段,根据图6中得到的取模结果,在数据源中遍历,找到该取模结果对应的数据源。
结合参见图4和图7所示,该过程用到了WeightDataSource、Range和WeightDataSourceHolder三个类,该过程包括操作S701~S704。
在操作S701,获取哈希取模结果。
在操作S702,获取Range实例。
在操作S703,判断哈希值是否在Range区间。
在操作S704,返回WeightDataSource实例,需要说明的是,该操作仅在操作S703的判断结果为是的情况下执行。
需要说明的是,针对WeightDataSource实例列表中的每一个数据库,均需完成上述操作S702~S704的过程,以便可以确定每个业务字段对应的数据源选择结果。
通过本公开的上述实施例,由于对数据库进行加权标注,并使用哈希加权的方式,可以根据数据源的权重来把数据分布到不同的数据库中,从而应对后台数据库处理能力不同的场景。
图8示意性示出了根据本公开的实施例的数据处理装置的框图。
如图8所示,数据处理装置800包括获取模块810、确定模块820和分配模块830。
获取模块810,用于获取针对多个数据库中每个数据库的分配权重。
确定模块820,用于根据每个数据库的分配权重确定分配至每个数据库的目标数据。
分配模块830,用于将目标数据分配至与目标数据对应的数据库中,以实现数据处理。
根据本公开的实施例,上述获取模块包括获取子模块、第一确定子模块和第二确定子模块。
获取子模块,用于针对每个数据库,获取数据库的软硬件配置信息,其中,不同的软硬件配置信息对应不同的权重系数。
第一确定子模块,用于根据软硬件配置信息的权重系数确定数据库的权重值。
第二确定子模块,用于根据权重值确定数据库的分配权重。
根据本公开的实施例,上述确定模块包括第三确定子模块、第一计算子模块、第二计算子模块和第四确定子模块。
第三确定子模块,用于根据每个数据库的分配权重确定每个数据库的加权区间。
第一计算子模块,用于计算待处理数据字段的哈希值。
第二计算子模块,用于计算哈希值相对于多个数据库的分配权重之和的取模结果。
第四确定子模块,用于根据取模结果和加权区间的关系确定分配至每个数据库的目标数据。
根据本公开的实施例,上述多个数据库至少包括第一数据库和第二数据库,其分配权重分别为第一权重和第二权重,上述第三确定子模块包括第一确定单元、第二确定单元、第三确定单元和第四确定单元。
第一确定单元,用于根据第一权重的值确定第一数据库的第一区间范围。
第二确定单元,用于将第一数据库的第一区间开始值确定为1。
第三确定单元,用于根据第一区间范围和第一区间开始值确定第一数据库的第一区间结束值。
第四确定单元,用于根据第一区间开始值和第一区间结束值确定第一数据库的加权区间。
根据本公开的实施例,上述第三确定子模块还包括第五确定单元、第六确定单元、第七确定单元和第八确定单元。
第五确定单元,用于根据第二权重的值确定第二数据库的第二区间范围。
第六确定单元,用于根据第一数据库的第一区间结束值确定第二数据库的第二区间开始值。
第七确定单元,用于根据第二区间范围和第二区间开始值确定第二数据库的第二区间结束值。
第八确定单元,用于根据第二区间开始值和第二区间结束值确定第二数据库的加权区间。
根据本公开的实施例,上述第四确定子模块包括第一分配单元和第二分配单元。
第一分配单元,用于在取模结果属于第一数据库的加权区间的情况下,将待处理数据字段作为分配至第一数据库的目标数据。
第二分配单元,用于在取模结果属于第二数据库的加权区间的情况下,将待处理数据字段作为分配至第二数据库的目标数据。
根据本公开的实施例,上述确定模块还包括第五确定子模块和第六确定子模块。
第五确定子模块,用于根据每个数据库的分配权重相对于多个数据库的分配权重之和的百分比,确定分配至每个数据库的数据量。
第六确定子模块,用于根据分配至每个数据库的数据量确定分配至每个数据库的目标数据。
根据本公开的实施例,上述数据处理装置还包括更新模块。
更新模块,用于在至少一个数据库的软硬件配置信息发生变化的情况下,更新软硬件配置信息发生变化的数据库的分配权重。
根据本公开的实施例的模块、子模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块810、确定模块820和分配模块830中的任意多个可以合并在一个模块/子模块/单元中实现,或者其中的任意一个模块/子模块/单元可以被拆分成多个模块/子模块/单元。或者,这些模块/子模块/单元中的一个或多个模块/子模块/单元的至少部分功能可以与其他模块/子模块/单元的至少部分功能相结合,并在一个模块/子模块/单元中实现。根据本公开的实施例,获取模块810、确定模块820和分配模块830中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块810、确定模块820和分配模块830中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中数据处理装置部分与本公开的实施例中数据处理方法部分是相对应的,数据处理装置部分的描述具体参考数据处理方法部分,在此不再赘述。
图9示意性示出了根据本公开实施例的适于实现上文描述的数据处理方法的计算机系统的框图。图9示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,根据本公开实施例的计算机系统900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有系统900操作所需的各种程序和数据。处理器901、ROM 902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。系统900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (8)
1.一种数据处理方法,包括:
获取针对多个数据库中每个所述数据库的分配权重,包括:
针对每个所述数据库,获取所述数据库的软硬件配置信息,其中,不同的所述软硬件配置信息对应不同的权重系数;
根据所述软硬件配置信息的权重系数确定所述数据库的权重值;以及
根据所述权重值确定所述数据库的分配权重,其中,所述多个数据库至少包括第一数据库,其分配权重为第一权重;
根据每个所述数据库的分配权重确定分配至每个所述数据库的目标数据,包括:
根据每个所述数据库的分配权重确定每个所述数据库的加权区间包括:根据所述第一权重的值确定所述第一数据库的第一区间范围;将所述第一数据库的第一区间开始值确定为1;根据所述第一区间范围和所述第一区间开始值确定所述第一数据库的第一区间结束值;以及根据所述第一区间开始值和所述第一区间结束值确定所述第一数据库的加权区间;
计算待处理数据字段的哈希值;
计算所述哈希值相对于所述多个数据库的分配权重之和的取模结果;以及
根据所述取模结果和所述加权区间的关系确定分配至每个所述数据库的目标数据;以及
将所述目标数据分配至与所述目标数据对应的所述数据库中,以实现数据处理。
2.根据权利要求1所述的方法,其中,所述多个数据库至少还包括第二数据库,其分配权重为第二权重,根据每个所述数据库的分配权重确定每个所述数据库的加权区间还包括:
根据所述第二权重的值确定所述第二数据库的第二区间范围;
根据所述第一数据库的第一区间结束值确定所述第二数据库的第二区间开始值;
根据所述第二区间范围和所述第二区间开始值确定所述第二数据库的第二区间结束值;以及
根据所述第二区间开始值和所述第二区间结束值确定所述第二数据库的加权区间。
3.根据权利要求2所述的方法,其中,根据所述取模结果和所述加权区间的关系确定分配至每个所述数据库的目标数据包括:
在所述取模结果属于所述第一数据库的加权区间的情况下,将所述待处理数据字段作为分配至所述第一数据库的目标数据;以及
在所述取模结果属于所述第二数据库的加权区间的情况下,将所述待处理数据字段作为分配至所述第二数据库的目标数据。
4.根据权利要求1所述的方法,其中,根据每个所述数据库的分配权重确定分配至每个所述数据库的目标数据还包括:
根据每个所述数据库的分配权重相对于所述多个数据库的分配权重之和的百分比,确定分配至每个所述数据库的数据量;以及
根据所述分配至每个所述数据库的数据量确定分配至每个所述数据库的目标数据。
5.根据权利要求1所述的方法,还包括:
在至少一个所述数据库的软硬件配置信息发生变化的情况下,更新软硬件配置信息发生变化的所述数据库的分配权重。
6.一种数据处理装置,包括:
获取模块,用于获取针对多个数据库中每个所述数据库的分配权重,所述获取模块包括:
获取子模块,用于针对每个所述数据库,获取所述数据库的软硬件配置信息,其中,不同的所述软硬件配置信息对应不同的权重系数;
第一确定子模块,用于根据所述软硬件配置信息的权重系数确定所述数据库的权重值;
第二确定子模块,用于根据所述权重值确定所述数据库的分配权重,其中,所述多个数据库至少包括第一数据库,其分配权重为第一权重;
确定模块,用于根据每个所述数据库的分配权重确定分配至每个所述数据库的目标数据,所述确定模块包括:
第三确定子模块,用于根据每个所述数据库的分配权重确定每个所述数据库的加权区间,所述第三确定子模块包括:第一确定单元,用于根据所述第一权重的值确定所述第一数据库的第一区间范围;第二确定单元,用于将所述第一数据库的第一区间开始值确定为1;第三确定单元,用于根据所述第一区间范围和所述第一区间开始值确定所述第一数据库的第一区间结束值;第四确定单元,用于根据所述第一区间开始值和所述第一区间结束值确定所述第一数据库的加权区间;
第一计算子模块,用于计算待处理数据字段的哈希值;
第二计算子模块,用于计算所述哈希值相对于所述多个数据库的分配权重之和的取模结果;
第四确定子模块,用于根据所述取模结果和所述加权区间的关系确定分配至每个所述数据库的目标数据;以及
分配模块,用于将所述目标数据分配至与所述目标数据对应的所述数据库中,以实现数据处理。
7.一种计算机系统,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至5中任一项所述的方法。
8.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011242600.0A CN113760889B (zh) | 2020-11-09 | 2020-11-09 | 数据处理方法、装置、计算机系统和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011242600.0A CN113760889B (zh) | 2020-11-09 | 2020-11-09 | 数据处理方法、装置、计算机系统和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113760889A CN113760889A (zh) | 2021-12-07 |
CN113760889B true CN113760889B (zh) | 2024-05-17 |
Family
ID=78786025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011242600.0A Active CN113760889B (zh) | 2020-11-09 | 2020-11-09 | 数据处理方法、装置、计算机系统和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760889B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416879A (zh) * | 2022-01-21 | 2022-04-29 | 中国农业银行股份有限公司 | 一种数据库的访问方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108384A (zh) * | 2016-11-25 | 2018-06-01 | 中国移动通信有限公司研究院 | 一种数据存储方法及装置 |
CN109189785A (zh) * | 2018-08-10 | 2019-01-11 | 平安科技(深圳)有限公司 | 数据存储方法、装置、计算机设备及存储介质 |
CN111444184A (zh) * | 2020-03-25 | 2020-07-24 | 北京奇艺世纪科技有限公司 | 数据存储方法、存储调度服务器、电子设备及存储介质 |
CN111723078A (zh) * | 2020-06-24 | 2020-09-29 | 苏州松鼠山人工智能科技有限公司 | 一种数据存储方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875259B2 (en) * | 2014-07-22 | 2018-01-23 | Oracle International Corporation | Distribution of an object in volatile memory across a multi-node cluster |
-
2020
- 2020-11-09 CN CN202011242600.0A patent/CN113760889B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108384A (zh) * | 2016-11-25 | 2018-06-01 | 中国移动通信有限公司研究院 | 一种数据存储方法及装置 |
CN109189785A (zh) * | 2018-08-10 | 2019-01-11 | 平安科技(深圳)有限公司 | 数据存储方法、装置、计算机设备及存储介质 |
CN111444184A (zh) * | 2020-03-25 | 2020-07-24 | 北京奇艺世纪科技有限公司 | 数据存储方法、存储调度服务器、电子设备及存储介质 |
CN111723078A (zh) * | 2020-06-24 | 2020-09-29 | 苏州松鼠山人工智能科技有限公司 | 一种数据存储方法和装置 |
Non-Patent Citations (3)
Title |
---|
Penalized Graph Partitioning based Allocation Strategy for Database-as-a-Service Systems;Kiefer, Tim等;《 2016 3RD IEEE/ACM INTERNATIONAL CONFERENCE ON BIG DATA COMPUTING, APPLICATIONS AND TECHNOLOGIES (BDCAT)》;20170918;全文 * |
云环境下高性能数据库集群关键技术研究;丁敏;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20180215(第2期);全文 * |
基于Markov链模型的集群式数据库数据均衡算法;崔维;丁玲;孙丽波;;湘潭大学自然科学学报;20170915(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113760889A (zh) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7127010B2 (ja) | リソースの割り当て方法、装置、電子設備、コンピュータ可読媒体およびコンピュータプログラム | |
US8442955B2 (en) | Virtual machine image co-migration | |
US11036737B2 (en) | Partitioned bloom filter merge for massively parallel processing clustered data management | |
US8930731B2 (en) | Reducing power consumption in data centers having nodes for hosting virtual machines | |
US9489231B2 (en) | Selecting provisioning targets for new virtual machine instances | |
US10320701B1 (en) | Aggregating resource requests | |
US20150133214A1 (en) | Video encoding based on areas of interest | |
CN111917587B (zh) | 利用服务系统进行网络服务管理的方法及服务系统 | |
US20160173620A1 (en) | Time-based data placement in a distributed storage system | |
US11023825B2 (en) | Platform as a service cloud server and machine learning data processing method thereof | |
WO2020263414A1 (en) | Dynamic allocation of computing resources | |
CN113760889B (zh) | 数据处理方法、装置、计算机系统和计算机可读存储介质 | |
CN105607955A (zh) | 一种计算任务分配的方法及装置 | |
US12093749B2 (en) | Load balancing of on-premise infrastructure resource controllers | |
CN114338694B (zh) | 一站式云数据中心服务器调度方法及系统 | |
CN109862089A (zh) | 数据处理方法、装置、系统、计算机可读存储介质 | |
US10191935B2 (en) | Database identifier generation in transaction processing systems | |
CN114741029A (zh) | 应用于去重存储系统的数据分配方法及相关设备 | |
WO2021174515A1 (en) | Systems and methods for data storage in the expansion of object-based storage systems | |
CN112491066A (zh) | 负载均衡方法、装置、系统、目标负载均衡设备及介质 | |
CN110287004A (zh) | 基于docker容器技术的基础环境镜像预热方法及装置 | |
US20210141538A1 (en) | Storage management apparatus, storage management method, and storage management program | |
US20240036935A1 (en) | Lcs sdxi resource ownership system | |
TW202201225A (zh) | 雲服務資源處理方法、裝置、電腦設備及儲存介質 | |
CN113900823A (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 |