专利名称:一种关系数据库到无模式数据库异步转换系统及方法
技术领域:
本发明涉及互联网行业分布式数据库领域,尤其涉及一种关系数据库到无模式数据库异步转换系统及方法。
背景技术:
传统关系数据库是目前Web应用中存取数据的主要形式。然而,随着Web2. O、大数据、云应用等技术的发展,传统的关系数据库在I/O、可扩展性上遇到了瓶颈,在大数据存取和访问时效率急剧下降,在高可扩展性和高可用性方面也遇到难题。为了解决此问题,许多方案相继提出,比如分布式数据库、主从数据库、无模式数据库等。无模式数据库,是一种模式自由的数据库,其模式主要为关系、树、图、文档等多种方式。实际上,很难完全抛弃现有的关系数据库而直接使用无模式数据库。以关系数据库为主,无模式数据库为辅,成了工业界和产业界普遍接受的方案。现有的技术中,存在两类关系数据库与无模式数据库进行结合的方法(1)以用户插件的方法,将无模式数据库集成到关系数据库中,使得关系数据库同时支持关系操作和无模式操作。该方法缺点是大量的打开/关闭表的操作十分耗时,降低了数据库性能;
(2)混合使用关系数据库,以关系数据库为主,无模式数据库为辅,使用关系数据库进行大数据更新操作,采用某种机制将关系数据库模式和数据同步到无模式数据库。对于大数据的查询直接使用无模式数据库,而更新仍采用关系数据库。该方法优点是既解决了关系数据库中大数据的查询瓶颈问题,又解决了无模式数据库更新瓶颈问题。该方法的难点是如何将关系数据库模式和数据转换到无模式数据库。现有技术的解决方案及实现主要有两种方法(1)通过关系数据库触发器,将数据的变化记录到临时查询表。该查询表通常由ID、表名、行号、时间戳和操作等模式构成。然后将临时查询表的数据同步到目标无模式数据库;(2)对方法(I)改进,取消临时查询表,通过增加关系数据库自定义HTTP函数,直接将关系数据库数据变化增量通过HTTP协议发送给目标无模式数据库,实现数据和模式的同步。综上,现有关系数据库到无模式数据库的转换方法主要有以下问题(1)不管是触发器还是用户自定义函数,其严重影响关系数据库性能;(2)数据传输过程无法保证数据操作的有序性,容易造成数据的不一致;(3)同步方式会阻塞数据库进程,降低关系数据库的模式和数据更新性能。
发明内容
本发明的目的就是为了解决上述问题,提供一种关系数据库到无模式数据库异步转换系统及方法,将关系数据库的模式和数据通过该装置异步转换到无模式数据库,以关系数据库为主,无模式数据库为辅,用于解决传统关系数据库在大数据查询时的I/o瓶颈问题。为了实现上述目的,本发明采用如下技术方案—种关系数据库到无模式数据库异步转换系统,包括关系数据库,所述关系数据库将信号传输给日志监听器,所述日志监听器将信号传输给模式调整器,所述模式调整器将信号传输给无模式数据库,所述日志监听器还将信号传输给单元格状态缓存器,所述单元格状态缓存器将信号传输给单元格状态回写器,所述单元格状态回写器将信号传输给无模式数据库。所述关系数据库是关系数据库到无模式数据库异步转换系统的源。所述无模式数据库是关系数据库到无模式数据库异步转换系统的目标。所述日志监听器用于监听关系数据库的日志。基于行的关系数据库二进制日志包括模式更新与数据更新,所述模式更新记录着每次模式修改的SQL语句,所述数据更新记录着每次事务中以行为单位变化前后的数据。对于插入操作,监听得到的变化前数据为NULL,变化后数据为新增数据;对于更新操作,监听得到修改前后数据,对于删除操作,监听得到的变化前数据为被删除数据,变化后数据为NULL。所述单元格状态缓存器负责将日志监听器监听到的基于行的变化数据拆分为单元格状态。所述模式调整器负责将日志监听器监听到的模式变化映射到无模式数据库。映射规则如下关系数据库中的一对一关系映射为无模式数据库中的关系结构,关系数据库中的一对多或多对一关系映射为无模式数据库中的树型结构,关系数据库中的多对多关系映射为无模式数据库的图型结构。关系数据库数据库名映射为无模式数据库名,关系数据库的表名映射为无模式数据库集合名(Collection),关系数据库的列索引映射为无模式数据库的列索引(Index)。所述单元格状态回写器负责将单元格状态缓存器中的单元格状态键值序对写入到无模式数据库。上述关系数据库到无模式数据库异步转换系统所采用的转换方法,具体工作步骤如下步骤(I):日志监听器监听到基于行的关系数据库二进制日志,并进行解析,得到变化的数据和模式,若监听到的为变化数据,转步骤(2),反之转步骤(3)。步骤(2):日志监听器将基于行的变化前后的数据拆分为单元格状态,若单元格数据发生变化,修改单元格状态键值序对V中的值和修订版本,若单元格数据未发生变化,则不进行任何处理,按此方法将单元格状态存储在单元格状态缓存器中,转步骤(I)。步骤(3):日志监听器对监听到的模式变化SQL语句进行解析,将单元格状态缓存器中的所有单元格状态回写到无模式数据库,转步骤(4)。4)根据日志监听器监听的模式修改SQL语句,模式调整器按源关系数据库模式变化修改目标无模式数据库模式,转步骤(I)。所述步骤(3)的解析过程分为以下四个步骤步骤(3-1):若单元格状态基础版本为I且修订版本为0,说明新增单元格被删除,不做任何处理;步骤(3-2):若单元格状态基础版本大于I且修订版本为0,说明新增单元格修改后被删除,需要在无模式数据库中删除对应数据;步骤(3-3):若单元格状态基础版本为I且修订版本不为0,说明为新增单元格,需要将单元格状态回写到无模式数据库;
步骤(3-4):若单元格状态基础版本大于O且修订版本不为0,说明单元格被修改,需要修正无模式数据库对应数据。上述关系数据库到无模式数据库异步转换系统涉及到以下几个术语所述单元格是指单元格状态定义中的关系数据库二维表中的数据。所述关系数据库是由行列组成的数据单元格构成。按照行列定位单元格,由主键键值序对定位数据库记录所在行,由列名定位数据记录所在列。每个单元格状态定义了一个键值序对K — V,其中K定义为三元组〈表名,主键键值序对,列名〉,而V定义为二元组〈列值,修订版本〉。修订版本记录着该单元格数据的版本信息,可以用正整数表示。新增加数据初始版本为I,每次单元格数据发生变化后,版本加I。当单元格删除后,版本修改为O0所述单元格状态修订版本为单元格状态在缓存器中的最新版本。所述单元格状态基础版本为单元格状态在缓存器中的最初修订版本。对于新增加数据,拆分为单元格状态,其修订版本和基础版本为I ;对于修改数据,拆分为单元格状态,若该单元格不在单元格状态缓存器中,其修订版本和基础版本为2,若该单元格在单元格状态缓存器中,其修订版本为原修订版本加I,基础版本为原单元格状态基础版本;对于删除数据,修订版本为O。若单元格在单元格状态缓存器中,基础版本为原单元格基础版本,若单元格不在单元格状态缓存器中,基础版本为O。本发明的有益效果I无需影响关系数据库的性能就可以实现关系数据库到无模式数据库的异步转换功能;2异步转换装置可以保证数据传输过程中数据的有序性;3异步数据转换过程中不会造成关系数据库进程的阻塞;4将关系数据库的模式和数据通过该装置异步到转换到无模式数据库,以关系数据库为主,无模式数据库为辅,用于解决传统关系数据库在大数据查询时的I/o瓶颈问题。
图1关系数据库到无模式数据库异步转换方法及装置的架构图;图2根据关系数据库变化数据去修正单元格状态的流程图;图3单元格状态集回写到无模式数据库的流程图;其中,101、关系数据库,102、日志监听器,103、模式调整器,104、单元格状态缓存器,105、单元格状态回写器,106、无模式数据库。
具体实施例方式下面结合附图与实施例对本发明作进一步说明。如图1所示,一种关系数据库到无模式数据库异步转换系统,包括关系数据库101,所述关系数据库101将信号传输给日志监听器102,所述日志监听器102将信号传输给模式调整器103,所述模式调整器103将信号传输给无模式数据库106,所述日志监听器102还将信号传输给单元格状态缓存器104,所述单元格状态缓存器104将信号传输给单元格状态回写器105,所述单元格状态回写器105将信号传输给无模式数据库106。
所述关系数据库101是关系数据库101到无模式数据库106异步转换装置的源。所述无模式数据库106是关系数据库101到无模式数据库106异步转换装置的目标。所述日志监听器102用于监听关系数据库101的日志。基于行的关系数据库101二进制日志包括模式更新与数据更新,所述模式更新记录着每次模式修改的SQL语句,所述数据更新记录着每次事务中以行为单位变化前后的数据。对于插入操作,监听得到的变化前数据为NULL,变化后数据为新增数据;对于更新操作,监听得到修改前后数据,对于删除操作,监听得到的变化前数据为被删除数据,变化后数据为NULL。所述单元格状态缓存器104负责将日志监听器102监听到的基于行的变化数据拆分为单元格。所述模式调整器103负责将日志监听器102监听到的模式变化映射到无模式数据库106。映射规则如下关系数据库101中的一对一关系映射为无模式数据库106中的关系结构,关系数据库101中的一对多或多对一关系映射为无模式数据库106中的树型结构,关系数据库101中的多对多关系映射为无模式数据库106的图型结构。关系数据库101的数据库名映射为无模式数据库106的数据库名,关系数据库101的表名映射为无模式数据库106的集合名(Collection),关系数据库101的列索引映射为无模式数据库106的列索引(Index)。所述单元格状态回写器105负责将单元格状态缓存器104中的单元格状态键值序对写入到无模式数据库106。如图2所示,根据关系数据库101变化数据去修正单元格状态缓存器104中的单元格状态的流程图,给出了单元格状态生成具体工作过程。步骤(110):日志监听器102监听关系数据库101产生的数据库二进制日志,解析出基于行的变化数据和模式修改SQL语句;步骤(111):判断解析日志信息是数据变化还是模式变化,若是数据变化进入步骤(112),若是模式变化进入步骤(126);步骤(112):若日志信息为数据变化,继续判断单元格状态缓存器104使用空间是否达到阈值,若达到就进入步骤(126);若未达到就进入步骤(113)根据变化数据修正单元格状态缓存器104中的单元格状态;步骤(113):判断日志监听器102解析出的数据变化类型;若变化类型为增加就进入步骤(114);若变化类型为修改就进入步骤(117);若变化类型为删除就进入步骤(122);步骤(114):数据变化类型为增加变化前数据为NULL,变化后数据为新增数据;进入步骤(115);步骤(115):将每条增加数据按列拆分为多个单元格状态,将单元格状态保存在单元格状态缓存器104 ;进入步骤(116);步骤(116):每个单元格状态的基础版本和修订版本设置为I ;进入步骤(128);步骤(117):数据变化类型为修改变化前数据为修改前数据,变化后数据为修改后数据;步骤(118):将每条修改后数据按列拆分为单元格状态,仅仅处理值发生变化的单元格状态;
步骤(119):判断单元格状态是否已经存在于单元格状态缓存器104 ;如果在就进入步骤(120);如果不在就进入步骤(121);步骤(120):若单元格状态已经存在于单元格状态缓存器104,则修正该单元格状态的值,将单元格状态修订版本加I ;进入步骤(128);步骤(121):若单元格状态不在单元格状态缓存器104,则修正该单元格状态的值,将单元格状态基础版本和修订版本设置为2,保存在单元格状态缓存器104 ;进入步骤(128);步骤(122):数据变化类型为删除变化前数据为删除前数据,变化后数据为NULL ;进入步骤(123);步骤(123):将每行删除数据按列拆分为单元格状态,保存在单元格状态缓存器104 ;进入步骤(124);步骤(124):单元格状态值设为NULL ;进入步骤(125);步骤(125):单元格状态修订版本设为O ;进入步骤(128);步骤(126):若日志信息为模式变化,使用单元格状态回写器105将单元格状态缓存器104中的所有单元格状态回写到无模式数据库106 ;进入步骤(127);步骤(127):根据日志监听器102解析出的模式变化SQL语句,使用模式调整器103去修正目标无模式数据库106的模式。步骤(128):判断是否结束,如果是就结束,如果否就返回步骤(111)。所述步骤(126)的具体步骤如图(3)所示,图3为单元格状态缓存器104中的单元格状态集回写到无模式数据库106的流程图,步骤(130):从单元格状态缓存器104中取出一个单元格状态;进入步骤(131);步骤(131):判断该单兀格状态基础版本;如果基础版本为I则进入步骤(132);否则进入步骤(137);步骤(132):若该单元格状态基础版本为1,说明该单元格在单元格状态缓存器104中最初为新增数据;步骤(133):判断该单元格状态修订版本是否为O ;如果修订版本为O就进入步骤(134);否则进入步骤(135);步骤(134):若单元格状态修订版本为0,说明该单元格为新增数据后被删除,不做任何处理;进入步骤(143);步骤(135):若单元格状态修订版本不为0,说明单元格为新增数据;进入步骤(136);步骤(136):使用单元格状态回写器105将该单元格状态作为新增数据回写到无模式数据库106 ;进入步骤(143);步骤(137):若该单元格状态基础版本大于1,说明该单元格在单元格状态缓存器104中最初为修改数据;进入步骤(138);步骤(138):判断该单元格状态修订版本;如果是O就进入步骤(139);否则进入步骤(141);步骤(139):若单元格状态修订版本为0,说明该单元格修改后被删除;进入步骤(140);
步骤(140):使用单元格状态回写器105将该单元格在无模式数据库106中对应的数据项删除,进入步骤(143);步骤(141):若单元格状态修订版本不为0,说明单元格为修改数据;进入步骤(142);步骤(142):使用单元格状态回写器105将该单元格状态最新值修正无模式数据库106中对应的数据项的值;进入步骤(143);步骤(143):判断是否结束,如果是就结束,如果否就返回步骤(130)。上述虽然结合附图对本发明的具体实施方式
进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
权利要求
1.一种关系数据库到无模式数据库异步转换系统,其特征是,包括关系数据库,所述关系数据库将信号传输给日志监听器,所述日志监听器将信号传输给模式调整器,所述模式调整器将信号传输给无模式数据库,所述日志监听器还将信号传输给单元格状态缓存器, 所述单元格状态缓存器将信号传输给单元格状态回写器,所述单元格状态回写器将信号传输给无模式数据库。
2.如权利要求1所述的一种关系数据库到无模式数据库异步转换系统,其特征是,所述关系数据库是关系数据库到无模式数据库异步转换系统的源。
3.如权利要求1所述的一种关系数据库到无模式数据库异步转换系统,其特征是,所述无模式数据库是关系数据库到无模式数据库异步转换系统的目标。
4.如权利要求1所述的一种关系数据库到无模式数据库异步转换系统,其特征是,所述日志监听器用于监听关系数据库的日志;基于行的关系数据库二进制日志包括模式更新与数据更新,所述模式更新记录着每次模式修改的SQL语句,所述数据更新记录着每次事务中以行为单位变化前后的数据;对于插入操作,监听得到的变化前数据为NULL,变化后数据为新增数据;对于更新操作,监听得到修改前后数据,对于删除操作,监听得到的变化前数据为被删除数据,变化后数据为NULL。
5.如权利要求1所述的一种关系数据库到无模式数据库异步转换系统,其特征是,所述单元格状态缓存器负责将日志监听器监听到的基于行的变化数据拆分为单元格。
6.如权利要求1所述的一种关系数据库到无模式数据库异步转换系统,其特征是,所述模式调整器负责将日志监听器监听到的模式变化映射到无模式数据库;映射规则如下 关系数据库中的一对一关系映射为无模式数据库中的关系结构,关系数据库中的一对多或多对一关系映射为无模式数据库中的树型结构,关系数据库中的多对多关系映射为无模式数据库的图型结构;关系数据库数据库名映射为无模式数据库名,关系数据库的表名映射为无模式数据库集合名,关系数据库的列索引映射为无模式数据库的列索引。
7.如权利要求1所述的一种关系数据库到无模式数据库异步转换系统,其特征是,所述单元格状态回写器负责将单元格状态缓存器中的单元格状态键值序对写入到无模式数据库。
8.如权利要求1所述的一种关系数据库到无模式数据库异步转换系统所采用的转换方法,其特征是,具体工作步骤如下步骤(I):日志监听器监听到基于行的关系数据库二进制日志,并进行解析,得到变化的数据和模式,若监听到的为变化数据,转步骤(2),反之转步骤(3);步骤(2):日志监听器将基于行的变化前后的数据拆分为单元格状态,若单元格数据发生变化,修改单元格状态键值序对V中的值和修订版本,若单元格数据未发生变化,则不进行任何处理,按此方法将单元格状态存储在单元格状态缓存器中,转步骤(I);步骤(3):日志监听器对监听到的模式变化SQL语句进行解析,将单元格状态缓存器中的所有单元格状态回写到无模式数据库,转步骤(4);4)根据日志监听器监听的模式修改SQL语句,模式调整器按源关系数据库模式变化修改目标无模式数据库模式,转步骤(I)。
9.如权利要求8所述的一种关系数据库到无模式数据库异步转换方法,其特征是,所述步骤(3)的解析过程分为以下四个步骤.步骤(3-1):若单元格状态基础版本为I且修订版本为0,说明新增单元格被删除,不做任何处理;步骤(3-2):若单元格状态基础版本大于I且修订版本为0,说明新增单元格修改后被删除,需要在无模式数据库中删除对应数据;步骤(3-3):若单元格状态基础版本为I且修订版本不为0,说明为新增单元格,需要将单元格状态回写到无模式数据库;步骤(3-4):若单元格状态基础版本大于O且修订版本不为0,说明单元格被修改,需要修正无模式数据库对应数据。
全文摘要
本发明公开了一种关系数据库到无模式数据库异步转换系统及方法,包括关系数据库,所述关系数据库将信号传输给日志监听器,所述日志监听器将信号传输给模式调整器,所述模式调整器将信号传输给无模式数据库,所述日志监听器还将信号传输给单元格状态缓存器,所述单元格状态缓存器将信号传输给单元格状态回写器,所述单元格状态回写器将信号传输给无模式数据库。本发明在不影响关系数据库性能前提下将关系数据库的模式和数据通过该装置异步到转换到无模式数据库,异步方式不会造成关系数据库阻塞,以关系数据库为主,无模式数据库为辅,用于解决传统关系数据库在大数据查询时的I/O瓶颈问题。
文档编号G06F17/30GK102999629SQ20121053661
公开日2013年3月27日 申请日期2012年12月12日 优先权日2012年12月12日
发明者马坤, 杨波, 陈广伟 申请人:济南大学