CN109033292A - 一种数据库分布式缓存系统及方法 - Google Patents
一种数据库分布式缓存系统及方法 Download PDFInfo
- Publication number
- CN109033292A CN109033292A CN201810771406.8A CN201810771406A CN109033292A CN 109033292 A CN109033292 A CN 109033292A CN 201810771406 A CN201810771406 A CN 201810771406A CN 109033292 A CN109033292 A CN 109033292A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- caching
- server
- distributed
- 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
- 238000000034 method Methods 0.000 title claims abstract description 25
- 239000000872 buffer Substances 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 13
- 230000002688 persistence Effects 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 206010061876 Obstruction Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种数据库分布式缓存系统及方法,包括以下步骤:步骤1:预先取出可能会被访问的数据记录,对数据进行预处理。步骤2:通过算法生成主键key,用于定位此数据的位置。步骤3:根据主键key算出需要存储的服务器地址。步骤4:将数据按照key/value的形式进行分布式存储。步骤5:读取数据时,先遍历缓存中的数据,如可获得结果,则请求成功。步骤6:如无法获得所需数据,则通过数据库访问获得数据,并将结果按照上述方法存入缓存系统中,同时将此操作涉及的相关数据表按上述步骤存入缓存系统。本申请有效加快响应速度,提升使用体验,并且减少了硬盘I/O的次数,提升数据库稳定性,使系统更加可靠;提高缓存的利用率和访问速度,减小单机阻塞风险。
Description
技术领域
本发明涉及一种数据库分布式缓存系统及方法,属于互联网应用技术领域。
背景技术
随着互联网技术的不断发展,电商、医疗、农业等领域渐渐采用互联网技术为人们提供可靠、便捷的服务。关系型数据库作为这些服务的基础设施,起着至关重要的作用。然而、传统的数据库服务承担了太多的任务,包括存取业务数据及其它需要持久化的业务无关数据。当上层服务的规模逐渐扩大时,越来越多的数据访问请求让底层数据库服务不堪重负。通常关系型数据库都采用硬盘作为数据存储的介质,低速率的硬盘I/O访问更是带来了过高的响应延迟。因此关系型数据库在海量数据、高并发访问下面临着诸多限制。
内存是一种高速的存储介质、其读写速率远远高于硬盘。因此将内存作为关系型数据库的缓存,不仅可以有效减轻数据库服务器的访问压力,提高服务的稳定性,而且可以大大加快访问请求的响应速度。然而,单机的硬件性能有限,随着缓存数据量的快速增长,达到上亿甚至数十亿时,查找速度将无法满足需求。因此在此基础上,需要设计一种分布式架构的缓存方案。
发明内容
本申请的目的在于:针对现有技术及存在的缺陷,提出一种数据库分布式缓存系统及方法,能够在庞大数据量情况下提供高响应速率的访问处理。
本申请提出一种数据库分布式缓存方法,该方法包括以下步骤:
步骤1:预先取出数据库中可能会被访问的数据记录,按照预定义的缓存存储结构对数据进行处理;
步骤2:通过一定算法为处理好的数据生成一条主键key,用于唯一定位此数据在缓存中的位置;
步骤3:根据上述的主键key计算出分布式缓存服务器系统中需要存储的服务器地址id;
步骤4:将数据按照key/value的形式存入此id的服务器进行分布式存储;
步骤5:业务需要读取数据时,先直接遍历缓存中的数据,如果可以获得结果,则请求成功;
步骤6:如果缓存中无法获得所需数据,则通过数据库访问获得数据,并将结果按照上述方法存入缓存系统中,并且将此操作涉及的相关数据表按照上述步骤存入缓存系统,方便后续的访问请求处理。
进一步地,步骤1中,从数据库中读取的数据包括数据库名称、数据表名称、数据表中属性名称、数据库类型值和对应的记录值。
进一步地,步骤1中,处理过程中按照实际业务需求,可以将原数据中冗余的数据进行剔除,另外也可以新增需要的数据;处理后的数据至少包括属性名称和对应值组成的键/值对,以及自定义的缓存过期时间。
进一步地,步骤3中,所述主键key经过hash计算得到的哈希值与分布式缓存服务器的总数量进行求模,获得缓存服务器地址id。
一种数据库分布式缓存系统,包括数据服务模块、缓存管理模块、缓存存储模块和数据库模块;
数据服务模块:其用于解析上层请求,判断其中的数据访问请求,按照实际需要选择缓存或者数据库来进行处理;
缓存存储模块:其用于分布式地存储、读取缓存数据;
数据库模块:其用于持久化地存储业务相关数据,为缓存管理模块中的读取单元提供数据源;
缓存管理模块:其用于缓存数据读取、存储的管理以及缓存存储服务器的维护管理。
进一步地,所述缓存管理模块包括:
读取单元:其用于执行数据库结构化查询语言sql,从数据库中读取相关数据;
数据预处理单元:其用于执行服务端处理语言,对从读取单元接受到的数据进行预处理,剔除其中冗余的数据并且新增需要的数据;
写入单元:其用于执行服务端处理语言,对数据处理单元返回的结果进行写入分布式缓存系统的操作;
缓存服务器管理单元:其用于对写入单元的待写入数据按照算法分配缓存存储服务器,所述缓存存储服务器位于所述缓存存储模块,并且管理缓存存储服务器在分布式缓存系统中的添加和删除。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1. 采用内存介质作为业务数据服务直接交互的对象,具备高速率的读写特性,有效加快了访问请求的响应速度,提升了用户的使用体验。并且大大减少了硬盘I/O的次数,提升了底层关系型数据库的稳定性,使得整个系统更加可靠;
2. 采用分布式架构设计了缓存系统,将缓存数据存储在不同的缓存存储服务器中,提高了缓存的利用率和访问速度,减小了业务规模增长带来的单机阻塞风险。
附图说明
图1为本申请实施例提供的系统结构示意图。
图2为本申请实施例提供的方法流程示意图。
具体实施方式
下面结合说明书附图对本发明的技术方案做进一步的详细说明。
本申请提出一种数据库分布式缓存方法,该方法包括以下步骤。
步骤1:预先取出数据库中可能会被访问的数据记录,按照预定义的缓存存储结构对数据进行处理。从数据库中读取的数据包括数据库名称、数据表名称、数据表中属性名称、数据库类型值和对应的记录值。处理过程中按照实际业务需求,可以将原数据中冗余的数据进行剔除,另外也可以新增需要的数据;处理后的数据至少包括属性名称和对应值组成的键/值对,以及自定义的缓存过期时间。
步骤2:通过一定算法为处理好的数据生成一条主键key,用于唯一定位此数据在缓存中的位置。
步骤3:根据上述的的主键key计算出分布式缓存服务器系统中需要存储的服务器地址id。所述主键key经过hash计算得到的哈希值与分布式缓存服务器的总数量进行求模,获得缓存服务器地址id。
步骤4:将数据按照key/value的形式存入此id的服务器进行分布式存储。
步骤5:业务需要读取数据时,先直接遍历缓存中的数据,如果可以获得结果,则请求成功。
步骤6:如果缓存中无法获得所需数据,则通过数据库访问获得数据,并将结果按照上述方法存入缓存系统中,并且将此操作涉及的相关数据表按照上述步骤存入缓存系统,方便后续的访问请求处理。
一种数据库分布式缓存系统,包括数据服务模块、缓存管理模块、缓存存储模块和数据库模块。
数据服务模块:其用于解析上层请求,判断其中的数据访问请求,按照实际需要选择缓存或者数据库来进行处理。
缓存存储模块:其用于分布式地存储、读取缓存数据。
数据库模块:其用于持久化地存储业务相关数据,为缓存管理模块中的读取单元提供数据源。
缓存管理模块:其用于缓存数据读取、存储的管理以及缓存存储服务器的维护管理。
所述缓存管理模块包括:读取单元、数据预处理单元、写入单元和缓存服务器管理单元。
读取单元:其用于执行数据库结构化查询语言sql,从数据库中读取相关数据。
数据预处理单元:其用于执行服务端处理语言,对从读取单元接受到的数据进行预处理,剔除其中冗余的数据并且新增需要的数据。
写入单元:其用于执行服务端处理语言,对数据处理单元返回的结果进行写入分布式缓存系统的操作。
缓存服务器管理单元:其用于对写入单元的待写入数据按照算法分配缓存存储服务器,所述缓存存储服务器位于所述缓存存储模块,并且管理缓存存储服务器在分布式缓存系统中的添加和删除。
具体实施说明如下:系统拦截到一条来自web或者移动终端的访问请求,判断该访问请求中是否包含数据的访问请求。如果没有,则转由其它业务代码处理;如果包含数据访问请求,则分析这一数据访问请求。当系统第一次收到数据访问请求时,缓存存储服务器中可能并没有存入相关缓存,因此将这一数据访问请求交给数据库进行处理。将从数据库获得的结果返回给web或移动终端,并且将这一结果交给缓存管理模块存入缓存服务器。另外记录这次数据库处理所涉及的数据表项,将这些表存储进缓存服务器。系统也可以预先将一些会被频繁访问的数据表项进行缓存。
缓存数据表项时,首先缓存管理模块的读取单元读取数据库中的数据表,记录下数据库的名称、表的名称、表中每个属性的名称,每个属性的数据库类型值以及每个属性对应的存储值。然后按照业务需要的规则对数据进行预处理,包括删除冗余的属性和属性值;增加一些可以方便调用者使用缓存服务的数据;将属性的数据库类型值转化为业务代码需要的类型值,例如数据库中的Date类型时间值转化为代码中int型的Unix时间。最后将需要缓存的数据组装为以键/值对为基础的各种数据结构,包括list、map等。
接着、按照需要为该缓存生成一条主键key,用于唯一标识此缓存数据。可以选择具有实际意义的字符串值作为主键key,方便查询操作。如果数据库中该表本身含有主键key,则可以直接复用。
主键key生成后,按照算法选择此缓存数据应当存入的服务器地址。本发明采用分布式缓存服务器来存储缓存数据,并且每台服务器存储着不同的缓存,因此需要指定分布式缓存服务器中的某一台服务器来存储这一条缓存数据。所述算法可以采用一致性哈希算法,将主键key的哈希值对服务器总数量进行求模获得。
获取到服务器地址后,则写入单元将缓存数据存储进该服务器。并且给该缓存设置过期时间,如果在过期时间内对该缓存数据没有任何访问,则从缓存服务器删除该数据。
当需要使用数据服务时,首先根据主键key计算出缓存服务器地址,然后尝试从该缓存服务器获取结果,如果正确返回,则表明此次从缓存获取成功 ,接着重置其过期时间。如果无法从缓存服务器获取相关数据,则表明数据过期或者没有进行过缓存存储,则交由数据库处理。
以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。
Claims (6)
1.一种数据库分布式缓存方法,其特征在于:该方法包括以下步骤:
步骤1:预先取出数据库中可能会被访问的数据记录,按照预定义的缓存存储结构对数据进行处理;
步骤2:通过一定算法为处理好的数据生成一条主键key,用于唯一定位此数据在缓存中的位置;
步骤3:根据上述的主键key计算出分布式缓存服务器系统中需要存储的服务器地址id;
步骤4:将数据按照key/value的形式存入此id的服务器进行分布式存储;
步骤5:业务需要读取数据时,先直接遍历缓存中的数据,如果可以获得结果,则请求成功;
步骤6:如果缓存中无法获得所需数据,则通过数据库访问获得数据,并将结果按照上述方法存入缓存系统中,并且将此操作涉及的相关数据表按照上述步骤存入缓存系统,方便后续的访问请求处理。
2.根据权利要求1所述的一种数据库分布式缓存方法,其特征在于:步骤1中,从数据库中读取的数据包括数据库名称、数据表名称、数据表中属性名称、数据库类型值和对应的记录值。
3.根据权利要求1所述的一种数据库分布式缓存方法,其特征在于:步骤1中,处理过程中按照实际业务需求,可以将原数据中冗余的数据进行剔除,另外也可以新增需要的数据;处理后的数据至少包括属性名称和对应值组成的键/值对,以及自定义的缓存过期时间。
4.根据权利要求1所述的一种数据库分布式缓存方法,其特征在于:步骤3中,所述主键key经过hash计算得到的哈希值与分布式缓存服务器的总数量进行求模,获得缓存服务器地址id。
5.一种数据库分布式缓存系统:其特征在于:包括数据服务模块、缓存管理模块、缓存存储模块和数据库模块;
数据服务模块:其用于解析上层请求,判断其中的数据访问请求,按照实际需要选择缓存或者数据库来进行处理;
缓存存储模块:其用于分布式地存储、读取缓存数据;
数据库模块:其用于持久化地存储业务相关数据,为缓存管理模块中的读取单元提供数据源;
缓存管理模块:其用于缓存数据读取、存储的管理以及缓存存储服务器的维护管理。
6.根据权利要求4所述的一种数据库分布式缓存系统,其特征在于:所述缓存管理模块包括:
读取单元:其用于执行数据库结构化查询语言sql,从数据库中读取相关数据;
数据预处理单元:其用于执行服务端处理语言,对从读取单元接受到的数据进行预处理,剔除其中冗余的数据并且新增需要的数据;
写入单元:其用于执行服务端处理语言,对数据处理单元返回的结果进行写入分布式缓存系统的操作;
缓存服务器管理单元:其用于对写入单元的待写入数据按照算法分配缓存存储服务器,所述缓存存储服务器位于所述缓存存储模块,并且管理缓存存储服务器在分布式缓存系统中的添加和删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810771406.8A CN109033292A (zh) | 2018-07-13 | 2018-07-13 | 一种数据库分布式缓存系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810771406.8A CN109033292A (zh) | 2018-07-13 | 2018-07-13 | 一种数据库分布式缓存系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109033292A true CN109033292A (zh) | 2018-12-18 |
Family
ID=64642258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810771406.8A Pending CN109033292A (zh) | 2018-07-13 | 2018-07-13 | 一种数据库分布式缓存系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033292A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096274A (zh) * | 2019-05-13 | 2019-08-06 | 电子科技大学 | 分布式内存列式数据库的生成代码复用匹配管理方法 |
CN110334092A (zh) * | 2019-06-14 | 2019-10-15 | 福建天泉教育科技有限公司 | 分布式id生成方法、存储介质 |
CN110851407A (zh) * | 2019-11-15 | 2020-02-28 | 南京邮电大学 | 一种数据分布式存储系统及方法 |
CN111083232A (zh) * | 2019-12-27 | 2020-04-28 | 南京邮电大学 | 一种基于改进一致性哈希的服务器端负载均衡方法 |
CN111090675A (zh) * | 2019-11-22 | 2020-05-01 | 福建亿榕信息技术有限公司 | 多入口数据缓存方法及存储介质 |
CN111159144A (zh) * | 2019-11-27 | 2020-05-15 | 北京中交兴路信息科技有限公司 | 一种缓存系统和方法 |
CN111651631A (zh) * | 2020-04-28 | 2020-09-11 | 长沙证通云计算有限公司 | 高并发视频数据处理方法、电子设备、存储介质及系统 |
CN111966717A (zh) * | 2020-09-04 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种降低数据库崩溃概率的数据访问方法及系统 |
CN113392126A (zh) * | 2021-08-17 | 2021-09-14 | 北京易鲸捷信息技术有限公司 | 基于分布式数据库的执行计划缓存及读取方法 |
CN115309788A (zh) * | 2022-10-10 | 2022-11-08 | 北京沃德博创信息科技有限公司 | 利用缓存技术处理家禽数据的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101635680A (zh) * | 2009-08-07 | 2010-01-27 | 中国电信股份有限公司 | 一种业务路由方法和系统 |
CN103019960A (zh) * | 2012-12-03 | 2013-04-03 | 华为技术有限公司 | 分布式缓存方法及系统 |
CN103595776A (zh) * | 2013-11-05 | 2014-02-19 | 福建网龙计算机网络信息技术有限公司 | 分布式缓存方法及系统 |
CN103747073A (zh) * | 2013-12-30 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种分布式缓存的方法和系统 |
-
2018
- 2018-07-13 CN CN201810771406.8A patent/CN109033292A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101635680A (zh) * | 2009-08-07 | 2010-01-27 | 中国电信股份有限公司 | 一种业务路由方法和系统 |
CN103019960A (zh) * | 2012-12-03 | 2013-04-03 | 华为技术有限公司 | 分布式缓存方法及系统 |
CN103595776A (zh) * | 2013-11-05 | 2014-02-19 | 福建网龙计算机网络信息技术有限公司 | 分布式缓存方法及系统 |
CN103747073A (zh) * | 2013-12-30 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种分布式缓存的方法和系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096274A (zh) * | 2019-05-13 | 2019-08-06 | 电子科技大学 | 分布式内存列式数据库的生成代码复用匹配管理方法 |
CN110334092A (zh) * | 2019-06-14 | 2019-10-15 | 福建天泉教育科技有限公司 | 分布式id生成方法、存储介质 |
CN110851407A (zh) * | 2019-11-15 | 2020-02-28 | 南京邮电大学 | 一种数据分布式存储系统及方法 |
CN111090675A (zh) * | 2019-11-22 | 2020-05-01 | 福建亿榕信息技术有限公司 | 多入口数据缓存方法及存储介质 |
CN111090675B (zh) * | 2019-11-22 | 2022-12-02 | 福建亿榕信息技术有限公司 | 多入口数据缓存方法及存储介质 |
CN111159144A (zh) * | 2019-11-27 | 2020-05-15 | 北京中交兴路信息科技有限公司 | 一种缓存系统和方法 |
CN111159144B (zh) * | 2019-11-27 | 2023-09-08 | 北京中交兴路信息科技有限公司 | 一种缓存系统和方法 |
CN111083232B (zh) * | 2019-12-27 | 2022-06-28 | 南京邮电大学 | 一种基于改进一致性哈希的服务器端负载均衡方法 |
CN111083232A (zh) * | 2019-12-27 | 2020-04-28 | 南京邮电大学 | 一种基于改进一致性哈希的服务器端负载均衡方法 |
CN111651631A (zh) * | 2020-04-28 | 2020-09-11 | 长沙证通云计算有限公司 | 高并发视频数据处理方法、电子设备、存储介质及系统 |
CN111651631B (zh) * | 2020-04-28 | 2023-11-28 | 长沙证通云计算有限公司 | 高并发视频数据处理方法、电子设备、存储介质及系统 |
CN111966717B (zh) * | 2020-09-04 | 2022-06-14 | 苏州浪潮智能科技有限公司 | 一种降低数据库崩溃概率的数据访问方法及系统 |
CN111966717A (zh) * | 2020-09-04 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种降低数据库崩溃概率的数据访问方法及系统 |
CN113392126A (zh) * | 2021-08-17 | 2021-09-14 | 北京易鲸捷信息技术有限公司 | 基于分布式数据库的执行计划缓存及读取方法 |
CN113392126B (zh) * | 2021-08-17 | 2021-11-02 | 北京易鲸捷信息技术有限公司 | 基于分布式数据库的执行计划缓存及读取方法 |
CN115309788A (zh) * | 2022-10-10 | 2022-11-08 | 北京沃德博创信息科技有限公司 | 利用缓存技术处理家禽数据的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033292A (zh) | 一种数据库分布式缓存系统及方法 | |
CN104850572B (zh) | HBase非主键索引构建与查询方法及其系统 | |
KR101672901B1 (ko) | 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템 | |
US9858303B2 (en) | In-memory latch-free index structure | |
CN103020204B (zh) | 一种对分布式顺序表进行多维区间查询的方法及其系统 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
CN103678556B (zh) | 列式数据库处理的方法和处理设备 | |
CN101604324B (zh) | 一种基于元搜索的视频服务网站的搜索方法及系统 | |
CN107025243A (zh) | 一种资源数据的查询方法、查询客户端和查询系统 | |
CN103530387A (zh) | 一种hdfs针对小文件的改进方法 | |
WO2015094179A1 (en) | Abstraction layer between a database query engine and a distributed file system | |
JP2003006036A (ja) | クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム | |
CN108806773A (zh) | 医学影像云存储平台设计方法 | |
CN100437590C (zh) | 预取对象的方法 | |
CN106155934B (zh) | 一种云环境下基于重复数据的缓存方法 | |
CN102737133B (zh) | 一种实时搜索的方法 | |
CN103366016A (zh) | 基于hdfs的电子文件集中存储及优化方法 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN105915619B (zh) | 顾及访问热度的网络空间信息服务高性能内存缓存方法 | |
CN104111898A (zh) | 基于多维数据相似性的混合存储系统及数据管理方法 | |
CN103365987B (zh) | 一种基于共享磁盘架构的集群数据库系统及数据处理方法 | |
Hoque et al. | Disk layout techniques for online social network data | |
CN111159176A (zh) | 一种海量流数据的存储和读取的方法和系统 | |
CN107402982A (zh) | 数据写入、数据匹配方法、装置及计算设备 | |
CN103942301A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181218 |