一种针对数据库重做日志的处理方法及系统的利记博彩app

文档序号:6371914阅读:173来源:国知局
专利名称:一种针对数据库重做日志的处理方法及系统的利记博彩app
技术领域
本发明涉及数据库技术领域,具体涉及一种针对数据库重做日志的处理方法及系统。
背景技术
当前数据库技术中,重做(REDO)日志提供了一个对未写入数据库磁盘的数据的进行重做的基础。当数据库更新提交的时候,数据并不会即时写入到磁盘的数据文件中,而是保存在内存当中,这就需要通过REDO日志来对该次数据库更新提供一种持久化的支持,避免在故障的情况下,由于内存数据的丢失而导致数据丢失。现有技术中,通常通过将数据库更新的动作记录在REDO日志中来避免要求每次的数据库更新写入数据文件,从而提高数据库更新的性能;同时在REDO日志的写入上又通 过设置REDO日志的缓冲,来减少REDO日志写入磁盘的频率;而在操作系统这个层面,会对磁盘的读写操作进行排序来优化磁盘的读写操作;最后在磁盘中,还有磁盘缓存的存在,来最大限度的利用批量写入磁盘的优势。可以发现,从REDO日志的产生到磁盘磁化的过程当中,依赖各类的缓冲跟延时来提闻数据库性能的措施,一方面能获取性能提升,另一方面也存在着缓冲因为掉电等极端情况下造成数据丢失的危险。此外在高并发性、高吞吐量的数据库操作中,目前比较多的是采用基于磁盘阵列的方式来提供容错能力,但是基于容错的前提下,磁盘阵列又无法做到更快的提高磁盘IO的性能。同时磁盘阵列也局限于磁盘缓存的总容量跟磁盘阵列扩展的代价不能提供线性的扩展能力。面对超负荷的REDO日志的,磁盘阵列解决方案的性能下降是无可避免的。因此,现有技术存在以下主要缺陷RED0日志的缓存可能因为机器掉电而丢失,磁盘缓存存在着类似问题,因此现有处理方法使得安全性降低。

发明内容
本发明提供一种针对数据库重做日志的处理方法及系统,能够提高数据处理的安全性。一种针对数据库重做日志的处理方法,包括构建数据库Cassandra的内存集群;将重做REDO日志通过冗余复制保存在Cassandra集群的内存中;对存储在Cassandra集群的内存中的REDO日志进行处理操作。所述构建Cassandra的内存集群包括采用点对点P2P分布式技术构建Cassandra的内存集群,结合一致性哈希算法将所述内存集群形成一个环状,所述内存集群中的每一个节点负责部分键值范围的查询任务。所述将REDO日志通过冗余复制保存在Cassandra集群的内存中包括
调整Cassandra集群的内存配置,将每份REDO日志在Cassandra集群的内存中的N个节点形成冗余,所述N大于I。所述N个节点具体为3个节点。所述对存储在Cassandra集群的内存中的REDO日志进行处理操作包括对存储在Cassandra集群的内存中的REDO日志进行至少以下一项操作查询、插入、删除、恢复。所述删除包括修改Cassandra在内存中的数据删除策略,在Cassandra的TombMark的删除基础上增加内存记录物理删除功能;所述恢复包括将数据库恢复时多个REDO日志的串行操作转换为并行操作; 所述对存储在Cassandra集群的内存中的REDO日志进行处理操作还包括改造Cassandra集群的归并操作,使得错开Cassandra集群的归并操作同REDO日志的读写操作。一种数据库系统包括至少一个以上内存集群服务器节点;所述至少一个以上内存集群服务器节点构建成Cassandra的内存集群;所述内存集群服务器节点按照冗余复制方式保存重做REDO日志,并对存储在Cassandra集群的内存中的REDO日志进行处理操作。所述内存集群服务器节点包括请求协调器、集群协调器、日志RID模块;请求协调器,用于接收对REDO日志的操作请求;集群协调器,采用P2P分布式技术构建Cassandra的内存集群,结合一致性哈希算法将所述内存集群形成一个环状,所述内存集群中的每一个节点负责部分键值范围的查询任务;日志RID模块,根据请求协调器的请求,对存储在Cassandra集群的内存中的REDO日志进行处理操作,包括对存储在Cassandra集群的内存中的REDO日志进行至少以下一项操作查询、插入、删除、恢复。所述内存集群服务器节点还包括受控归并模块,用于改造Cassandra集群的归并操作,使得错开Cassandra集群的归并操作同REDO日志的读写操作。上述技术方案可以看出,本发明技术方案采用改造后的Cassandra集群存储REDO日志,将REDO日志尽量通过冗余复制保存在Cassandra集群的内存当中,将RDBMS的REDO日志极端情况下丢失数据的风险通过Cassandra的冗余复制策略加以控制,从而加强数据持久化的安全性,并且将通常的REDO日志的磁盘读写转换为对Cassandra集群内存的读与,从而提闻REDO日志的读与性能,在此基础上提升数据库的整体性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图I是为本发明的处理方法流程示意图;图2是本发明组成的环状集群示意图3是本发明添加查询服务器节点后的环状集群示意图;图4是本发明的内存集群服务器的结构示意图;图5是本发明的内存集群服务器的应用示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下 所获得的所有其它实施例,都属于本发明保护的范围。本发明提供一种针对数据库重做日志的处理方法,可以针对现有技术缺陷提高数据处理安全性。另外,现有技术方法主要通过REDO日志的缓存以及磁盘缓存来延迟REDO日志的磁盘磁化,其存在的缺陷除了 REDO日志的缓存可能因为机器掉电而丢失外,还包括REDO日志的缓存可能因为REDO日志的内容过大而失效;另外磁盘缓存的大小是固化的,不可以灵活调整;关闭磁盘回写缓存会造成磁盘IO性能的急剧下降等。本发明提供的技术方案可以进一步解决上述缺陷。本发明技术方案,采用P2P (Peer-to-Peer,点对点)技术、一致性哈希算法(Consistent Hashing Algorithm)把REDO日志缓存存储到Cassandra分布式数据库(Cassandra是一个混合型的非关系的数据库),通过对Cassandra分布式数据库进行改造以适应REDO日志的存在特点RED0日志的持久化只存在于事务已经提交,但是更新数据尚未写入磁盘文件这个时间点之间。在数据库数据写入磁盘之后,相应的REDO日志是可删除的,Cassandra分布式数据库的集群具有高可伸缩性,提供了实时增加节点的功能,并且可以在负载较重的节点之前插入节点,减轻相应节点的负载,而在集群负载不足的情况下,可以实时减少部分节点,从而使得集群具备高度可伸缩性;因此本发明技术方案通过改造Cassandra使其适应REDO日志的存在特点,减少甚至消除REDO日志持久化到磁盘的必要性。以下详细介绍本发明技术方案。本发明技术方案的主要思路是把分布式的数据库应用于REDO日志的存储,相关的分布式技术包括Cassandra、Gossip的P2P、一致性哈希。以下对涉及的相关技术进行简单介绍。Cassandra是一个基于Gossip、一致性哈希等技术实现的分布式数据库,具备高并发性、高可用性、最终一致性、无单点故障等优点,特别适合非关系型的日志文件的存储和读取。Gossip是一个p2p协议的实现,该协议的原理是向周围的节点传递信息,直到所有节点都有同样的信息,通过这种方式,可以达到多点同步,并且可以不用关心具体节点量实现无限水平扩展的功能。一致性哈希算法中,每个节点(对应P2P系统中的点Peer)都有随机分配的标识ID。在将内容映射到节点时,使用内容的关键字和节点的ID进行一致性哈希运算并获得键值。一致性哈希要求键值和节点ID处于同一值域。最简单的键值和ID可以是一维的,比如从OOOO到9999的整数集合。为了构建查询所需的路由,一致性哈希要求每个节点存储其上行节点(ID值大于自身的节点中最小的)和下行节点(ID值小于自身的节点中最大的)的位置信息(IP地址)。当节点需要查找内容时,就可以根据内容的键值决定向上行或下行节点发起查询请求。收到查询请求的节点如果发现自己拥有被请求的目标,可以直接向发起查询请求的节点返回确认;如果发现不属于自身的范围,可以转发请求到自己的上行/下行节点。如图I所示,为本发明的处理方法流程示意图。该方法主要包括步骤步骤101、构建Cassandra的内存集群;该步骤的Cassandra的内存集群采用P2P分布式技术来构建实现,结合采用一致性哈希算法形成一个环状,让集群中的每一个节点负责部分键值范围的查询任务,并且通过一致性哈希算法最大限度地抑制了键的重新分布。
基于Cassandra的内存集群具有如下几个特点采用一致性哈希算法提高集群的平衡性,使得集群中的各个节点能够均衡提供服务;采用可插入式哈希算法,同时提供了缺省的高效均衡的哈希算法,实现系统高可扩展性,可以实现灵活的路由策略。具体的,采用P2P分布式技术组成Cassandra的内存集群,使得集群中的每个节点实时保存了集群所有节点的处理范围的信息,根据该信息每个节点能够快速的定位到相应的节点去操作REDO日志数据,有效形成了负载均衡的能力。负载均衡的能力在于各个节点都可以响应客户端请求跟路由客户端请求,因为每个节点都可以根据一致性哈希计算出客户请求对应的处理节点。采用P2P分布式技术使得系统具备高可伸缩性,在负载不足的情况下,可以在不影响系统正常运行的情况下在线增加新的服务节点;结合一致性哈希算法对于临时性网络故障而暂时离开的节点,由其他的节点暂时提供服务,在该节点恢复后重新接管相应的查询服务。本发明技术方案通过一致性哈希算法组成环状集群的过程如下如图2所示,是本发明组成的环状集群示意图。首先求出服务器集群中每个节点的哈希值(也可以在配置文件中指定哈希值),并将其配置到(T2127的圆上。这个数值范围也是由一致性哈希算法来确定的,简单的说例如可以是由哈希函数可能产生的最大值。然后对于需要查询的键值采用相同的哈希算法求出哈希值,并映射到圆上,然后从数据映射到的位置开始顺时针查找,找到第一个服务器后,由该服务器向数据源发起查询请求,并保存查询结果到缓存中。从图2的状态中添加一个查询服务器节点,采用一致性哈希算法只会影响该节点添加位置的节点的查询键值范围,而不会影响其他的节点,从而在增加节点的时候仍然能够利用大部分节点的缓存信息,从而不影响添加时刻的查询效率,如图3所示,是本发明添加查询服务器节点后的环状集群示意图。另外,同样删除一个节点或者节点故障,也只影响删除节点的下一个位置的节点的键值查询范围。在分布式环境中,节点可能会出现临时性的网络故障而导致临时失效,一个失效的节点通常不会造成永久的故障。由于这个原因,需要采用一种外部机制来增加和删除节点,在查询服务器集群中,系统管理员采用外部命令连接到已有环中的任何一个节点来执行集群环中节点的增加和删除,该节点负责把成员信息的变化情况传播到集群中的其他的节点上,让每个节点维护完整的成员视图,该传播协议就是基于Gossip的P2P协议。当节点增加到集群中,第一次启动的时候,它会选择一个哈希值(这个哈希值可以在配置文件中指定),并且把节点映射到环中,映射信息(包括哈希值)将会持久化到磁盘中,在加入到集群中后,会首先连接种子节点,获取环中其他节点的信息,最终确定该节点能够处理的关键字的哈希值范围,种子节点把最新的环成员信息,以及每个处理的键值范围通过P2P协议的传播出去,最终让环中的所有节点保存环的全局视图信息。步骤102、将REDO日志通过冗余复制保存在Cassandra集群的内存中;该步骤调整Cassandra的内存配置,将REDO日志尽可能缓存于集群的内存中。通过使用Cassandra的冗余复制策略,每份REDO日志会在集群N(默认为3)个节点上形成冗余,有效避免以往的的REDO日志的单点故障的危险,从而真正做到数据库数据持久化的高安全性。所述N大于I。通过调整Cassandra的内存使用策略,可以将REDO日志尽量保存在集群中节点的内存当中,从而减少甚至消除REDO日志写磁盘的要求,大大提高REDO日志的读写性能。此外通过将REDO日志保存在节点的内存当中,在单磁盘或者磁盘阵列当中释放了宝贵的磁盘缓存,进而进一步提高数据库写数据到数据文件的性能,进一步提升数据库的性能。步骤103、对存储在Cassandra集群的内存中的REDO日志进行处理操作。将REDO日志通过冗余复制保存在Cassandra集群的内存当中后,则是将通常的REDO日志的磁盘读写转换为对Cassandra集群的内存的读写,即该步骤将RDBMS的REDO日志的磁盘读写转换成高效的Cassandra内存集群的读写。该步骤中对REDO日志进行处理操作包括RED0日志的查询、插入、修改、删除、恢复等。该步骤中,在Cassandra的Tomb Mark的删除基础上增加内存记录物理删除功能。通过分析利用REDO日志生命周期较短的特性,修改Cassandra在内存中数据的删除策略,提高Cassandra的内存使用效率,从而大大提高Cassandra内存存储REDO日志的可能性,可以达到消除磁盘读写的目的。该步骤中,将数据库恢复时多个REDO日志的串行操作转换为并行操作,从而提高数据库恢复的速度。另外,该步骤还包括通过改造Cassandra的归并操作,使其成为受控行为,使得有效错开Cassandra的归并同REDO日志的读写。上述内容介绍了内存集群的构成方案,以下详细介绍每个内存集群服务器节点的实现方法。如图4所示,是本发明的内存集群服务器的结构示意图。每个内存集群服务器节点主要包括四个主要的软件组件模块请求协调器、集群协调器、日志RID模块、受控归并模块。如图5所示,是本发明的内存集群服务器的应用示意图。请求协调器,建立在事件驱动消息服务架构之上,所有的通讯采用异步IO通道技术,请求协调器获取客户端的请求后,根据关键字的哈希值和一致性哈希技术,在环状全局视图中确定服务查询节点并查询数据返回后,请求协调器把查询结果返回到客户端。请求协调器可以接收对REDO日志的操作请求。集群协调器,利用基于Gossip的P2P分布式技术与集群中其他节点通讯,维护集、群的环成员信息,每个节点从环中随机选取一些节点,把自己所存储的集群环信息与对方交互,使得双方保持一致,通过这种协议使得所有节点最终形成一致的环全局试图,而且集群协调器把该信息持久化到磁盘上,用来在节点重启的时候,立即获得全局视图信息,而无需重复前面的交互过程。集群协调器,采用P2P分布式技术构建Cassandra的内存集群,结合一致性哈希算法将所述内存集群形成一个环状,所述内存集群中的每一个节点负责部分键值范围的查询任务。日志RID模块,用来接受关系型数据库管理系统RDBMS发起的REDO日志的查询、插入、删除、恢复等,其中删除操作在Cassandra本身的Tomb Mark的基础增加内存记录的删除,以有效释放内存从而应对REDO日志生命周期较短的情景;恢复操作是将数据库恢复时多个REDO日志的串行操作转换为并行操作。受控归并模块,允许通过参数设置跟手工调度的方式来灵活管理Cassandra的归并操作,有效错开Cassandra的归并同REDO日志的读写,例如在RDMBS繁忙的期间即REDO 日志的RID操作高峰期,禁止Cassandra自身的归并操作,在RDBMS空闲期间即REDO日志的RID低谷期发起Cassandra的归并操作,从而有效提高Cassandra集群的性能。综上所述可以发现,本发明技术方案采用改造后的Cassandra集群存储REDO日志,将REDO日志尽量通过冗余复制保存在Cassandra集群的内存当中,将RDBMS的REDO日志极端情况下丢失数据的风险通过Cassandra的冗余复制策略加以控制,从而加强数据持久化的安全性,并且将通常的REDO日志的磁盘读写转换为对Cassandra集群内存的读写,从而提高REDO日志的读写性能,在此基础上提升数据库的整体性能。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccessMemory )、磁盘或光盘等。以上对本发明实施例所提供的技术方案,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种针对数据库重做日志的处理方法,其特征在于,包括 构建数据库Cassandra的内存集群; 将重做REDO日志通过冗余复制保存在Cassandra集群的内存中; 对存储在Cassandra集群的内存中的REDO日志进行处理操作。
2.根据权利要求I所述的方法,其特征在于 所述构建Cassandra的内存集群包括 采用点对点P2P分布式技术构建Cassandra的内存集群,结合一致性哈希算法将所述内存集群形成一个环状,所述内存集群中的每一个节点负责部分键值范围的查询任务。
3.根据权利要求I所述的方法,其特征在于 所述将REDO日志通过冗余复制保存在Cassandra集群的内存中包括 调整Cassandra集群的内存配置,将每份REDO日志在Cassandra集群的内存中的N个节点形成冗余,所述N大于I。
4.根据权利要求3所述的方法,其特征在于 所述N个节点具体为3个节点。
5.根据权利要求I所述的方法,其特征在于 所述对存储在Cassandra集群的内存中的REDO日志进行处理操作包括 对存储在Cassandra集群的内存中的REDO日志进行至少以下一项操作查询、插入、删除、恢复。
6.根据权利要求5所述的方法,其特征在于 所述删除包括修改Cassandra在内存中的数据删除策略,在Cassandra增加内存记录物理删除功能; 所述恢复包括将数据库恢复时多个REDO日志的串行操作转换为并行操作。
7.根据权利要求5所述的方法,其特征在于 所述对存储在Cassandra集群的内存中的REDO日志进行处理操作还包括改造Cassandra集群的归并操作,使得错开Cassandra集群的归并操作同REDO日志的读写操作。
8.一种数据库系统,其特征在于 包括至少一个以上内存集群服务器节点; 所述至少一个以上内存集群服务器节点构建成Cassandra的内存集群; 所述内存集群服务器节点按照冗余复制方式保存重做REDO日志,并对存储在Cassandra集群的内存中的REDO日志进行处理操作。
9.根据权利要求8所述的系统,其特征在于 所述内存集群服务器节点包括请求协调器、集群协调器、日志RID模块; 请求协调器,用于接收对REDO日志的操作请求; 集群协调器,采用P2P分布式技术构建Cassandra的内存集群,结合一致性哈希算法将所述内存集群形成一个环状,所述内存集群中的每一个节点负责部分键值范围的查询任务; 日志RID模块,根据请求协调器的请求,对存储在Cassandra集群的内存中的REDO日志进行处理操作,包括对存储在Cassandra集群的内存中的REDO日志进行至少以下一项操作查询、插入、删除、恢复。
10.根据权利要求9所述的系统,其特征在于 所述内存集群服务器节点还包括受控归并模块,用于改造Cassandra集群的归并操作,使得错开Cassandra集群的归并操作同REDO日志的读写操作。
全文摘要
本发明公开了一种针对数据库重做日志的处理方法及系统。该处理方法包括构建Cassandra的内存集群;将重做REDO日志通过冗余复制保存在Cassandra集群的内存中;对存储在Cassandra集群的内存中的REDO日志进行处理操作。本发明相应提供一种数据库系统包括至少一个以上内存集群服务器节点;所述至少一个以上内存集群服务器节点构建成Cassandra的内存集群;所述内存集群服务器节点按照冗余复制方式保存重做REDO日志,并对存储在Cassandra集群的内存中的REDO日志进行处理操作。本发明提供的技术方案能够提高数据处理的安全性。
文档编号G06F17/30GK102737131SQ20121020913
公开日2012年10月17日 申请日期2012年6月21日 优先权日2012年6月21日
发明者武良军, 袁晓鹏 申请人:广州从兴电子开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1