服务器及数据库访问方法

文档序号:6491267阅读:343来源:国知局
服务器及数据库访问方法
【专利摘要】本发明提供一种服务器及数据库访问方法,服务器包括接收模块用于接收第一访问语句;访问规则路由模块用于获取第一访问语句中携带的第一操作指令以及数据表的标识信息,在所述第一操作指令为非关系型数据库可进行的操作时,判断标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;语义转译模块用于在判断出标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将非关系型数据库确定为目标非关系型数据库,并将第一操作指令转译为目标非关系型数据库可解析的第二操作指令;连接协议适配模块用于将第二操作指令和数据表的标识信息发送至目标非关系型数据库,利用非关系型数据库满足了对数据库高并发读写等方面的需求。
【专利说明】服务器及数据库访问方法
【技术领域】
[0001]本发明涉及数据库技术,尤其涉及一种服务器及数据库访问方法。
【背景技术】
[0002]随着互联网web2.0网站的兴起,对超大规模和高并发的社会性网络服务(SocialNetworking Services, SNS)类型的web2.0纯动态网站的数据查询需求也相应增加。
[0003]关系型数据库是建立在关系模型基础上的数据库,利用结构化查询语言(Structured Query Language, SQL),执行对关系型数据库中数据的检索和操作。关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但是却限制了关系型数据库的性能。现有技术中所采用的关系型数据库已无法满足web2.0网站的查询需求,在高并发读写需求、对海量数据的高效率存储和访问需求、高可扩展性和高可用性需求等方面存在不足。而非关系型数据库以键值对存储数据,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些键值对,由于不局限于固定的结构,可以减少一些时间和空间的开销,因此相对于关系型数据库而言在性能上有所提升。因此,利用非关系型数据库可以弥补关系型数据库在高并发读写需求、对海量数据的高效率存储和访问需求、高可扩展性和高可用性需求等方面的不足。
[0004]对数据库的操作包括查询类操作和非查询类操作,由于非关系型数据库主要适用于查询类操作,故非关系型数据库并不能完全取代关系型数据库的功能,但是由于访问关系型数据库需要使用结构化查询语言,访问非关系型数据库需要使用非关系型查询语言,因此,需要考虑在保持现有的关系型数据库时如何满足高并发读写、对海量数据的高效率存储和访问、高可扩展性和高可用性等方面的需求。

【发明内容】

[0005]本发明提供一种服务器及数据库访问方法,用于考虑在保持现有的关系型数据库时如何满足高并发读写、对海量数据的高效率存储和访问、高可扩展性和高可用性等方面的需求。
[0006]本发明一方面提供了一种服务器,包括:
[0007]接收模块,用于接收应用服务器中的应用程序发送的第一访问语句,所述第一访问语句为标准的结构化查询语言;
[0008]访问规则路由模块,用于获取所述接收模块接收到的所述第一访问语句中携带的第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;
[0009]语义转译模块,用于在所述访问规则路由模块判断出所述标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将所述数据表抽取到的非关系型数据库确定为目标非关系型数据库,并将所述第一操作指令转译为所述目标非关系型数据库可解析的第二操作指令,所述第二操作指令为非结构化查询语言;
[0010]连接协议适配模块,用于将所述语义转译模块得到的所述第二操作指令和所述数据表的标识信息发送至所述目标非关系型数据库,以供所述目标非关系型数据库根据所述第二操作指令对所述标识信息对应的数据表进行查询。
[0011]本发明另一方面还提供了一种数据库访问方法,包括:
[0012]接收应用服务器中的应用程序发送的第一访问语句,所述第一访问语句为标准的结构化查询语言;
[0013]获取所述第一访问语句中携带的第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;
[0014]在判断出所述标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将所述数据表抽取到的非关系型数据库确定为目标非关系型数据库,并将所述第一操作指令转译为所述目标非关系型数据库可解析的第二操作指令,所述第二操作指令为非结构化查询语言;
[0015]将所述第二操作指令和所述数据表的标识信息发送至所述目标非关系型数据库,以供所述目标非关系型数据库根据所述第二操作指令对所述标识信息对应的数据表进行查询。
[0016]本发明实施例提供的服务器和数据库访问方法,通过接收应用服务器中的应用程序发送的第一访问语句,获取第一访问语句中携带的第一操作指令以及作为第一操作指令的访问对象的数据表的标识信息,在第一操作指令为非关系型数据库可进行的操作时,判断标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;在判断出标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将第一操作指令转译为目标非关系型数据库可解析的第二操作指令;将数据表的标识信息和第二操作指令发送至目标非关系型数据库。将关系型数据库和非关系型数据库统一集成到异构数据库服务引擎中,将标准SQL转译为NoSQL或不同关系型数据库分别采用的SQL,使得应用程序无需考虑不同类型数据库之间的访问语言的差异,采用标准SQL即可实现对不同类型数据库的访问,并且采用了读写分离、实时备份的解决方案,实现了在保持关系型数据库功能的同时,利用非关系型数据库满足了对数据库高并发读写、对海量数据的高效率存储和访问、高可扩展性和高可用性等方面的需求。
【专利附图】

【附图说明】
[0017]图1为本发明服务器一实施例的结构示意图;
[0018]图2为本发明服务器另一实施例的结构示意图;
[0019]图3为本发明服务器的一种应用场景示意图;
[0020]图4为本发明数据库访问方法一实施例的流程图;
[0021]图5为本发明数据库访问方法另一实施例的流程图;
[0022]图6为本发明数据库访问方法又一实施例的流程图。【具体实施方式】
[0023]对关系型数据库进行访问需要使用结构化查询语言SQL,不同的关系型数据库所采用的SQL语句会存在一定的差异,对关系型数据库可以进行“±曾”、“删”、“改”和/或“查询”等操作;对非关系型数据库进行访问时不能直接使用SQL进行访问,而需要使用非结构化查询语言,对非关系型数据库可以进行“查询”操作。本发明各实施例提供的服务器中构建了异构数据库统一服务PaaS平台,该PaaS平台同时支持关系型数据库和非关系型数据库。PaaS的含义为平台即服务(Platform as a Service)。通过服务器中的PaaS平台,实现了利用SQL对非关系型数据库进行查询的操作。以下各实施例中所述的服务器即为构建了该PaaS平台的服务器,尤其适用于交易型数据操作和海量数据高并发量查询共存的应用场景。
[0024]图1为本发明服务器一实施例的结构示意图,如图1所示,该服务器包括接收模块
11、访问规则路由模块12、语义转译模块13和连接协议适配模块14。
[0025]其中,接收模块11,用于接收应用服务器中的应用程序发送的第一访问语句,所述第一访问语句为标准的结构化查询语言;访问规则路由模块12,用于获取所述接收模块11接收到的所述第一访问语句中携带的第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;语义转译模块13,用于在所述访问规则路由模块12判断出所述标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将所述数据表抽取到的非关系型数据库确定为目标非关系型数据库,并将所述第一操作指令转译为所述目标非关系型数据库可解析的第二操作指令,所述第二操作指令为非结构化查询语言;连接协议适配模块14,用于将所述语义转译模块13得到的所述第二操作指令和所述数据表的标识信息发送至所述目标非关系型数据库,以供所述目标非关系型数据库根据所述第二操作指令对所述标识信息对应的数据表进行查询。
[0026]进一步地,所述语义转译模块13还用于,在所述访问规则路由模块12判断出所述标识信息对应的数据表中的数据未被抽取到非关系型数据库中时,将所述数据表所属的关系型数据库确定为目标关系型数据库,并将所述第一操作指令转译为所述目标关系型数据库可解析的第三操作指令,所述第三操作指令为与所述目标关系型数据库的类型对应的结构化查询语言;相应地,所述连接协议适配模块14还用于,将所述语义转译模块13得到的所述第三操作指令和所述数据表的标识信息发送至所述目标关系型数据库,以供所述目标关系型数据库根据所述第三操作指令对所述标识信息对应的数据表进行操作。
[0027]应用服务器中的应用程序需要通过本发明实施例中的服务器访问数据库时,向该服务器发送数据库访问语句,即第一访问语句,在第一访问语句中包括应用程序需要访问的数据表的标识,以及需要对该数据表进行的具体操作,该第一访问语句的格式标准SQL形式,从而应用程序发送第一访问语句时无需考虑不同数据库之间所使用语言的差异,利用通用的标准SQL即可。
[0028]服务器利用其上的接收模块11接收应用程序通过应用服务器发送第一访问语句,在接收到第一访问语句之后,将该第一访问语句发送给访问规则路由模块12,以供所述访问规则路由模块12进行解析。[0029]访问规则路由模块12在接收到接收模块11发送的第一访问语句之后,对该第一访问语句进行解析,获取第一访问语句中携带的第一操作指令和访问对象的标识信息。其中,访问对象为关系型数据库中的数据表,访问对象的标识信息即为应用程序需要访问的数据表的标识信息;第一操作指令为应用程序需要对该数据表进行的具体操作,例如“增”、“删”、“改”和/或“查询”等操作。其中,“查询”为查询类的操作,“增”、“删”、“改”等为非查询类的操作。查询类的操作为关系型数据库和非关系型数据库均可执行的操作,而非查询类的操作适合在关系型数据库中执行。因此,访问规则路由模块12完成对第一访问语句的解析之后,需要判断第一操作指令为查询类操作,还是非查询类操作。若第一操作指令为非查询类操作,则需要在关系型数据库中进行操作,因此不需要判断应用程序需要访问的数据表中的数据是否已被抽取到非关系型数据库中;若第一操作指令为查询类操作,则可以在非关系型数据库中进行操作,因此需要判断应用程序需要访问的数据表中的数据是否已被抽取到非关系型数据库中。
[0030]应用程序需要访问的数据表在初始状态时为关系型数据库中的数据表,可供应用程序访问的一个或多个关系型数据库和一个或多个非关系型数据库存储在数据库服务器中。也就是说,应用程序所在的应用服务器与PaaS平台所在的服务器连接,PaaS平台所在的服务器与数据库所在的数据库服务器连接。应用服务器和数据库服务器上分别开放相应的访问接口,以供本发明实施例中的服务器与其连接。
[0031]数据库服务器除了包括一个或多个关系型数据库以及一个或多个非关系型数据库以外,还包括数据提取、转换和加载(Extraction TransformationLoading,ETL)引擎。数据库服务器利用ETL引擎将关系型数据库中适合于在非关系型数据库中进行操作的数据,准实时地抽取到相应的非关系型数据库。适合于在非关系型数据库进行操作的数据为并发量大,需要海量读取的数据等。
[0032]因此,ETL引擎需要预先配置,定义数据抽取规则。ETL引擎实时跟踪关系型数据库中数据的变化,根据预先定义的抽取规则,将规则指定的数据从关系型数据库中准实时地抽取到非关系型数据库中。相当于同样的数据分别存储在了关系型数据库和非关系型数据库中,互为备份,使被抽取的数据在关系型数据库和非关系型数据库中的一致性,以确保应用程序在非关系型数据库中进行查询时能够得到准确的结果。
[0033]ETL引擎在数据库中完成对数据抽取的操作与应用程序通过PaaS平台访问数据的操作,两者之间是异步的。ETL引擎通过实时跟踪并准实时完成抽取即可。在ETL引擎将关系型数据库中的数据抽取到非关系型数据库中时,数据库服务器上会对该操作进行记录,即哪个关系型数据库中的哪个数据表被抽取到了哪个非关系型数据库中。并且,数据库服务器将该抽取数据的记录信息发送给PaaS平台所在的服务器,服务器将该记录信息保存在访问规则路由模块12中。
[0034]访问规则路由模块12根据该记录信息,即可判断出应用程序需要访问的数据表是否已被抽取到非关系型数据库中。
[0035]访问规则路由模块12若判断出应用程序需要访问的数据表已经被抽取到非关系型数据库中,则根据该记录信息,可以获知该数据表被抽取到哪个非关系型数据库中,以便该服务器到该非关系型数据库中对该数据表进行查询。
[0036]访问规则路由模块12若判断出应用程序需要访问的数据表未被抽取到非关系型数据库中,则根据预先保存的数据库服务器中一个或多个关系型数据库与各自所存储的数据表之间的对应关系,获知应用程序需要访问的数据表属于哪个关系型数据库,也就是具体哪个关系型的数据库实例,以便该服务器到该关系型数据库中对该数据表进行查询。
[0037]访问规则路由模块12在判断出数据表是否已被抽取到非关系型数据库之后,将解析出的第一操作指令、数据表的标识信息以及上述判断结果发送给语义转译模块13。其中,判断结果中表明该数据表是否已被抽取到非关系型数据库中,若已被抽取,则该判断结果中携带有被抽取到的非关系型数据的数据库标识信息;若未被抽取,则该判断结果中携带有该数据表所属的关系型数据库的数据库标识信息,即具体的关系型数据库实例的数据库标识信息。语义转译模块13根据判断结果,对第一操作指令进行转译,具体为以下两种方式:
[0038]一种方式为,当判断结果表明数据表已被抽取到非关系型数据库中时,语义转译模块13获知该判断结果中携带的数据库标识信息对应的是非关系型数据库,则将该数据标识信息对应的非关系型数据库确定为目标非关系型数据库,即通过访问该非关系型数据库可以完成应用程序需要进行的访问操作。在将该非关系型数据库确定为目标非关系型数据库之后,语义转译模块13将第一操作指令转译为目标非关系型数据库可解析的第二操作指令,第二操作指令为非结构化查询语言,或者称为基于键(Key)值的非结构化查询语言(Not Only SQL, NoSQL)查询,即符合目标非关系型数据库语法的操作指令。也就是说,第一操作指令和第二操作指令对应的访问操作是相同的,两者的区别是第二操作指令对同样的访问操作所采用的数据库语法不同。可以理解的是,若不同的非关系型数据所采用的非结构化查询语言存在差异,则在语义转译模块13中预先设置相应的转换方式即可。
[0039]其中一种具体的实现方式可以为,语义转译模块13中预先存储有标准SQL与非关系型数据库所采用的非结构化语言之间的对应关系,该对应关系可以具有为转译模板。转译模板的结构可以为对哪个数据表进行的哪种操作指令,并且该转译模块的数据库语法采用的是非结构化查询语言的语法结构。因此,可以利用转译模板将第一操作指令和数据表的标识信息,构造成符合非结构化查询语言语法的访问语句。以便该服务器利用经过转译模板得到的访问语句对目标非关系型数据库进行访问。
[0040]另一种方式为,当判断结果表明数据表未被抽取到非关系型数据库中时,语义转译模块13获知该判断结果中携带的数据库标识信息对应的是关系型数据库,则将该数据标识信息对应的关系型数据库确定为目标关系型数据库,即通过访问该关系型数据库可以完成应用程序需要进行的访问操作。在将该关系型数据库确定为目标关系型数据库之后,语义转译模块13将第一操作指令转译为目标关系型数据库可解析的第三操作指令。由于不同的关系型数据库不一定采用标准SQL,可能不同的关系型数据库所采用的访问语言的形式与标准SQL存在差异,或者不同的关系型数据库之间所采用的SQL也存在差异,因此,第三操作指令为与目标关系型数据库的类型对应的SQL,即符合目标关系型数据库语法的操作指令。也就是说,第一操作指令和第三操作指令对应的访问操作是相同的,两者的区别是第三操作指令对同样的访问操作所采用的数据库语法不同。
[0041]其中一种具体的实现方式可以为,语义转译模块13中预先存储有标准SQL与不同关系型数据库所采用的SQL之间的对应关系,该对应关系可以具有为转译模板。转译模板的结构可以为对哪个数据表进行的哪种操作指令,并且该转译模块的数据库语法采用的是分别与不同关系型数据库分别对应的语法结构。因此,可以利用转译模板将第一操作指令和数据表的标识信息,构造成符合目标关系型数据库所采用的SQL的访问语句。以便该服务器利用经过转译模板得到的访问语句对目标关系型数据库进行访问。
[0042]语义转译模块13将应用程序需要访问的数据表的标识信息、目标非关系型数据库的数据库标识信息以及转译后的第二操作指令发送至连接协议适配模块14 ;或者将应用程序需要访问的数据表的标识信息、目标关系型数据库的数据库标识信息以及转译后的第三操作指令发送至连接协议适配模块14。若语义转译模块13将数据表的标识信息和第二操作指令,或者数据表的标识信息和第三操作指令构造为相应的访问语句,则语义转译模块13将该访问语句发送至连接协议适配模块14。
[0043]连接协议适配模块14接收语义转译模块13发送的数据表的标识信息、数据库标识信息和操作指令,其中操作指令为第二操作指令或第三操作指令。服务器通过连接协议适配模块14建立与数据库服务器中一个或多个服务器之间的链接。连接协议适配模块14根据数据库标识信息,将数据表的标识信息和第二操作指令发送至数据库标识信息对应的目标非关系型数据库;或者,将将数据表的标识信息和第三操作指令发送至数据库标识信息对应的目标关系型数据库。以供目标非关系型数据库根据第二操作指令完成对该数据表的操作;或者目标关系型数据库根据第三操作指令完成对该数据表的操作。
[0044]本发明实施例提供的服务器,通过接收应用服务器中的应用程序发送的第一访问语句,获取第一访问语句中携带的第一操作指令以及作为第一操作指令的访问对象的数据表的标识信息,在第一操作指令为非关系型数据库可进行的操作时,判断标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;在判断出标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将第一操作指令转译为目标非关系型数据库可解析的第二操作指令;在判断出标识信息对应的数据表中的数据未被抽取到非关系型数据库中时,将第一操作指令转译为目标关系型数据库可解析的第三操作指令;将数据表的标识信息和第二操作指令发送至目标非关系型数据库,或者将数据表的标识信息和第三操作指令发送至目标关系型数据库,以供目标非关系型数据库或目标关系型数据库完成对数据表的操作。将关系型数据库和非关系型数据库统一集成到异构数据库服务引擎中,将标准SQL转译为NoSQL或不同关系型数据库分别采用的SQL,使得应用程序无需考虑不同类型数据库之间的访问语言的差异,采用标准SQL即可实现对不同类型数据库的访问,并且采用了读写分离、实时备份的解决方案,实现了在保持关系型数据库功能的同时,利用非关系型数据库满足了对数据库高并发读写、对海量数据的高效率存储和访问、高可扩展性和高可用性等方面的需求。
[0045]进一步地,在上述各实施例的基础上,所述访问规则路由模块12具体用于,获取所述接收模块11接收到的所述第一访问语句中携带的所述第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在查询到所述标识信息对应的数据表所属的关系型数据库为预设的所述应用程序可访问的一个或多个关系型数据库中的关系型数据库,并且所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中。
[0046]访问规则路由模块12在获取接收模块11接收到的第一访问语句中的第一操作指令和数据表的标识信息之后,在判断第一操作指令为非关系型数据库可进行的操作之前,还需要查询该数据表所属的关系型数据库是否为该应用程序可访问的关系型数据库。若是该应用程序可访问的一个或多个关系型数据库中的数据库,则说明应用程序有权限访问该数据库,进而访问规则路由模块12判断标识信息对应的数据表中的数据是否已被抽取到非关系型数据库;若不是该应用程序可访问的一个或多个关系型数据库中的数据库,则说明应用程序无权限访问该数据库,访问规则路由模块12不再进行后续操作。
[0047]本发明实施例提供的服务器,获取到第一操作指令以及作为第一操作指令的访问对象的数据表的标识信息之后,需要在查询到标识信息对应的数据表所属的关系型数据库为预设的应用程序可访问的一个或多个关系型数据库中的关系型数据库的前提下,才进一步判断第一操作指令是否为非关系型数据库可进行的操作,以及判断标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中,起到了对应用程序的访问请求进行认证的作用,只将应用程序有权限访问的数据库开放给该应用程序,有效地提高了数据库访问的安全性。
[0048]进一步地,在上述各实施例的基础上,所述访问规则路由模块12还用于,预先配置所述应用服务器中的至少一个应用程序分别可访问的一个或多个关系型数据库。
[0049]访问规则路由模块12判断应用程序是否有权限访问相应的关系型数据库之前,需要在访问规则路由模块12中预先配置该应用程序可访问的一个或多个关系型数据库,即具体的数据库实例。由于应用服务器中可能包括一个或多个应用程序,因此,访问规则路由模块12中预先配置的是应用服务器中各应用程序分别可访问的一个或多个关系型数据库。
[0050]本发明实施例提供的服务器,在访问规则路由模块中预先配置应用服务器中各应用程序分别可访问的一个或多个关系型数据库,以供访问规则路由模块在从应用程序发送的访问语句中获取到数据表的标识信息和第一操作指令之后,可以通过预先配置的应用程序的访问权限,对是否允许应用程序访问相应的关系型数据进行查询,有效地提高了数据库访问的安全性。
[0051]图2为本发明服务器另一实施例的结构示意图,如图2所示,在上述各实施例的基础上,所述服务器还包括结果适配及转发模块15。图3为本发明服务器的一种应用场景示意图。
[0052]结果适配及转发模块15用于接收所述目标非关系型数据库或目标关系型数据库所返回的操作结果,将所述操作结果转换为所述应用程序可解析的数据格式,并发送给所述应用服务器中的所述应用程序。
[0053]结果适配及转发模块15设置在服务器中,用于接收数据库服务器中的目标非关系型数据库或目标关系型数据库的操作结果。由于查询类操作对应的操作结果与非查询类操作对应的操作结果的形式不同,因此,结果适配及转发模块15需要对接收到的操作结果进行转换。
[0054]若目标非关系型数据库或目标关系型数据库执行的是查询类的操作,则结果适配及转发模块15将查询到是数据转换为预先定义的格式,该预先定义的格式是应用程序可识别的格式,进而将转换格式后的操作结果转发给应用程序所在的应用服务器,从而应用程序可以接收到可识别格式操作结果;若目标非关系型数据库或目标关系型数据库执行的是非查询类的操作,则结果适配及转发模块15将操作结果转换为预先定义的标准SQL结果代码转发给应用程序所在的应用服务器,从而应用程序可以接收到该标准SQL格式的操作结果。
[0055]本发明实施例提供的服务器,接收目标非关系型数据库或目标关系型数据库所返回的操作结果,将操作结果转换为应用程序可解析的数据格式,并发送给应用服务器中的应用程序,从而使得应用程序不仅在需要访问数据库时无需考虑不同数据库的语法差异,而且在接收操作结果时,所接收到的操作结果的格式也是应用程序可识别的格式,有效地提高了应用程序访问数据库的效率。
[0056]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0057]图4为本发明数据库访问方法一实施例的流程图,如图4所示,该方法包括:
[0058]步骤101、接收应用服务器中的应用程序发送的第一访问语句,所述第一访问语句为标准的结构化查询语言;
[0059]步骤102、获取所述第一访问语句中携带的第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;
[0060]步骤103、在判断出所述标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将所述数据表抽取到的非关系型数据库确定为目标非关系型数据库,并将所述第一操作指令转译为所述目标非关系型数据库可解析的第二操作指令,所述第二操作指令为非结构化查询语言;
[0061]步骤104、将所述第二操作指令和所述数据表的标识信息发送至所述目标非关系型数据库,以供所述目标非关系型数据库根据所述第二操作指令对所述标识信息对应的数据表进行查询。
[0062]图5为本发明数据库访问方法另一实施例的流程图,如图5所示,步骤102中在判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中之后,该方法包括:
[0063]步骤105、在判断出所述标识信息对应的数据表中的数据未被抽取到非关系型数据库中时,将所述数据表所属的关系型数据库确定为目标关系型数据库,并将所述第一操作指令转译为所述目标关系型数据库可解析的第三操作指令,所述第三操作指令为与所述目标关系型数据库的类型对应的结构化查询语言;
[0064]步骤106、将所述第三操作指令和所述数据表的标识信息发送至所述目标关系型数据库,以供所述目标关系型数据库根据所述第三操作指令对所述标识信息对应的数据表进行操作。
[0065]本发明实施例提供的数据库访问方法,通过接收应用服务器中的应用程序发送的第一访问语句,获取第一访问语句中携带的第一操作指令以及作为第一操作指令的访问对象的数据表的标识信息,在第一操作指令为非关系型数据库可进行的操作时,判断标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中;在判断出标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将第一操作指令转译为目标非关系型数据库可解析的第二操作指令;在判断出标识信息对应的数据表中的数据未被抽取到非关系型数据库中时,将第一操作指令转译为目标关系型数据库可解析的第三操作指令;将数据表的标识信息和第二操作指令发送至目标非关系型数据库,或者将数据表的标识信息和第三操作指令发送至目标关系型数据库,以供目标非关系型数据库或目标关系型数据库完成对数据表的操作。将关系型数据库和非关系型数据库统一集成到异构数据库服务引擎中,将标准SQL转译为NoSQL或不同关系型数据库分别采用的SQL,使得应用程序无需考虑不同类型数据库之间的访问语言的差异,采用标准SQL即可实现对不同类型数据库的访问,并且采用了读写分离、实时备份的解决方案,实现了在保持关系型数据库功能的同时,利用非关系型数据库满足了对数据库高并发读写、对海量数据的高效率存储和访问、高可扩展性和高可用性等方面的需求。
[0066]图6为本发明数据库访问方法又一实施例的流程图,如图6所示,在上述各实施例的基础上,步骤102具体包括:
[0067]步骤201、获取所述第一访问语句中携带的所述第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息;
[0068]步骤202、在查询到所述标识信息对应的数据表所属的关系型数据库为预设的所述应用程序可访问的一个或多个关系型数据库中的关系型数据库,并且所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中。
[0069]本发明实施例提供的数据库访问方法,获取到第一操作指令以及作为第一操作指令的访问对象的数据表的标识信息之后,需要在查询到标识信息对应的数据表所属的关系型数据库为预设的应用程序可访问的一个或多个关系型数据库中的关系型数据库的前提下,才进一步判断第一操作指令是否为非关系型数据库可进行的操作,以及判断标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中,起到了对应用程序的访问请求进行认证的作用,只将应用程序有权限访问的数据库开放给该应用程序,有效地提高了数据库访问的安全性。
[0070]进一步地,在上述各实施例的基础上,在查询所述标识信息对应的数据表所属的关系型数据库是否为预设的所述应用程序可访问的一个或多个关系型数据库中的关系型数据库之前,该方法还包括:
[0071]步骤301、预先配置所述应用服务器中的至少一个应用程序分别可访问的一个或多个关系型数据库。
[0072]本发明实施例提供的数据库访问方法,需要预先配置应用服务器中各应用程序分别可访问的一个或多个关系型数据库,以供服务器在从应用程序发送的访问语句中获取到数据表的标识信息和第一操作指令之后,可以通过预先配置的应用程序的访问权限,对是否允许应用程序访问相应的关系型数据进行查询,有效地提高了数据库访问的安全性。
[0073]进一步地,在上述各实施例的基础上,在步骤104或步骤106之后,该方法还包括:
[0074]步骤401、接收所述目标非关系型数据库或目标关系型数据库所返回的操作结果,将所述操作结果转换为所述应用程序可解析的数据格式,并发送给所述应用服务器中的所述应用程序。[0075]本发明实施例提供的数据库访问方法,接收目标非关系型数据库或目标关系型数据库所返回的操作结果,将操作结果转换为应用程序可解析的数据格式,并发送给应用服务器中的应用程序,从而使得应用程序不仅在需要访问数据库时无需考虑不同数据库的语法差异,而且在接收操作结果时,所接收到的操作结果的格式也是应用程序可识别的格式,有效地提高了应用程序访问数据库的效率。
[0076]具体的,本发明各实施例中的数据库访问方法可以参见上述各装置实施例中所述的方法,此处不再赘述。
[0077]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种服务器,其特征在于,包括: 接收模块,用于接收应用服务器中的应用程序发送的第一访问语句,所述第一访问语句为标准的结构化查询语言; 访问规则路由模块,用于获取所述接收模块接收到的所述第一访问语句中携带的第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中; 语义转译模块,用于在所述访问规则路由模块判断出所述标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将所述数据表抽取到的非关系型数据库确定为目标非关系型数据库,并将所述第一操作指令转译为所述目标非关系型数据库可解析的第二操作指令,所述第二操作指令为非结构化查询语言; 连接协议适配模块,用于将所述语义转译模块得到的所述第二操作指令和所述数据表的标识信息发送至所述目标非关系型数据库,以供所述目标非关系型数据库根据所述第二操作指令对所述标识信息对应的数据表进行查询。
2.根据权利要求1所述的服务器,其特征在于,所述语义转译模块还用于: 在所述访问规则路由模块判断出所述标识信息对应的数据表中的数据未被抽取到非关系型数据库中时,将所述数据表所属的关系型数据库确定为目标关系型数据库,并将所述第一操作指令转译为所述目标关系型数据库可解析的第三操作指令,所述第三操作指令为与所述目标关系型数据库的类型对应的结构化查询语言; 相应地,所述连接协议适配模块还用于,将所述语义转译模块得到的所述第三操作指令和所述数据表的标识信息发送至所述目标关系型数据库,以供所述目标关系型数据库根据所述第三操作指令对所述标识信息对应的数据表进行操作。`
3.根据权利要求2所述的服务器,其特征在于,所述访问规则路由模块具体用于: 获取所述接收模块接收到的所述第一访问语句中携带的所述第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在查询到所述标识信息对应的数据表所属的关系型数据库为预设的所述应用程序可访问的一个或多个关系型数据库中的关系型数据库,并且所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中。
4.根据权利要求3所述的服务器,其特征在于,所述访问规则路由模块还用于: 预先配置所述应用服务器中的至少一个应用程序分别可访问的一个或多个关系型数据库。
5.根据权利要求2所述的服务器,其特征在于,所述服务器还包括: 结果适配及转发模块,用于接收所述目标非关系型数据库或目标关系型数据库所返回的操作结果,将所述操作结果转换为所述应用程序可解析的数据格式,并发送给所述应用服务器中的所述应用程序。
6.一种数据库访问方法,其特征在于,包括: 接收应用服务器中的应用程序发送的第一访问语句,所述第一访问语句为标准的结构化查询语言; 获取所述第一访问语句中携带的第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,在所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中; 在判断出所述标识信息对应的数据表中的数据已被抽取到非关系型数据库中时,将所述数据表抽取到的非关系型数据库确定为目标非关系型数据库,并将所述第一操作指令转译为所述目标非关系型数据库可解析的第二操作指令,所述第二操作指令为非结构化查询语H ; 将所述第二操作指令和所述数据表的标识信息发送至所述目标非关系型数据库,以供所述目标非关系型数据库根据所述第二操作指令对所述标识信息对应的数据表进行查询。
7.根据权利要求6所述的数据库访问方法,其特征在于,所述判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中之后,所述方法还包括: 在判断出所述标识信息对应的数据表中的数据未被抽取到非关系型数据库中时,将所述数据表所属的关系型数据库确定为目标关系型数据库,并将所述第一操作指令转译为所述目标关系型数据库可解析的第三操作指令,所述第三操作指令为与所述目标关系型数据库的类型对应的结构化查询语言; 将所述第三操作指令和所述数据表的标识信息发送至所述目标关系型数据库,以供所述目标关系型数据库根据所述第三操作指令对所述标识信息对应的数据表进行操作。
8.根据权利要求6或7所述的数据库访问方法,其特征在于,所述获取所述第一访问语句中携带的第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息,并判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中具体为: 获取所述第一访问语句中携带的所述第一操作指令以及作为所述第一操作指令的访问对象的数据表的标识信息; 在查询到所述标识信 息对应的数据表所属的关系型数据库为预设的所述应用程序可访问的一个或多个关系型数据库中的关系型数据库,并且所述第一操作指令为非关系型数据库可进行的操作时,判断所述标识信息对应的数据表中的数据是否已被抽取到非关系型数据库中。
9.根据权利要求8所述的数据库访问方法,其特征在于,在查询所述标识信息对应的数据表所属的关系型数据库是否为预设的所述应用程序可访问的一个或多个关系型数据库中的关系型数据库之前,所述方法还包括: 预先配置所述应用服务器中的至少一个应用程序分别可访问的一个或多个关系型数据库。
10.根据权利要求6或7所述的数据库访问方法,其特征在于,所述方法还包括: 接收所述目标非关系型数据库或目标关系型数据库所返回的操作结果,将所述操作结果转换为所述应用程序可解析的数据格式,并发送给所述应用服务器中的所述应用程序。
【文档编号】G06F17/30GK103823815SQ201210468533
【公开日】2014年5月28日 申请日期:2012年11月19日 优先权日:2012年11月19日
【发明者】郭志斌, 李卫, 张云勇 申请人:中国联合网络通信集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1