一种多数据库数据管理方法及系统的制作方法

文档序号:6537309阅读:157来源:国知局
一种多数据库数据管理方法及系统的制作方法
【专利摘要】本发明公开一种多数据库数据管理方法及系统,管理方法包括:获取需要存储的实体,作为待存储实体;提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中;如果所述待存储实体标识还包括第二数据库属性,则生成一个用于标识所述待存储实体的关联标识,将所述关联标识保存在第一数据库中,并同时提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中。本发明减少了存储和查询时所占内存消耗,同时,在使用多数据库混合存储时,数据的分割和组合透明化,可自动实现数据的分割和存储,大大简化开发难度。同时查询时也实现自动组合。
【专利说明】一种多数据库数据管理方法及系统
【技术领域】
[0001]本发明设计数据库管理相关【技术领域】,特别是一种多数据库数据管理方法及系统。
【背景技术】
[0002]MySQL是一种关系型数据库管理系统,将数据保存在不同的表中。MongoDB是一个基于分布式文件存储的数据库,一个介于关系数据库和非关系数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。
[0003]在WEB系统中,需要将一条数据的一部分字段存放到MySQL,另一部分存放到MongoDB中,现有的处理方式是,只能先把数据分割,MySQL的数据存放MySQL后,再将MongoDB的数据存放MongoDB。在WEB系统中,查询一条数据时,也只能先从MySQL中查询出一条数据,再从MongoDB中查询对应的数据,组装后获取完整的数据。
[0004]现有的解决方案通常为:
[0005]1.创建一个与MySQL相对应的实体,并编写基于iBatis的映射文件,使用iBatis框架将实体映射为MySQL的一条记录,并使用iBatis框架存取数据。
[0006]2.再创建一个与MongoDB相对应的实体,使用MongoDB客户端存放取数据。
[0007]3.若是存放数据时,需要将数据分割为MySQL映射的实体,MongoDB映射的实体,再存放,若是取数据时,需要先将MySQL和MongoDB的数据取出后,再组装成第三个实体。
[0008]因此,至少需要三个实体,一份映射文件才能完成一条数据的存取。

【发明内容】

[0009]基于此,有必要针对现有技术在进行多数据库存储和查询时,需要建立多个实体与多个数据库对应,导致内存较多,资源浪费较大的技术问题,提供一种多数据库数据管理方法及系统。
[0010]一种多数据库数据管理方法,包括:
[0011]获取需要存储的实体,作为待存储实体;
[0012]提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,所述第一数据库属性为在待存储实体中设有第一数据库标识的属性;
[0013]判断所述待存储实体是否标识还包括第二数据库属性,如果所述待存储实体标识还包括第二数据库属性,则生成一个用于标识所述待存储实体的关联标识,将所述关联标识保存在第一数据库中,并同时提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,否则结束存储,所述第二数据库属性为在待存储实体中设有第二数据库标识的属性。
[0014]一种多数据库数据管理系统,包括:
[0015]待存储实体获取模块,用于获取需要存储的实体,作为待存储实体;
[0016]第一数据库属性存储模块,用于提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,所述第一数据库属性为在待存储实体中设有第一数据库标识的属性;
[0017]第二数据库属性存储模块,用于判断所述待存储实体是否标识还包括第二数据库属性,如果所述待存储实体标识还包括第二数据库属性,则生成一个用于标识所述待存储实体的关联标识,将所述关联标识保存在第一数据库中,并同时提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,否则结束存储,所述第二数据库属性为在待存储实体中设有第二数据库标识的属性。
[0018]本发明通过采用一个实体,分别对应多个数据库,先将实体的第一数据库属性的属性值保存到第一数据库,然后通过判断该实体是否标识有第二数据库属性,将第二数据库属性的属性值保存到第二数据库中。本发明减少了实体的应用,从而减少了存储和查询时所占内存消耗,同时,在使用多数据库混合存储时,数据的分割和组合透明化,可自动实现数据的分割和存储,大大简化开发难度。同时查询时也实现自动组合。
【专利附图】

【附图说明】
[0019]图1为本发明一种多数据库数据管理方法的工作流程图;
[0020]图2为本发明存储方面的一个例子的工作流程图;
[0021]图3为本发明存储方面的一个例子的工作流程图;
[0022]图4为本发明一种多数据库数据管理系统的结构模块图。
【具体实施方式】
[0023]下面结合附图和具体实施例对本发明做进一步详细的说明。
[0024]如图1所示为本发明一种多数据库数据管理方法的工作流程图,包括:
[0025]步骤SlOl,获取需要存储的实体,作为待存储实体;
[0026]步骤S102,提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,所述第一数据库属性为在待存储实体中设有第一数据库标识的属性;
[0027]步骤S103,判断所述待存储实体是否标识还包括第二数据库属性,如果所述待存储实体标识还包括第二数据库属性,则生成一个用于标识所述待存储实体的关联标识,将所述关联标识保存在第一数据库中,并同时提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,否则结束存储,所述第二数据库属性为在待存储实体中设有第二数据库标识的属性。
[0028]其中,步骤SlOl的待存储实体由客户建立,系统获取该待存储实体后,执行步骤S102。一个实体可以包括多个属性,对于不同的属性,其是需要保存到第一数据库还是保存到第二数据库,由客户在建立该实体时指定,通过一个对每个属性增加一个标识可以实现。其中,对于仅需要在两个数据库之间选择的属性,其标识可以简单地通过一个布尔值实现。例如第一数据库标识为0,而第二数据库标识为I。
[0029]步骤S103中,对于第二数据库属性的保存,通过一个关联标识实现,该关联标识唯一指定该待存储实体,同时,由于该关联标识保存在第一数据库中,因此,能够将第一数据库中该待存储实体的第一数据库属性的属性值与第二数据库中该待存储实体的第二数据库属性的属性值进行关联。同时,为了保持待存储实体与第一数据库中所存储数据的统一,也可以将该关联标识保存在待存储实体中,并返回给用户。用户在后续查询时,可以附带上该关联标识,也可以从第一数据库中获取该关联标识。
[0030]本发明通过一个实体,则实现了在多个数据库中透明存放,对于Web应用中使用混合存储(MySQL+MongoDB)或者其他关系型数据库和NoSQL数据时,本发明可以自动实现数据的分割存储(分割的规则由使用者自行定义)。
[0031]在其中一个实施例中,所述判断所述待存储实体是否标识还包括第二数据库属性,具体包括:
[0032]获取所述待存储实体的注释信息,如果所述注释信息中包括了第二数据库相关标识,则判断所述待存储实体还包括第二数据库属性,否则判断所述待存储实体不包括第二数据库属性。
[0033]实体中可以增加注释信息,例如对于Java实体来说,可以通过Annotation技术增加对Java实体的注释。Annotations提供一些本来不属于程序的数据,比如:一段代码的作者或者告诉编译器禁止一些特殊的错误。An annotation对代码的执行没有什么影响。Annotations 使用 Oannotation 的形式应用于代码:类(class),属性(attribute),方法(method)等等。一个Annotation出现在上面提到的开始位置,而且一般只有一行,也可以包含有任意的参数。本实施例可以利用该方式,在实体中关联上一个第二数据库相关标识。该第二数据库相关标识由用户在建立实体时生成。例如,对于第一数据库为MySQL,而第二数据库为MongoDB的方式,该第二数据库相关标识可以为一个布尔值:RelatedMongoDB0如果RelatedMongoDB=I,则判断所述待存储实体还包括第二数据库属性,如果RelatedMongoDB=O,则判断所述待存储实体不包括第二数据库属性。
[0034]在其中一个实施例中,所述提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,具体包括:
[0035]获取用于标识所述第一数据库与所述待存储实体中的第一数据库属性之间的映射关系的第一数据库映射文件,根据所述第一数据库映射文件,将所述待存储实体中第一数据库属性的属性值,保存到第一数据库中。
[0036]其中,第一数据库映射文件指示了待存储实体中的第一数据库属性是如何保存在第一数据库中,例如指定第一数据库属性与第一数据库中第几个表的第几个字段对应等。
[0037]当待存储实体为Java实体时,可以采用iBatis获取第一数据库映射文件。其中iBatis为一种使用Java编写的ORM映射(Java对象与数据库表的映射)框架,使用者,只需要定义Java对象与数据库表的对应关系,编写SQL语句,即可以实现Java对象到数据库的存储功能。
[0038]在其中一个实施例中,所述提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,具体包括:
[0039]属性初始化步骤,将所述待存储实体的所有属性设定为未筛选属性,执行当前属性获取步骤;
[0040]当前属性获取步骤,从所述待存储实体中选择一个未筛选属性作为当前属性,执行当前属性筛选步骤;
[0041]当前属性筛选步骤,如果当前属性属于第二数据库属性,则执行第二数据库属性值获取步骤,否则执行属性判断步骤;[0042]第二数据库属性值获取步骤,获取当前属性的属性值作为第二数据库属性值,执行属性判断步骤;
[0043]属性判断步骤,设定当前属性为已筛选属性,如果所述待存储实体中还有未筛选属性,则执行当前属性获取步骤,否则执行属性值保存步骤;
[0044]属性值保存步骤,将所有经过当前属性筛选步骤得到的第二数据库属性值与所述关联标识关联地保存到第二数据库。
[0045]在其中一个实施例中,还包括查询步骤,具体包括:
[0046]响应数据查询请求,获取待查询实体;
[0047]从第一数据库中获取所述待查询实体的第一数据库属性的属性值;
[0048]判断所述待存储实体是否标识还包括第二数据库属性,如果所述待查询实体标识还包括第二数据库属性,则从第一数据库中获取所述关联标识,根据所述关联标识从第二数据库中获取所述待查询实体的第二数据库属性的属性值;
[0049]将所述第一数据库属性的属性值和第二数据库属性的属性值封装到所述待查询实体中。
[0050]如图2所示为本发明存储方面的一个例子,其中第一数据库为MySQL,第二数据库为MongoDB,实体为Java实体,本发明所描述的技术方案,采用了 API (ApplicationProgramming Interface,应用程序编程接口)进行封装,具体包括:
[0051]步骤S201,当API被调用,获取要存储的对象后,首先通过iBatis框架找到Java实体对应的映射文件,并在MySQL中存储数据。
[0052]步骤S202,根据Java反射技术获取当前Java实体的类信息,使用annotation技术判断当前实体是否有本发明特定的annotation (RelatedMongoDB),若有,则执行步骤S203,若无,则执行步骤S207。
[0053]步骤S203,生成关联ID,并根据Java反射技术获取当前Java实体的属性列表,依次遍历每个属性。
[0054]步骤S204,判断是否是属于MongoDB的属性,若是,则执行步骤S205,若不是,重复步骤S204判断下一属性是否是MongoDB的属性,直到Java实体的属性全部检查完毕,执行步骤S206。
[0055]步骤S205,根据属性对象,使用Java反射技术获取属性的属性值,重复步骤S204判断下一个属性。
[0056]步骤S206,将筛选出的属性值与关联ID关联地存储到MongoDB中,并使用Javaannotation技术将关联ID保存到Java实体中。
[0057]步骤S207,返回Java实体,结束。
[0058]如图3所示为本发明查询方面的一个例子,其中第一数据库为MySQL,第二数据库为MongoDB,实体为Java实体,本发明所描述的技术方案,采用了 API (ApplicationProgramming Interface,应用程序编程接口)进行封装,具体包括:
[0059]步骤S301,当API被调用,根据查询的Java实体找到对应的iBatis映射文件。
[0060]步骤S302,根据映射文件从MySQL中查询出数据。
[0061]步骤S303,使用Java annotation技术,判断当前Java实体是否有属于MongoDB的属性,若有,则执行步骤S304,若无,则执行步骤S307。[0062]步骤S304,再次使用Java annotation技术找到关联Id。
[0063]步骤S305,从MongoDB中使用关联Id查询出数据。
[0064]步骤S306,将MySQL和MongoDB查询的数据做组装。
[0065]步骤S307,返回数据,结束。
[0066]如图4所示为本发明一种多数据库数据管理系统的结构模块图,包括:
[0067]待存储实体获取模块401,用于获取需要存储的实体,作为待存储实体;
[0068]第一数据库属性存储模块402,用于提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,所述第一数据库属性为在待存储实体中设有第一数据库标识的属性;
[0069]第二数据库属性存储模块403,用于判断所述待存储实体是否标识还包括第二数据库属性,如果所述待存储实体标识还包括第二数据库属性,则生成一个用于标识所述待存储实体的关联标识,将所述关联标识保存在第一数据库中,并同时提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,否则结束存储,所述第二数据库属性为在待存储实体中设有第二数据库标识的属性。
[0070]在其中一个实施例中,所述判断所述待存储实体是否标识还包括第二数据库属性,具体包括:
[0071]获取所述待存储实体的注释信息,如果所述注释信息中包括了第二数据库相关标识,则判断所述待存储实体还包括第二数据库属性,否则判断所述待存储实体不包括第二数据库属性。
[0072]在其中一个实施例中,所述提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,具体包括:
[0073]获取用于标识所述第一数据库与所述待存储实体中的第一数据库属性之间的映射关系的第一数据库映射文件,根据所述第一数据库映射文件,将所述待存储实体中第一数据库属性的属性值,保存到第一数据库中。
[0074]在其中一个实施例中,所述提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,具体包括:
[0075]属性初始化子模块,用于将所述待存储实体的所有属性设定为未筛选属性,执行当前属性获取子模块;
[0076]当前属性获取子模块,用于从所述待存储实体中选择一个未筛选属性作为当前属性,执行当前属性筛选子模块;
[0077]当前属性筛选子模块,用于如果当前属性属于第二数据库属性,则执行第二数据库属性值获取子模块,否则执行属性判断子模块;
[0078]第二数据库属性值获取子模块,用于获取当前属性的属性值作为第二数据库属性值,执行属性判断子模块;
[0079]属性判断子模块,用于设定当前属性为已筛选属性,如果所述待存储实体中还有未筛选属性,则执行当前属性获取子模块,否则执行属性值保存子模块;
[0080]属性值保存子模块,用于将所有经过当前属性筛选子模块得到的第二数据库属性值与所述关联标识关联地保存到第二数据库。
[0081]在其中一个实施例中,还包括查询模块,具体用于:[0082]响应数据查询请求,获取待查询实体;
[0083]从第一数据库中获取所述待查询实体的第一数据库属性的属性值;
[0084]判断所述待存储实体是否标识还包括第二数据库属性,如果所述待查询实体标识还包括第二数据库属性,则从第一数据库中获取所述关联标识,根据所述关联标识从第二数据库中获取所述待查询实体的第二数据库属性的属性值;
[0085]将所述第一数据库属性的属性值和第二数据库属性的属性值封装到所述待查询实体中。
[0086]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种多数据库数据管理方法,其特征在于,包括: 获取需要存储的实体,作为待存储实体; 提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,所述第一数据库属性为在待存储实体中设有第一数据库标识的属性; 判断所述待存储实体是否标识还包括第二数据库属性,如果所述待存储实体标识还包括第二数据库属性,则生成一个用于标识所述待存储实体的关联标识,将所述关联标识保存在第一数据库中,并同时提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,否则结束存储,所述第二数据库属性为在待存储实体中设有第二数据库标识的属性。
2.根据权利要求1所述的多数据库数据管理方法,其特征在于,所述判断所述待存储实体是否标识还包括第二数据库属性,具体包括: 获取所述待存储实体的注释信息,如果所述注释信息中包括了第二数据库相关标识,则判断所述待存储实体还包括第二数据库属性,否则判断所述待存储实体不包括第二数据库属性。
3.根据权利要求1所述的多数据库数据管理方法,其特征在于,所述提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,具体包括: 获取用于标识所述第一数据库与所述待存储实体中的第一数据库属性之间的映射关系的第一数据库映射文件,根据所述第一数据库映射文件,将所述待存储实体中第一数据库属性的属性值,保 存到第一数据库中。
4.根据权利要求1所述的多数据库数据管理方法,其特征在于,所述提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,具体包括: 属性初始化步骤,将所述待存储实体的所有属性设定为未筛选属性,执行当前属性获取步骤; 当前属性获取步骤,从所述待存储实体中选择一个未筛选属性作为当前属性,执行当前属性筛选步骤; 当前属性筛选步骤,如果当前属性属于第二数据库属性,则执行第二数据库属性值获取步骤,否则执行属性判断步骤; 第二数据库属性值获取步骤,获取当前属性的属性值作为第二数据库属性值,执行属性判断步骤; 属性判断步骤,设定当前属性为已筛选属性,如果所述待存储实体中还有未筛选属性,则执行当前属性获取步骤,否则执行属性值保存步骤; 属性值保存步骤,将所有经过当前属性筛选步骤得到的第二数据库属性值与所述关联标识关联地保存到第二数据库。
5.根据权利要求1所述的多数据库数据管理方法,其特征在于,还包括查询步骤,具体包括: 响应数据查询请求,获取待查询实体; 从第一数据库中获取所述待查询实体的第一数据库属性的属性值; 判断所述待存储实体是否标识还包括第二数据库属性,如果所述待查询实体标识还包括第二数据库属性,则从第一数据库中获取所述关联标识,根据所述关联标识从第二数据库中获取所述待查询实体的第二数据库属性的属性值; 将所述第一数据库属性的属性值和第二数据库属性的属性值封装到所述待查询实体中。
6.一种多数据库数据管理系统,其特征在于,包括: 待存储实体获取模块,用于获取需要存储的实体,作为待存储实体; 第一数据库属性存储模块,用于提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,所述第一数据库属性为在待存储实体中设有第一数据库标识的属性;第二数据库属性存储模块,用于判断所述待存储实体是否标识还包括第二数据库属性,如果所述待存储实体标识还包括第二数据库属性,则生成一个用于标识所述待存储实体的关联标识,将所述关联标识保存在第一数据库中,并同时提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,否则结束存储,所述第二数据库属性为在待存储实体中设有第二数据库标识的属性。
7.根据权利要求6所述的多数据库数据管理系统,其特征在于,所述判断所述待存储实体是否标识还包括第二数据库属性,具体包括: 获取所述待存储实体的注释信息,如果所述注释信息中包括了第二数据库相关标识,则判断所述待存储实体还包括第二数据库属性,否则判断所述待存储实体不包括第二数据库属性。
8.根据权利要求6所述的多数据库数据管理系统,其特征在于,所述提取所述待存储实体中第一数据库属性的属性值,保存到第一数据库中,具体包括:` 获取用于标识所述第一数据库与所述待存储实体中的第一数据库属性之间的映射关系的第一数据库映射文件,根据所述第一数据库映射文件,将所述待存储实体中第一数据库属性的属性值,保存到第一数据库中。
9.根据权利要求6所述的多数据库数据管理系统,其特征在于,所述提取所述待存储实体中第二数据库属性的属性值,与所述关联标识关联地保存到第二数据库中,具体包括: 属性初始化子模块,用于将所述待存储实体的所有属性设定为未筛选属性,执行当前属性获取子模块; 当前属性获取子模块,用于从所述待存储实体中选择一个未筛选属性作为当前属性,执行当前属性筛选子模块; 当前属性筛选子模块,用于如果当前属性属于第二数据库属性,则执行第二数据库属性值获取子模块,否则执行属性判断子模块; 第二数据库属性值获取子模块,用于获取当前属性的属性值作为第二数据库属性值,执行属性判断子模块; 属性判断子模块,用于设定当前属性为已筛选属性,如果所述待存储实体中还有未筛选属性,则执行当前属性获取子模块,否则执行属性值保存子模块; 属性值保存子模块,用于将所有经过当前属性筛选子模块得到的第二数据库属性值与所述关联标识关联地保存到第二数据库。
10.根据权利要求6所述的多数据库数据管理系统,其特征在于,还包括查询模块,具体用于: 响应数据查询请求,获取待查询实体; 从第一数据库中获取所述待查询实体的第一数据库属性的属性值; 判断所述待存储实体是否标识还包括第二数据库属性,如果所述待查询实体标识还包括第二数据库属性,则从第一数据库中获取所述关联标识,根据所述关联标识从第二数据库中获取所述待查询实体的第二数据库属性的属性值; 将所述第一数据库属性的属性值和第二数据库属性的属性值封装到所述待查询实体中。
【文档编号】G06F17/30GK103778239SQ201410042257
【公开日】2014年5月7日 申请日期:2014年1月28日 优先权日:2014年1月28日
【发明者】刘锟洋, 雷宁 申请人:北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1