《一种分布式数据库的缓存处理方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种分布式数据库的缓存处理方法及系统.pdf(16页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104050276A43申请公布日20140917CN104050276A21申请号201410293656722申请日20140626G06F17/3020060171申请人北京思特奇信息技术股份有限公司地址100086北京市海淀区中关村南大街6号中电信息大厦16层72发明人李静74专利代理机构北京轻创知识产权代理有限公司11212代理人杨立54发明名称一种分布式数据库的缓存处理方法及系统57摘要本发明涉及一种分布式数据库的缓存处理方法及系统,其中系统包括接收模块、命令匹配模块、解析模块、判断模块、缓存解析模块、表名称判断模块、路由模块和反馈模块;所述接收模块接收与解析模块。
2、和命令匹配模块分别单向链接;所述命令匹配模块分别与客户端和解析模块单向连接;所述解析模块解析与判断模块单向连接;所述判断模块分别与缓存解析模块和路由模块单向连接;所述缓存解析模块通过表名称判断模块与反馈模块相连接;所述路由模块并将缓存结果发送到反馈模块;所述反馈模块将缓存结果返回给客户端。本发明提高系统并发处理能力;提高系统资源利用率;利用低端服务器上负载分担数据库的存储空间进行数据处理;提升性能和安全性。51INTCL权利要求书2页说明书11页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书11页附图2页10申请公布号CN104050276ACN104050276。
3、A1/2页21一种分布式数据库的缓存处理方法,其特征在于,具体包括以下步骤步骤1接收来自客户端的命令,判断是否是首次接收客户端的命令,如果是,执行步骤3;否则,执行步骤2;步骤2判断缓存中是否存在与客户端的命令匹配的缓存数据,如果存在,将匹配的缓存数据返回给客户端,结束;否则执行步骤3;步骤3解析MYSQL关系数据库管理系统数据包中的SQL结构化查询语言语句,得到SQL语句的类型;步骤4判断得到的SQL语句的类型是否是查询类型,如果是,执行步骤5;否则,执行步骤8;步骤5加载缓存配置文件中的配置参数,并根据配置参数连接缓存,得到缓存中的所有KEY值;解析SQL得到SQL里的表名称;步骤6判断K。
4、EY值里是否包含SQL里的表名称,如果是,根据KEY值获取对应的缓存结果,执行步骤7;否则,执行步骤9;步骤7将缓存结果返回给客户端,结束;步骤8对SQL做路由得到路由结果,根据路由结果发送执行SQL,获得MYSQL数据库返回的缓存结果,执行步骤7;步骤9将SQL作为KEY值,将SQL的执行结果集作为缓存结果存入缓存中,执行步骤7。2根据权利要求1所述的一种分布式数据库的缓存处理方法,其特征在于,所述步骤4与步骤8之间还包括以下步骤步骤A判断SQL语句是否是插入、更新或删除类型;如果是,执行步骤B;否则,执行步骤8;步骤B解析SQL,获得SQL中的表名称;步骤C根据表名称在缓存中查找包含所述表。
5、名称的KEY值,删除缓存中上述KEY值对应的数据,执行步骤8。3根据权利要求1所述的一种分布式数据库的缓存处理方法,其特征在于,当有事务回滚时,清除缓存中的所有数据。4根据权利要求13任一项所述的一种分布式数据库的缓存处理方法,其特征在于,所述步骤5中加载缓存配置文件中的配置参数,所述配置参数包括IP地址、端口、缓存表等信息。5一种分布式数据库的缓存处理系统,其特征在于,包括接收模块、命令匹配模块、解析模块、判断模块、缓存解析模块、表名称判断模块、路由模块和反馈模块;所述接收模块接收来自客户端的命令,判断是否是首次接收客户端的命令,如果是,将命令发送到解析模块;否则,将命令发送到命令匹配模块;。
6、所述命令匹配模块判断缓存中是否存在与客户端的命令匹配的缓存数据,如果存在,将匹配的缓存数据返回给客户端;将命令发送到解析模块;所述解析模块解析MYSQL关系数据库管理系统数据包中的SQL结构化查询语言语句,得到SQL语句的类型;所述判断模块判断得到的SQL语句的类型是否是查询类型,如果是,将SQL语句发送到权利要求书CN104050276A2/2页3缓存解析模块;否则,将SQL语句发送到路由模块;所述缓存解析模块加载缓存配置文件中的配置参数,并根据配置参数连接缓存,得到缓存中的所有KEY值;解析SQL得到SQL里的表名称;所述表名称判断模块判断KEY值里是否包含SQL里的表名称,如果是,根据K。
7、EY值获取对应的缓存结果,并将缓存结果发送到反馈模块;否则,将SQL作为KEY值,将SQL的执行结果集作为缓存结果存入缓存中,并将缓存结果发送到反馈模块;所述路由模块对SQL做路由得到路由结果,根据路由结果发送执行SQL,获得MYSQL数据库返回的缓存结果,并将缓存结果发送到反馈模块;所述反馈模块将缓存结果返回给客户端。6根据权利要求5所述的一种分布式数据库的缓存处理系统,其特征在于,所述还包括设置在路由模块与反馈模块之间的语句判断模块;所述语句判断模块判断SQL语句是否是插入、更新或删除类型;如果是,解析SQL,获得SQL中的表名称,根据表名称在缓存中查找包含所述表名称的KEY值,删除缓存中。
8、上述KEY值对应的数据;否则,将缓存结果发送到反馈模块。7根据权利要求6所述的一种分布式数据库的缓存处理系统,其特征在于,当有事务回滚时,清除缓存中的所有数据。8根据权利要求57任一项所述的一种分布式数据库的缓存处理系统,其特征在于,所述缓存解析模块中加载缓存配置文件中的配置参数,所述配置参数包括IP地址、端口、缓存表等信息。权利要求书CN104050276A1/11页4一种分布式数据库的缓存处理方法及系统技术领域0001本发明涉及一种分布式数据库的缓存处理方法及系统。背景技术0002现有分布式数据库代理对客户端发送来待处理的每一个SQL请求都会发送给MYSQL服务器处理,并将处理结果返回给客。
9、户端。这种方式会导致同一个SQL查询语句要多次向MYSQL服务器请求执行,影响MYSQL的使用效率。0003现有系统处理存在以下缺点0004同样的请求会多次发送给MYSQL服务器执行,而数据库代理没有数据缓存功能,会导致MYSQL服务器响应频繁,性能降低。0005同样的请求会多次发送给MYSQL服务器执行,会导致MYSQL服务器的并发很大,影响性能。0006分布式数据库代理缺少数据缓存功能,使得代理会频繁调用MYSQL服务器执行命令。0007在互联网、电信等许多关键领域,随着企业业务的不断发展,企业的I/T环境也在不断进行演变,单个数据库已经很难满足海量数据库存储和高并发数据访问,分布式数据库。
10、的出现成为必然,分布式数据库能够有效的解决海量数据存储和并发问题,通过数据的水平切分和数据表的垂直切分,有效的缓解了海量数据存储,通过负载均衡、高可用、轮询等缓解了高并发问题,但是提高数据库的响应速度,减小频繁的数据库请求成为分布式数据库需要面对的问题。因此,在分布式数据库中增加缓存支持是非常重要的。发明内容0008本发明所要解决的技术问题是提供一种能够大大提高分布式数据库的响应速度以及减小MYSQL服务器的压力的分布式数据库的缓存处理方法。0009本发明解决上述技术问题的技术方案如下一种分布式数据库的缓存处理方法,具体包括以下步骤0010步骤1接收来自客户端的命令,判断是否是首次接收客户端的。
11、命令,如果是,执行步骤3;否则,执行步骤2;0011步骤2判断缓存中是否存在与客户端的命令匹配的缓存数据,如果存在,将匹配的缓存数据返回给客户端,结束;否则执行步骤3;0012步骤3解析MYSQL关系数据库管理系统数据包中的SQL结构化查询语言语句,得到SQL语句的类型;0013步骤4判断得到的SQL语句的类型是否是查询类型,如果是,执行步骤5;否则,执行步骤8;0014步骤5加载缓存配置文件中的配置参数,并根据配置参数连接缓存,得到缓存中的所有KEY值;解析SQL得到SQL里的表名称;说明书CN104050276A2/11页50015步骤6判断KEY值里是否包含SQL里的表名称,如果是,根据。
12、KEY值获取对应的缓存结果,执行步骤7;否则,执行步骤9;0016步骤7将缓存结果返回给客户端,结束;0017步骤8对SQL做路由得到路由结果,根据路由结果发送执行SQL,获得MYSQL数据库返回的缓存结果,执行步骤7;0018步骤9将SQL作为KEY值,将SQL的执行结果集作为缓存结果存入缓存中,执行步骤7。0019本发明的有益效果是本发明支持在不增加硬件投入的条件下,提高系统并发处理能力;充分利用设备闲置时段的计算资源,提高系统资源利用率;利用低端服务器上负载分担数据库的存储空间进行数据处理;提升性能和安全性可配置方式移动计算、移动数据进行云计算,提供并行计算的性能和效率;保障数据的一致性。
13、、完整性、可用性,提高数据的隔离型,为高并发系统奠定基础。0020在上述技术方案的基础上,本发明还可以做如下改进。0021进一步,所述步骤4与步骤8之间还包括以下步骤0022步骤A判断SQL语句是否是插入、更新或删除类型;如果是,执行步骤B;否则,执行步骤8;0023步骤B解析SQL,获得SQL中的表名称;0024步骤C根据表名称在缓存中查找包含所述表名称的KEY值,删除缓存中上述KEY值对应的数据,执行步骤8。0025进一步,当有事务回滚时,清除缓存中的所有数据。0026进一步,所述步骤5中加载缓存配置文件中的配置参数,所述配置参数包括IP地址、端口、缓存表等信息。0027本发明所要解决的技。
14、术问题是提供一种能够大大提高分布式数据库的响应速度以及减小MYSQL服务器的压力的分布式数据库的缓存处理系统。0028本发明解决上述技术问题的技术方案如下一种分布式数据库的缓存处理系统,包括接收模块、命令匹配模块、解析模块、判断模块、缓存解析模块、表名称判断模块、路由模块和反馈模块;0029所述接收模块接收来自客户端的命令,判断是否是首次接收客户端的命令,如果是,将命令发送到解析模块;否则,将命令发送到命令匹配模块;0030所述命令匹配模块判断缓存中是否存在与客户端的命令匹配的缓存数据,如果存在,将匹配的缓存数据返回给客户端;将命令发送到解析模块;0031所述解析模块解析MYSQL关系数据库管。
15、理系统数据包中的SQL结构化查询语言语句,得到SQL语句的类型;0032所述判断模块判断得到的SQL语句的类型是否是查询类型,如果是,将SQL语句发送到缓存解析模块;否则,将SQL语句发送到路由模块;0033所述缓存解析模块加载缓存配置文件中的配置参数,并根据配置参数连接缓存,得到缓存中的所有KEY值;解析SQL得到SQL里的表名称;0034所述表名称判断模块判断KEY值里是否包含SQL里的表名称,如果是,根据KEY值获取对应的缓存结果,并将缓存结果发送到反馈模块;否则,将SQL作为KEY值,将SQL的执说明书CN104050276A3/11页6行结果集作为缓存结果存入缓存中,并将缓存结果发送。
16、到反馈模块;0035所述路由模块对SQL做路由得到路由结果,根据路由结果发送执行SQL,获得MYSQL数据库返回的缓存结果,并将缓存结果发送到反馈模块;0036所述反馈模块将缓存结果返回给客户端。0037本发明的有益效果是本发明支持在不增加硬件投入的条件下,提高系统并发处理能力;充分利用设备闲置时段的计算资源,提高系统资源利用率;利用低端服务器上负载分担数据库的存储空间进行数据处理;提升性能和安全性可配置方式移动计算、移动数据进行云计算,提供并行计算的性能和效率;保障数据的一致性、完整性、可用性,提高数据的隔离型,为高并发系统奠定基础。0038在上述技术方案的基础上,本发明还可以做如下改进。0。
17、039进一步,所述还包括设置在路由模块与反馈模块之间的语句判断模块;0040所述语句判断模块判断SQL语句是否是插入、更新或删除类型;如果是,解析SQL,获得SQL中的表名称,根据表名称在缓存中查找包含所述表名称的KEY值,删除缓存中上述KEY值对应的数据;否则,将缓存结果发送到反馈模块。0041进一步,当有事务回滚时,清除缓存中的所有数据。0042进一步,所述缓存解析模块中加载缓存配置文件中的配置参数,所述配置参数包括IP地址、端口、缓存表等信息。0043本发明解决了以下问题0044对于相同的查询语句,第一次从MYSQL数据库执行查询并将查询结果放到数据库代理集成的缓存中,以后从缓存中查询命。
18、中结果后返回给客户端。0045对于数据库更新操作,提取更新操作中的表名称,然后匹配缓存中的相关表的查询结果,删除之,以保证缓存和数据库的数据一致性。0046支持在配置文件里配置目标缓存表名称,即系统只对配置的表的相关查询结果进行缓存。附图说明0047图1为本发明所述的一种分布式数据库的缓存处理方法流程图;0048图2为本发明所述的一种分布式数据库的缓存处理系统结构框图。0049附图中,各标号所代表的部件列表如下00501、接收模块,2、命令匹配模块,3、解析模块,4、判断模块,5、缓存解析模块,6、表名称判断模块,7、路由模块,8、反馈模块,9、语句判断模块。具体实施方式0051以下结合附图对。
19、本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。0052如图1所示,为本发明所述的一种分布式数据库的缓存处理方法,具体包括以下步骤0053步骤1接收来自客户端的命令,判断是否是首次接收客户端的命令,如果是,执行步骤3;否则,执行步骤2;说明书CN104050276A4/11页70054步骤2判断缓存中是否存在与客户端的命令匹配的缓存数据,如果存在,将匹配的缓存数据返回给客户端,结束;否则执行步骤3;0055步骤3解析MYSQL关系数据库管理系统数据包中的SQL结构化查询语言语句,得到SQL语句的类型;0056步骤4判断得到的SQL语句的类型是否是查询类型,如果是。
20、,执行步骤5;否则,执行步骤8;0057步骤5加载缓存配置文件中的配置参数,并根据配置参数连接缓存,得到缓存中的所有KEY值;解析SQL得到SQL里的表名称;0058步骤6判断KEY值里是否包含SQL里的表名称,如果是,根据KEY值获取对应的缓存结果,执行步骤7;否则,执行步骤9;0059步骤7将缓存结果返回给客户端,结束;0060步骤8对SQL做路由得到路由结果,根据路由结果发送执行SQL,获得MYSQL数据库返回的缓存结果,执行步骤7;0061步骤9将SQL作为KEY值,将SQL的执行结果集作为缓存结果存入缓存中,执行步骤7。0062所述步骤4与步骤8之间还包括以下步骤0063步骤A判断S。
21、QL语句是否是插入、更新或删除类型;如果是,执行步骤B;否则,执行步骤8;0064步骤B解析SQL,获得SQL中的表名称;0065步骤C根据表名称在缓存中查找包含所述表名称的KEY值,删除缓存中上述KEY值对应的数据,执行步骤8。0066当有事务回滚时,清除缓存中的所有数据。0067所述步骤5中加载缓存配置文件中的配置参数,所述配置参数包括IP地址、端口、缓存表等信息。0068如图2所示,为本发明所述的一种分布式数据库的缓存处理系统,包括接收模块1、命令匹配模块2、解析模块3、判断模块4、缓存解析模块5、表名称判断模块6、路由模块7和反馈模块8;0069所述接收模块1接收来自客户端的命令,判断。
22、是否是首次接收客户端的命令,如果是,将命令发送到解析模块3;否则,将命令发送到命令匹配模块2;0070所述命令匹配模块2判断缓存中是否存在与客户端的命令匹配的缓存数据,如果存在,将匹配的缓存数据返回给客户端;将命令发送到解析模块3;0071所述解析模块3解析MYSQL关系数据库管理系统数据包中的SQL结构化查询语言语句,得到SQL语句的类型;0072所述判断模块4判断得到的SQL语句的类型是否是查询类型,如果是,将SQL语句发送到缓存解析模块5;否则,将SQL语句发送到路由模块7;0073所述缓存解析模块5加载缓存配置文件中的配置参数,并根据配置参数连接缓存,得到缓存中的所有KEY值;解析SQ。
23、L得到SQL里的表名称;0074所述表名称判断模块6判断KEY值里是否包含SQL里的表名称,如果是,根据KEY值获取对应的缓存结果,并将缓存结果发送到反馈模块8;否则,将SQL作为KEY值,将SQL说明书CN104050276A5/11页8的执行结果集作为缓存结果存入缓存中,并将缓存结果发送到反馈模块8;0075所述路由模块7对SQL做路由得到路由结果,根据路由结果发送执行SQL,获得MYSQL数据库返回的缓存结果,并将缓存结果发送到反馈模块8;0076所述反馈模块8将缓存结果返回给客户端。0077所述还包括设置在路由模块7与反馈模块8之间的语句判断模块9;0078所述语句判断模块9判断SQL。
24、语句是否是插入、更新或删除类型;如果是,解析SQL,获得SQL中的表名称,根据表名称在缓存中查找包含所述表名称的KEY值,删除缓存中上述KEY值对应的数据;否则,将缓存结果发送到反馈模块8。0079当有事务回滚时,清除缓存中的所有数据。0080所述缓存解析模块5中加载缓存配置文件中的配置参数,所述配置参数包括IP地址、端口、缓存表等信息。0081分布式数据库系统的缓存处理模块,是基于分布式缓存实现的,通过封装分布式缓存的缓存数据调用接口,实现向分布式缓存中存入对象以及取出对象的接口。分布式数据库利用这些接口实现向缓存中以SQL字符串作为KEY,以结果集字节流作为VALUE存入SQL执行结果,以。
25、满足相同SQL直接从缓存中读取的目的。核心功能有00821解析SQL语句解析SQL语句,从而得知SQL语句的类型,是查询型的还是更新增加删除类型的。00832提取SQL目标表名称解析SQL语句,获得SQL语句中的目标表名称。原理是通过分析SQL语句的关键词从而获得目标表所在位置。00843加载缓存配置信息分布式数据库启动时候,从配置文件里读取缓存配置信息,包括IP地址、端口、缓存表等信息,加入到内存里以待执行SQL时使用。00854向缓存存入数据如果是查询SQL并且缓存中没有这个SQL的结果集缓存,那么存入缓存中。00865从缓存中取得数据如果是查询SQL并且缓存中有这个SQL的结果集,那么从。
26、缓存中获得数据。00876更新缓存中的数据当有更新插入删除操作且数据表属于被缓存的表时,清除相应的缓存以保证缓存数据与数据库数据保证同步。当有数据库回滚操作时且当前连接操作了缓存表数据时,清空缓存内的所有数据以保证同步。0088分布式缓存系统的介绍0089分布式缓存是一个KEYVALUE存储系统。它支持存储的VALUE类型相对更多,包括STRING字符串、LIST链表、SET集合、ZSETSORTEDSET有序集合和HASHS哈希类型。这些数据类型都支持PUSH/POP、ADD/REMOVE及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,REDIS支持各种不同方式的排序。
27、。为了保证效率,数据都是缓存在内存中。区别的是这个缓存会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了MASTERSLAVE主从同步。0090两种文件格式全量数据和增量请求。全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载;增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行REPLAY得到数据,序列化的操作包括SET、RPUSH、SADD、ZADD。0091存储分为内存存储、磁盘存储和LOG文件三部分,配置文件中有三个参数对其进说明书CN104050276A6/11页9行配置。SAVESECONDSUPDATES,SAVE配置,指。
28、出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。APPENDONLYYES/NO,APPENDONLY配置,指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为缓存本身同步数据文件是按上面的SAVE条件来同步的,所以有的数据会在一段时间内只存在于内存中。APPENDFSYNCNO/ALWAYS/EVERYSEC,APPENDFSYNC配置,NO表示等操作系统进行数据缓存同步到磁盘,ALWAYS表示每次更新操作后手动调用FSYNC将数据写到磁盘,EVERYSEC表示每秒同步一次。。
29、0092性能,测试完成了50个并发执行100000个请求。设置和获取的值是一个256字节字符串。LINUXBOX是运行LINUX26,这是X3320XEON25GHZ。文本执行使用LOOPBACK接口127001。结果写的速度是110000次/S,读的速度是81000次/S。0093分布式缓存JAVA接口介绍0094分布式缓存系统JAVA客户端基础接口为PUBLICINTERFACEIDCSCLIENT,分别有两个实现类IDCSCLIENTSHARD和IDCSCLIENTSHARDPOOL,这两个实现类的区别在于00951、初始化方法不一样0096IDCSCLIENTSHARD初始化方法为00。
30、971IDCSCLIENTSHARDICSNEWIDCSCLIENTSHARD;0098ICSINIT;注以默认本机IP和6379端口初始化0099或者0100ICSINITLISTLIST;注以给定的ADDRESS初始化01012IDCSCLIENTSHARDICSNEWIDCSCLIENTSHARDLISTLIST;0102/默认调用INITLISTLIST方法初始化缓存。0103IDCSCLIENTSHARDPOOL初始化方法为0104IDCSCLIENTSHARDPOOLICSPIDCSCLIENTSHARDPOOLINITPOOLCONG,ADD;0105其中INIT方法的格式为01。
31、06IDCSCLIENTSHARDPOOLINITCONGPOOLCONG,LISTADD;01072、使用场景不一样0108IDCSCLIENTSHARDPOOL与IDCSCLIENTSHARD相比,IDCSCLIENTSHARDPOOL采用连接池获取对缓存服务器的链接,每次操作时先从连接池内获取连接,操作完成后释放连接,更适用于多线程和高并发的情况。0109其他操作接口均相同,具体如下0110查询缓存对象接口0111说明书CN104050276A7/11页10011201130114接口名MAPHGETALLNALSTRINGCACHENAME作用HASH类型的获取一组缓存对象的接口数据结。
32、构参数CACHENAME缓存对象的组名。返回值获取成功返回MAP,不成功返回NULL0115接口名MAPGGETALLNALSTRINGCACHENAME作用GROUP类型的获取缓存对象的接口数据结构参数CACHENAME缓存对象的组名。返回值获取成功返回MAP,不成功返回NULL说明书CN104050276A108/11页110116把对象存进缓存的接口01170118011901200121说明书CN104050276A119/11页120122012301240125从缓存中删除对象的接口0126说明书CN104050276A1210/11页130127012801290130接口名BO。
33、OLEANREMOVENALSTRINGCACHENAME作用删除一组缓存对象,三种类型都适用数据结构参数CACHENAME缓存对象的组名。返回值操作成功返回TRUE,不成功返回FALSE0131断开与缓存的连接0132说明书CN104050276A1311/11页14接口名VOIDSTOP作用断开与缓存服务器的连接数据结构无返回值无0133以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN104050276A141/2页15图1说明书附图CN104050276A152/2页16图2说明书附图CN104050276A16。