CN106294565A - 一种数据库访问方法及系统 - Google Patents

一种数据库访问方法及系统 Download PDF

Info

Publication number
CN106294565A
CN106294565A CN201610601972.5A CN201610601972A CN106294565A CN 106294565 A CN106294565 A CN 106294565A CN 201610601972 A CN201610601972 A CN 201610601972A CN 106294565 A CN106294565 A CN 106294565A
Authority
CN
China
Prior art keywords
sql
rule
point
mark
statement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610601972.5A
Other languages
English (en)
Inventor
罗位国
吴旭春
姚唬
杨鹏
李嵩嵩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN201610601972.5A priority Critical patent/CN106294565A/zh
Publication of CN106294565A publication Critical patent/CN106294565A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据库访问方法和系统,预设有SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句,在进行数据库访问时,访问请求中携带的执行语句也为SQL标识,在分库规则的匹配中,获得目标数据库,进而,获得执行语句所对应的SQL语句,以进行访问请求的执行。这样,实现了交易系统中不同类型数据库的分库分表的访问,且通过直接SQL执行,执行效率高,在新增数据库系统时,增加预置的SQL标识与SQL语句的对应关系即可,灵活度高。

Description

一种数据库访问方法及系统
技术领域
本申请涉及数据库领域,具体地说,涉及一种数据库访问方法及系统。
背景技术
随着信息化技术的飞速发展,银行和互联网企业等的联机交易系统的日交易量早已达到亿级,数据量的增加对数据库的高效访问提出更高的要求。
目前,银行及互联网企业的联机交易系统多采用基于关系型数据库的分库分表的解决方案,分库是指将数据表存储在多个物理的数据库中,分表是指将大数据表拆分为多个数据表,其优势在于可以支持数据的关联访问以及高频率的数据变更操作,提高数据库访问的效率。
随着系统规模的日益增大,在目前的联机交易系统中,数据库系统更为庞大和复杂,通常需要对多种类型的数据库操作,而且系统经常会需要扩展,在分库分表的解决方案中,希望能支持灵活分库分表规则的数据库访问方法,以满足对跨数据库操作灵活配置的要求。
发明内容
有鉴于此,本申请提供了一种数据库访问方法,支持不同类型数据库系统的分库分表访问,灵活度高且执行效率高。
为了解决上述技术问题,本申请有如下技术方案:
一种数据库访问方法,预置SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句;预置分库规则和分表规则;所述数据库访问方法包括:
接收数据库的访问请求,访问请求中的执行语句为SQL标识;
通过访问请求中所包含的分库规则的规则作用域的信息,分别进行分库规则的匹配,以获得访问请求的目标数据库;
根据目标数据库和访问请求中的SQL标识,从预置的对应关系中获得访问请求中的执行语句所对应的SQL语句;
通过访问请求中所包含的分表规则的规则作用域的信息,分别进行分表规则的匹配,以获得访问请求的目标数据表;
按照目标数据库和目标数据表,以执行语句所对应的SQL语句执行访问请求。
可选地,预置SQL标识与SQL语句的对应关系的步骤包括:
预先将SQL标识与SQL语句的对应关系设置在配置文件中;
将配置文件中的对应关系进行解析,获得SQL标识与数据库类型和数据库类型下SQL语句的映射关系;
将解析后的映射关系进行缓存,缓存中的映射关系为预置的对应关系。
可选地,在将配置文件中的对应关系进行解析的步骤中,还包括:获得数据库类型和数据库类型下SQL语句中表名的映射关系。
可选地,分库规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
分别进行分库规则的匹配包括:
按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分库规则的匹配,直到获得匹配的目标数据库,其中,表名通过SQL标识从缓存的映射关系中获得。
可选地,分表规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
分别进行分表规则的匹配包括:
按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分表规则的匹配,直到获得匹配的目标数据表,其中,表名通过SQL标识从缓存的映射关系中获得。
可选地,分库规则和分表规则的规则类型包括常量、映射、表达式和函数资源。
此外,本发明还提供了一种数据库访问系统,包括:
SQL标识预置单元,用于预置SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句;
分库分表预置单元,用于预置分库规则和分表规则;
请求单元,用于接收数据库的访问请求,访问请求中的执行语句为SQL标识;
分库分表匹配单元,用于通过访问请求中所包含的分库规则的规则作用域的信息,分别进行分库规则的匹配,以获得访问请求的目标数据库;通过访问请求中所包含的分表规则的规则作用域的信息,分别进行分表规则的匹配,以获得访问请求的目标数据表;
访问请求解析单元,用于根据目标数据库和访问请求中的SQL标识,从预置的对应关系中获得访问请求中的执行语句所对应的SQL语句;
执行单元,用于按照目标数据库和目标数据表,以执行语句所对应的SQL语句执行访问请求。
可选地,SQL标识预置单元包括:
配置单元,用于预先将SQL标识与SQL语句的对应关系设置在配置文件中;
配置解析单元,将配置文件中的对应关系进行解析,获得SQL标识与数据库类型和数据库类型下SQL语句的映射关系;
缓存单元,用于将解析后的映射关系进行缓存,缓存中的映射关系为预置的对应关系。
可选地,配置解析单元还用于:获得数据库类型和数据库类型下SQL语句中表名的映射关系。
可选地,分库规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
在分库分表匹配单元中,分别进行分库规则的匹配包括:按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分库规则的匹配,直到获得匹配的目标数据库,其中,表名通过SQL标识从缓存的映射关系中获得。
可选地,分表规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
在分库分表匹配单元中,分别进行分表规则的匹配包括:按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分表规则的匹配,直到获得匹配的目标数据表,其中,表名通过SQL标识从缓存的映射关系中获得。
可选地,分库规则和分表规则的规则类型包括常量、映射、表达式和函数资源。
本发明实施例提供的数据库访问方法和系统,预设有SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句,在进行数据库访问时,访问请求中携带的执行语句也为SQL标识,在分库规则的匹配中,获得目标数据库,进而,获得执行语句所对应的SQL语句,以进行访问请求的执行。这样,实现了交易系统中不同类型数据库的分库分表的访问,且通过直接SQL执行,执行效率高,在新增数据库系统时,增加预置的SQL标识与SQL语句的对应关系即可,灵活度高。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为根据本发明实施例的SQL配置文件的配置结构示意图;
图2为根据本发明实施例的预置SQL标识与SQL语句的对应关系的流程示意图;
图3为根据本发明实施例的数据库访问方法的流程示意图;
图4为根据本发明实施例的数据库访问系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明公开了一种数据库访问方法,实现不同类型数据库的分库分表的访问。在该方法中,在进行访问之前,首先,预置SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句。
SQL标识是对数据库操作的执行语句的标识,可以采用合适的命名方法进行标识,该SQL标识与SQL语句具有对应的关系,具体的,该SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句,也就是说,一个SQL标识对应于多条表示相同操作的SQL语句,每一个SQL语句为不同数据库时的操作表达。
为了使得SQL标识具有更好的可读性,在本发明实施例中,SQL标识采用表名+SQL语句中的功能关键字的标识方法,而在多项目或多工程的系统中,为了便于系统的开发和管理,SQL标识中可以进一步增加项目或工程的命名标识。例如SQL标识可以为LADA_SC_TR_REQ_LOG_INSERT,其中LADA_SC_TR_REQ_LOG为表名,INSERT为插入操作的关键字,例如还可以为‘com.abchina.taihang.framework.async.LADA_SC_TR_RES_LOG_SELECT’,其中,com.abchina.taihang.framework.async为项目的命名空间,LADA_SC_TR_REQ_LOG为表名,SELECT为插入操作的关键字。为了便于更好的理解该SQL标识与SQL语句的对应关系,以下举例进行说明。
在一些具体的应用中,对于所有的数据库类型,SQL语句的表达是相同的。例如,对于INSERT的操作,所有的数据库类型的SQL语句是相同的,若要操作的表名为LADA_SC_TR_REQ_LOG,则对应所有的数据库类型,SQL语句都为:INSERT INTO LADA_SC_TR_REQ_LOG(NUM_JRN_NO,COD_RET_TYP,COD_RET_MSG,TIME_TR_RES)VALUES(?,?,?,?)。这样,对于该具体的实施例,SQL标识可以为LADA_SC_TR_REQ_LOG_INSERT,其中,LADA_SC_TR_REQ_LOG为要执行操作的表名,INSERT为要执行的操作的功能关键字,在该LADA_SC_TR_REQ_LOG_INSERT的SQL标识下,对应所有的数据库类型,所有的数据库类型可以记做ALL,SQL语句都为上述的SQL语句。
在另一些具体的应用中,对于不同的数据库类型,SQL语句的表达是不同的。例如,对于SELECT的操作,若要操作的表名为LADA_SC_TR_REQ_LOG,对于不同的数据库类型,SQL语句不同,在数据库为SYBASE时,SQL语句为:Select*from LADA_SC_TR_REQ_LOG;数据库为DB2时,SQL语句为:Select*from LADA_SC_TR_REQ_LOG with ur。这样,对于该具体的实施例,SQL标识可以为LADA_SC_TR_REQ_LOG_SELECT,其中,LADA_SC_TR_REQ_LOG为要执行操作的表名,SELECT为要执行的操作的功能关键字,在该LADA_SC_TR_REQ_LOG_SELECT的SQL标识下,对应SYBASE的数据库,SQL语句为Select*from LADA_SC_TR_REQ_LOG,对应DB2数据库,SQL语句为Select*from LADA_SC_TR_REQ_LOG with ur。
可以根据需要采用合适的方式进行SQL标识与SQL语句的对应关系的预置,例如可以预置在文件中、表单中或内存中等。在本发明的具体实施例中,考虑银行系统中的现有交易系统和数据库系统构架,采用配置文件的方式进行SQL标识与SQL语句的对应关系的预置,参考图1所示,具体的步骤如下:
首先在步骤S01,将SQL标识与SQL语句的对应关系设置在配置文件中。
配置文件例如可以是基于XML的配置文件,更为具体的,在进行配置时,首先,配置根节点的命名空间。根节点对应一个工程模块或项目,例如存款模块、贷款模块等,根节点的命名空间为唯一的,避免SQL资源使用时出现冲突。而后,在根节点下配置SQL节点,该SQL节点为根节点的子节点,SQL节点的命名为SQL标识,对于具有不同SQL语句表达的情况,在SQL节点下分别对应不同的数据库类型和与数据库类型对应的SQL语句;对于具有相同SQL语句表达的情况,SQL节点直接对应SQL语句。根节点下还可以配置配置文件的嵌套节点,用于在根节点下的目录中创在索引文件,对配置好的文件进一步地配置其路径,这样,可以通过索引文件进行配置文件的加载和进一步的处理,参考图2所示,为本实施例的SQL配置文件的配置结构示意图,通过预先的配置,可以将SQL标识与SQL语句的对应关系设置在配置文件中。
而后在步骤S02,将配置文件中的对应关系进行解析,获得SQL标识与数据库类型和数据库类型下SQL语句的映射关系。
解析的过程是将配置文件中设置的对应关系转换为可以被获取的状态,在具体的实施例中,可以通过索引文件进行配置文件的加载,通过并加载遍历索引文件中所有路径下的配置文件,并从配置文件中获得SQL标识与数据库类型和数据库类型下SQL语句的映射关系,即一个SQL标识与一个数据库类型和SQL语句映射,此外,SQL语句中包含有对具体的表名的操作,该表名在后续的数据库访问时会被经常的使用到,为了便于使用和提高操作效率,在解析时,可以一并将表名信息解析出来,同时获得数据库类型和数据库类型下SQL语句中表名的映射关系。这样,就获得了两级映射的关系:(SQL标识,(数据库类型,SQL语句)),通过SQL标识,便可以获得相应的数据库类型,以及该数据库类型下的SQL语句和SQL语句中的表名。
最后在步骤S03,将解析后的映射关系进行缓存。
解析后的映射关系可以以SQL标识为关键字,缓存在内存的哈希表(HashMAP)中,在具体的数据访问时,通过SQL标识就可以找到所需要的对应的信息。
这种预置方式中,通过配置文件进行了SQL标识与SQL语句的对应关系进行了预先配置,这样,可以根据具体的项目或工程开发的需要来SQL的配置,可以根据具体的需求灵活地进行增加和删减,特别适用于多项目和多数据库操作,此外,将解析后的映射关系进行了缓存,在进行访问请求时,可以直接从缓存中获得所需要的SQL语句和表名,有效地提高系统的处理效率。
以上对预置SQL标识与SQL语句的对应关系的实施例进行了详细的描述。此外,该方法中还需要预置分库规则和分表规则。
分库规则和分表规则是预先配置并存储的,对于每一条分库规则至少包括规则作用域、规则类型和规则配置这些信息,在本发明实施例中,分表规则与分库规则相同,而为了避免规则的混淆,可以将分库规则和分表规则预置在不同的两张表中。其中,规则作用域是该条规则使用的范围,规则类型是指规则操作时的类型,规则配置是指在规则操作时所需的配置参数。
在本发明实施例中,分库规则或分表规则的规则作用域可以为SQL标识、表名、项目编号或交易运行信息中的一种或多种,交易运行信息是与银行交易业务相关的关键信息,例如卡号、省市代码、渠道、终端号或交易码等。在优选的实施例中,分库规则或分表规则的规则作用域可以为SQL标识、表名、项目编号和交易运行信息,这四种作用域的粒度从大到小分布,可以较好的涵盖各种维度的分库需求。分库规则或分表规则的规则类型可以包括常量、映射、表达式或函数资源中的一种或多种,在优选的实施例中,规则类型包括常量、映射、表达式和函数资源这四种,这四种规则类型的应用可以实现复杂的分库规则和分表规则的组合,其中,常量即CONST,仅对某个表格进行操作;映射即MAPPING,其进行数据映射的操作;表达式即EXPRESSION,其通过表达式的形式进行数据操作;函数资源即FUNCTION,其通过函数的形式进行数据操作。
更进一步地,分库规则的规则作用域中还可以设置默认数据库,该规则作用域用于无可匹配的分库规则时,在该默认数据库中进行操作的执行。
为了便于理解,现举例分别对分库规则和分表规则分表进行说明,例如一个分库规则为【‘LADA_SC_TR_REQ_LOG’,‘CONST’,‘db01’】,该条分库规则是按照表名进行分库的,规则类型为常量CONST,规则配置为db01,指该表名存在于数据库db01中,对该表名的操作路由至该数据库db01中。再例如另一个分库规则为【‘com.abchina.taihang.framework.async.LADA_SC_TR_RES_LOG_SELECT,’‘MAPPING’,‘proviceCode’,‘<resources><map key="01"value=“db01”/><map key="02"value=“db02”/></resources>’】,这条分库规则是按照SQL标识进行分库的,规则类型为MAPPING,分库的规则是依赖交易运行信息里的省市代码,省市代码为01的去db01查,省市代码为02的去db02查。
例如一个分表规则为【‘LADA_SC_TR_REQ_LOG_INSERT’,‘EXPRESSION’,‘#termID#%10’】,该条分表规则是按照SQL标识进行分表的,LADA_SC_TR_REQ_LOG_INSERT对应的SQL语句中建立LADA_SC_TR_REQ_LOG_0-9一共十张表,规则类型为表达式,表名的后缀通过表达式进行计算获得,具体的计算为设备尾号余10。例如另一个分表规则为【‘LADA_SC_TR_RES_LOG_SELECT’,‘FUNCTION’,‘com.abchina.taihang.WeekDayParser’,’】,该条分表规则是按照SQL标识进行分表的,LADA_SC_TR_RES_LOG_SELECT,LADA_SC_TR_RES_LOG_SELECT的SQL标识中对应有LADA_SC_TR_REQ_LOG_1-7一共七张表,规则类型为函数资源,将对应星期几的数据对应存放到第几张表中。
可以看到,通过本发明实施例的分库规则和分表规则,规则作用域可以为SQL标识、表名、项目编号和交易运行信息,这四种作用域的粒度从大到小分布,可以较好的涵盖各种维度的分库需求。同时,支持常量、直接映射、表达式和函数资源的规则类型,可以实现各类型复杂的配置实现。
在预置SQL标识与SQL语句的对应关系以及预置分库规则、分表规则之后,进行数据库的访问,参考图3所示,具体的访问方法如下:
在步骤S101,接收数据库的访问请求,访问请求中的执行语句为SQL标识。
访问请求为访问数据库的请求,访问请求中通常携带交易运行信息、执行语句和执行语句所依赖的参数,执行语句就是的数据库要做何种操作,交易运行信息中会包括具体的交易运行时所依赖的信息,本发明中,访问请求中的执行语句为SQL标识。
在步骤S102,通过访问请求中所包含的分库规则的规则作用域的信息,分别进行分库规则的匹配,以获得访问请求的目标数据库。
在访问请求中包含了分库规则和分表规则的规则作用域的信息,比如SQL标识、交易运行信息中的相关关键信息以及SQL标识所对应SQL语句中的表名信息,这些都有可能是分库规则和分表规则的规则作用域。对于访问请求中的表名信息可以通过预置的SQL标识与SQL语句的对应关系中获得,在上述将解析后的映射关系进行缓存的优选实施例中,表名通过SQL标识从缓存的映射关系中直接获得。
在进行分库规则的匹配时,则分别将访问请求中所包含的分库规则的规则作用域的信息与分库规则进行匹配,若找到通过该访问请求中的信息进行配置的分库规则,则可以从分库规则中获得分库信息,即获得目标数据库。
若分库规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息,优选地,在进行分库规则的匹配时,依次按照SQL标识、表名、项目编号和交易运行信息粒度从大到小的顺序进行匹配,直到匹配完成。具体的,若在一个实施例中,访问请求中的交易运行信息中具有省市代码的信息,当然,访问请求中必然包含有SQL标识,以及从该SQL标识可以获取到的表名,则,通过SQL标识、表名和省市代码依次与分库规则进行匹配,若通过SQL标识找到了以该SQL标识配置的分库规则,则认为匹配完成,此时,可以从匹配上的分库规则中获得目标数据库,若通过SQL标识没有完成匹配,则继续通过表名进行匹配,直到匹配成功。
在步骤S103,根据目标数据库和访问请求中的SQL标识,从预置的对应关系中获得访问请求中的执行语句所对应的SQL语句。
目标数据库的信息与其数据库类型存在着必然的对应关系,例如有的可以从目标数据库的命名上或后缀上获得该数据库的类型,有的可以通过该目标数据库的配置信息获得该数据库的类型,这样,根据目标数据库的信息,必然可以获知该目标数据库的数据库类型。进而,通过访问请求中的SQL标识以及目标数据库的数据库类型,就可以从预置的对应关系中获得访问请求中的执行语句所对应的SQL语句,也就获得了访问请求的执行语句。
在步骤S104,通过访问请求中所包含的分表规则的规则作用域的信息,分别进行分表规则的匹配,以获得访问请求的目标数据表。
在进行分表规则的匹配时,则分别将访问请求中所包含的分表规则的规则作用域的信息与分表规则进行匹配,若找到通过该访问请求中的信息进行配置的分表规则,则可以从分表规则中获得分表信息,即获得目标表名。匹配的方法同分库规则中的匹配。
在步骤S105,按照目标数据库和目标数据表,以执行语句所对应的SQL语句执行访问请求。
获得的目标数据库可能是单库或多库,对于单库执行,可以采用单线程的执行方式,获取目标数据库的一个连接,而后,将SQL语句中的表名替换为目标数据表,通过替换后的SQL语句以及访问请求中的参数执行访问请求。对于多库执行,可以采用多线程的执行方式,获取目标数据库的多个连接,而后启动与之个数匹配的线程,并行执行每个连接下的请求,对于每一个线程,都要将SQL语句中的表名替换为目标数据表,通过替换后的SQL语句以及访问请求中的参数执行访问请求。
在执行访问请求之后,还可以进一步包括步骤S106,返回执行结果。针对不同的访问请求,对执行访问请求后的结果做不同的处理,对于单库执行,执行后的结果即为所需要的结果。对于多库执行,根据不同的操作请求,需要将执行结果进行合并和处理,例如,针对插入、修改和删除操作,会返回每个库所影响的行数,将每个库返回的结果进行合并即可;对于查询操作,若只要求返回查询结果,则可以将每个库返回的查询结果合并即可;若要求查询排序,则可以根据排序相关列,在多个库的返回结果间采用多线程折半并发排序,并返回排序后的结果;对于分组查询,则可以根据分组的相关列的情况,先在多个库的返回结果间采用多线程折半并发排序到一个结果集中,而后在进行分组;此处对于不同操作的结果的处理仅为示例,可以根据具体的操作请求,对相关的执行结果做其他的处理。
以上对本发明实施例的数据库访问方法进行了详细的描述,此外,本发明还提供了实现上述方法的数据库访问系统,参考图4所示,包括:
SQL标识预置单元202,用于预置SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句;
分库分表预置单元204,用于预置分库规则和分表规则;
请求单元206,用于接收数据库的访问请求,访问请求中的执行语句为SQL标识;
分库分表匹配单元208,用于通过访问请求中所包含的分库规则的规则作用域的信息,分别进行分库规则的匹配,以获得访问请求的目标数据库;通过访问请求中所包含的分表规则的规则作用域的信息,分别进行分表规则的匹配,以获得访问请求的目标数据表;
访问请求解析单元210,用于根据目标数据库和访问请求中的SQL标识,从预置的对应关系中获得访问请求中的执行语句所对应的SQL语句;
执行单元212,用于按照目标数据库和目标数据表,以执行语句所对应的SQL语句执行访问请求。
其中,请求单元206为访问的请求接口,外部的访问通过请求实现基于分库分表的访问,在访问执行之后,可以进一步返回执行结果。本系统,还可以进一步包括结果返回单元,用于返回执行结果,该结果返回单元为外部访问的获得访问结果的接口。
进一步地,SQL标识预置单元202包括:
配置单元,用于预先将SQL标识与SQL语句的对应关系设置在配置文件中;
配置解析单元,将配置文件中的对应关系进行解析,获得SQL标识与数据库类型和数据库类型下SQL语句的映射关系;
缓存单元,用于将解析后的映射关系进行缓存,缓存中的映射关系为预置的对应关系。
进一步地,配置解析单元还用于:获得数据库类型和数据库类型下SQL语句中表名的映射关系。
进一步地,分库规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
在分库分表匹配单元208中,分别进行分库规则的匹配包括:按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分库规则的匹配,直到获得匹配的目标数据库,其中,表名通过SQL标识从缓存的映射关系中获得。
进一步地,分表规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
在分库分表匹配单元208中,分别进行分表规则的匹配包括:按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分表规则的匹配,直到获得匹配的目标数据表,其中,表名通过SQL标识从缓存的映射关系中获得。
进一步地,分库规则和分表规则的规则类型包括常量、映射、表达式和函数资源。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (12)

1.一种数据库访问方法,其特征在于,预置SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句;预置分库规则和分表规则;所述数据库访问方法包括:
接收数据库的访问请求,访问请求中的执行语句为SQL标识;
通过访问请求中所包含的分库规则的规则作用域的信息,分别进行分库规则的匹配,以获得访问请求的目标数据库;
根据目标数据库和访问请求中的SQL标识,从预置的对应关系中获得访问请求中的执行语句所对应的SQL语句;
通过访问请求中所包含的分表规则的规则作用域的信息,分别进行分表规则的匹配,以获得访问请求的目标数据表;
按照目标数据库和目标数据表,以执行语句所对应的SQL语句执行访问请求。
2.根据权利要求1所述的数据库访问方法,其特征在于,预置SQL标识与SQL语句的对应关系的步骤包括:
预先将SQL标识与SQL语句的对应关系设置在配置文件中;
将配置文件中的对应关系进行解析,获得SQL标识与数据库类型和数据库类型下SQL语句的映射关系;
将解析后的映射关系进行缓存,缓存中的映射关系为预置的对应关系。
3.根据权利要求2所述的数据库访问方法,其特征在于,在将配置文件中的对应关系进行解析的步骤中,还包括:获得数据库类型和数据库类型下SQL语句中表名的映射关系。
4.根据权利要求3所述的数据库访问方法,其特征在于,分库规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
分别进行分库规则的匹配包括:
按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分库规则的匹配,直到获得匹配的目标数据库,其中,表名通过SQL标识从缓存的映射关系中获得。
5.根据权利要求3所述的数据库访问方法,其特征在于,分表规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
分别进行分表规则的匹配包括:
按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分表规则的匹配,直到获得匹配的目标数据表,其中,表名通过SQL标识从缓存的映射关系中获得。
6.根据权利要求1-5中任一项所述的数据库访问方法,其特征在于,分库规则和分表规则的规则类型包括常量、映射、表达式和函数资源。
7.一种数据库访问系统,其特征在于,包括:
SQL标识预置单元,用于预置SQL标识与SQL语句的对应关系,SQL标识对应于执行同一数据库操作时不同数据库类型及为不同数据库类型时所使用的SQL语句;
分库分表预置单元,用于预置分库规则和分表规则;
请求单元,用于接收数据库的访问请求,访问请求中的执行语句为SQL标识;
分库分表匹配单元,用于通过访问请求中所包含的分库规则的规则作用域的信息,分别进行分库规则的匹配,以获得访问请求的目标数据库;通过访问请求中所包含的分表规则的规则作用域的信息,分别进行分表规则的匹配,以获得访问请求的目标数据表;
访问请求解析单元,用于根据目标数据库和访问请求中的SQL标识,从预置的对应关系中获得访问请求中的执行语句所对应的SQL语句;
执行单元,用于按照目标数据库和目标数据表,以执行语句所对应的SQL语句执行访问请求。
8.根据权利要求7所述的数据库访问系统,其特征在于,SQL标识预置单元包括:
配置单元,用于预先将SQL标识与SQL语句的对应关系设置在配置文件中;
配置解析单元,将配置文件中的对应关系进行解析,获得SQL标识与数据库类型和数据库类型下SQL语句的映射关系;
缓存单元,用于将解析后的映射关系进行缓存,缓存中的映射关系为预置的对应关系。
9.根据权利要求8所述的数据库访问系统,其特征在于,配置解析单元还用于:获得数据库类型和数据库类型下SQL语句中表名的映射关系。
10.根据权利要求9所述的数据库访问系统,其特征在于,分库规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
在分库分表匹配单元中,分别进行分库规则的匹配包括:按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分库规则的匹配,直到获得匹配的目标数据库,其中,表名通过SQL标识从缓存的映射关系中获得。
11.根据权利要求10所述的数据库访问系统,其特征在于,分表规则的规则作用域包括SQL标识、表名、项目编号和交易运行信息;则
在分库分表匹配单元中,分别进行分表规则的匹配包括:按照SQL标识、表名、项目编号和交易运行信息的顺序分别进行分表规则的匹配,直到获得匹配的目标数据表,其中,表名通过SQL标识从缓存的映射关系中获得。
12.根据权利要求7-11中任一项所述的数据库访问系统,其特征在于,分库规则和分表规则的规则类型包括常量、映射、表达式和函数资源。
CN201610601972.5A 2016-07-27 2016-07-27 一种数据库访问方法及系统 Pending CN106294565A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610601972.5A CN106294565A (zh) 2016-07-27 2016-07-27 一种数据库访问方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610601972.5A CN106294565A (zh) 2016-07-27 2016-07-27 一种数据库访问方法及系统

Publications (1)

Publication Number Publication Date
CN106294565A true CN106294565A (zh) 2017-01-04

Family

ID=57662692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610601972.5A Pending CN106294565A (zh) 2016-07-27 2016-07-27 一种数据库访问方法及系统

Country Status (1)

Country Link
CN (1) CN106294565A (zh)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107145549A (zh) * 2017-04-27 2017-09-08 深圳智高点知识产权运营有限公司 一种数据库缓存控制方法以及系统
CN107180110A (zh) * 2017-06-13 2017-09-19 北京京润恒远科技有限公司 一种基于DataTable的高效数据库接口的实现方法
CN107391622A (zh) * 2017-07-06 2017-11-24 联动优势科技有限公司 一种数据访问方法及设备
CN107451201A (zh) * 2017-07-06 2017-12-08 联动优势科技有限公司 一种数据访问方法及设备
CN107480184A (zh) * 2017-07-06 2017-12-15 联动优势科技有限公司 一种数据访问方法及设备
CN107491700A (zh) * 2017-07-06 2017-12-19 联动优势科技有限公司 一种数据访问方法及设备
CN107506369A (zh) * 2017-07-06 2017-12-22 联动优势科技有限公司 一种数据访问方法及设备
CN107622091A (zh) * 2017-08-23 2018-01-23 阿里巴巴集团控股有限公司 一种数据库查询方法和装置
CN107679203A (zh) * 2017-10-12 2018-02-09 广州华多网络科技有限公司 一种Redis内部数据库调用方法及系统
CN108628862A (zh) * 2017-03-15 2018-10-09 北京京东尚科信息技术有限公司 数据库寻址方法、装置和系统
CN108763474A (zh) * 2018-05-29 2018-11-06 中国建设银行股份有限公司 获取交易相关性及执行回归测试的方法、装置及存储介质
CN108932284A (zh) * 2018-05-22 2018-12-04 中国银行股份有限公司 通用逻辑调度方法、电子设备及可读存储介质
CN108959315A (zh) * 2017-05-23 2018-12-07 中国移动通信集团重庆有限公司 数据库的访问方法、装置及设备
CN108984549A (zh) * 2017-05-31 2018-12-11 北京京东尚科信息技术有限公司 一种基于动态配置数据库的分库分表数据抽取方法和装置
CN109542925A (zh) * 2018-10-26 2019-03-29 广州朗尊软件科技有限公司 数据库访问系统、方法、设备及多用户商城系统
CN109697068A (zh) * 2017-10-24 2019-04-30 中移(苏州)软件技术有限公司 一种分库分表模式下逻辑sql语句翻译方法和装置
CN110222128A (zh) * 2019-06-12 2019-09-10 浪潮软件集团有限公司 一种生成数据预置sql的方法及装置
CN110489441A (zh) * 2019-08-12 2019-11-22 厦门商集网络科技有限责任公司 一种基于大数据的即席查询方法及设备
CN111125114A (zh) * 2019-12-25 2020-05-08 中国建设银行股份有限公司 数据库横向扩展、数据表访问方法及装置
CN111221840A (zh) * 2018-11-23 2020-06-02 阿里巴巴集团控股有限公司 数据处理方法及装置、数据缓存方法、存储介质、系统
CN111259081A (zh) * 2020-02-04 2020-06-09 杭州数梦工场科技有限公司 一种数据同步方法、装置、电子设备及存储介质
CN111400110A (zh) * 2020-03-11 2020-07-10 中国建设银行股份有限公司 数据库访问管理系统
WO2020211570A1 (zh) * 2019-04-19 2020-10-22 深圳前海微众银行股份有限公司 缓存处理方法、装置、设备及计算机可读存储介质
CN111984666A (zh) * 2019-05-23 2020-11-24 北京数聚鑫云信息技术有限公司 数据库访问方法、装置、计算机可读存储介质和计算机设备
CN112181990A (zh) * 2020-10-15 2021-01-05 金蝶云科技有限公司 一种临时表重用的方法及装置
CN112182637A (zh) * 2019-07-04 2021-01-05 中移信息技术有限公司 一种安全控制系统、方法、装置及存储介质
CN112597231A (zh) * 2020-12-28 2021-04-02 中国农业银行股份有限公司 一种数据处理方法和装置
CN112612530A (zh) * 2019-09-18 2021-04-06 华为技术有限公司 类查询方法及装置
CN114238333A (zh) * 2021-12-17 2022-03-25 中国邮政储蓄银行股份有限公司 数据拆分方法、装置以及设备
CN114328719A (zh) * 2021-11-30 2022-04-12 唯品会(广州)软件有限公司 数据库语句同步方法、系统、电子设备及计算机可读存储介质
CN114490742A (zh) * 2020-11-12 2022-05-13 中移物联网有限公司 一种数据查询方法、装置和电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193922A (zh) * 2010-03-04 2011-09-21 杭州华三通信技术有限公司 一种对数据库进行访问的方法和装置
CN103714097A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种访问数据库的方法和装置
CN104408174A (zh) * 2014-12-12 2015-03-11 用友软件股份有限公司 数据库路由装置和方法
CN105335477A (zh) * 2015-10-10 2016-02-17 北京京东尚科信息技术有限公司 一种数据库的操作方法及装置
US9396287B1 (en) * 2011-10-05 2016-07-19 Cumulus Systems, Inc. System for organizing and fast searching of massive amounts of data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193922A (zh) * 2010-03-04 2011-09-21 杭州华三通信技术有限公司 一种对数据库进行访问的方法和装置
US9396287B1 (en) * 2011-10-05 2016-07-19 Cumulus Systems, Inc. System for organizing and fast searching of massive amounts of data
CN103714097A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种访问数据库的方法和装置
CN104408174A (zh) * 2014-12-12 2015-03-11 用友软件股份有限公司 数据库路由装置和方法
CN105335477A (zh) * 2015-10-10 2016-02-17 北京京东尚科信息技术有限公司 一种数据库的操作方法及装置

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628862A (zh) * 2017-03-15 2018-10-09 北京京东尚科信息技术有限公司 数据库寻址方法、装置和系统
CN107145549B (zh) * 2017-04-27 2020-01-14 深圳智高点知识产权运营有限公司 一种数据库缓存控制方法以及系统
CN107145549A (zh) * 2017-04-27 2017-09-08 深圳智高点知识产权运营有限公司 一种数据库缓存控制方法以及系统
CN108959315A (zh) * 2017-05-23 2018-12-07 中国移动通信集团重庆有限公司 数据库的访问方法、装置及设备
CN108984549A (zh) * 2017-05-31 2018-12-11 北京京东尚科信息技术有限公司 一种基于动态配置数据库的分库分表数据抽取方法和装置
CN107180110A (zh) * 2017-06-13 2017-09-19 北京京润恒远科技有限公司 一种基于DataTable的高效数据库接口的实现方法
CN107480184A (zh) * 2017-07-06 2017-12-15 联动优势科技有限公司 一种数据访问方法及设备
CN107506369A (zh) * 2017-07-06 2017-12-22 联动优势科技有限公司 一种数据访问方法及设备
CN107491700A (zh) * 2017-07-06 2017-12-19 联动优势科技有限公司 一种数据访问方法及设备
CN107451201A (zh) * 2017-07-06 2017-12-08 联动优势科技有限公司 一种数据访问方法及设备
CN107391622A (zh) * 2017-07-06 2017-11-24 联动优势科技有限公司 一种数据访问方法及设备
CN107491700B (zh) * 2017-07-06 2020-07-14 联动优势科技有限公司 一种数据访问方法及设备
CN107622091A (zh) * 2017-08-23 2018-01-23 阿里巴巴集团控股有限公司 一种数据库查询方法和装置
CN107622091B (zh) * 2017-08-23 2020-11-13 创新先进技术有限公司 一种数据库查询方法和装置
CN107679203A (zh) * 2017-10-12 2018-02-09 广州华多网络科技有限公司 一种Redis内部数据库调用方法及系统
CN107679203B (zh) * 2017-10-12 2020-11-13 广州华多网络科技有限公司 一种Redis内部数据库调用方法及系统
CN109697068A (zh) * 2017-10-24 2019-04-30 中移(苏州)软件技术有限公司 一种分库分表模式下逻辑sql语句翻译方法和装置
CN108932284B (zh) * 2018-05-22 2020-11-24 中国银行股份有限公司 通用逻辑调度方法、电子设备及可读存储介质
CN108932284A (zh) * 2018-05-22 2018-12-04 中国银行股份有限公司 通用逻辑调度方法、电子设备及可读存储介质
CN108763474B (zh) * 2018-05-29 2021-10-22 中国建设银行股份有限公司 获取交易相关性及执行回归测试的方法、装置及存储介质
CN108763474A (zh) * 2018-05-29 2018-11-06 中国建设银行股份有限公司 获取交易相关性及执行回归测试的方法、装置及存储介质
CN109542925A (zh) * 2018-10-26 2019-03-29 广州朗尊软件科技有限公司 数据库访问系统、方法、设备及多用户商城系统
CN111221840A (zh) * 2018-11-23 2020-06-02 阿里巴巴集团控股有限公司 数据处理方法及装置、数据缓存方法、存储介质、系统
CN111221840B (zh) * 2018-11-23 2023-05-30 阿里云计算有限公司 数据处理方法及装置、数据缓存方法、存储介质、系统
WO2020211570A1 (zh) * 2019-04-19 2020-10-22 深圳前海微众银行股份有限公司 缓存处理方法、装置、设备及计算机可读存储介质
CN111984666A (zh) * 2019-05-23 2020-11-24 北京数聚鑫云信息技术有限公司 数据库访问方法、装置、计算机可读存储介质和计算机设备
CN111984666B (zh) * 2019-05-23 2024-03-29 北京数聚鑫云信息技术有限公司 数据库访问方法、装置、计算机可读存储介质和计算机设备
CN110222128B (zh) * 2019-06-12 2022-10-14 浪潮软件集团有限公司 一种生成数据预置sql的方法及装置
CN110222128A (zh) * 2019-06-12 2019-09-10 浪潮软件集团有限公司 一种生成数据预置sql的方法及装置
CN112182637A (zh) * 2019-07-04 2021-01-05 中移信息技术有限公司 一种安全控制系统、方法、装置及存储介质
CN110489441A (zh) * 2019-08-12 2019-11-22 厦门商集网络科技有限责任公司 一种基于大数据的即席查询方法及设备
CN112612530A (zh) * 2019-09-18 2021-04-06 华为技术有限公司 类查询方法及装置
CN112612530B (zh) * 2019-09-18 2022-05-17 华为技术有限公司 类查询方法及装置
CN111125114B (zh) * 2019-12-25 2023-06-16 中国建设银行股份有限公司 数据库横向扩展、数据表访问方法及装置
CN111125114A (zh) * 2019-12-25 2020-05-08 中国建设银行股份有限公司 数据库横向扩展、数据表访问方法及装置
CN111259081A (zh) * 2020-02-04 2020-06-09 杭州数梦工场科技有限公司 一种数据同步方法、装置、电子设备及存储介质
CN111400110B (zh) * 2020-03-11 2023-12-19 中国建设银行股份有限公司 数据库访问管理系统
CN111400110A (zh) * 2020-03-11 2020-07-10 中国建设银行股份有限公司 数据库访问管理系统
CN112181990A (zh) * 2020-10-15 2021-01-05 金蝶云科技有限公司 一种临时表重用的方法及装置
CN114490742A (zh) * 2020-11-12 2022-05-13 中移物联网有限公司 一种数据查询方法、装置和电子设备
CN112597231A (zh) * 2020-12-28 2021-04-02 中国农业银行股份有限公司 一种数据处理方法和装置
CN114328719A (zh) * 2021-11-30 2022-04-12 唯品会(广州)软件有限公司 数据库语句同步方法、系统、电子设备及计算机可读存储介质
CN114238333A (zh) * 2021-12-17 2022-03-25 中国邮政储蓄银行股份有限公司 数据拆分方法、装置以及设备

Similar Documents

Publication Publication Date Title
CN106294565A (zh) 一种数据库访问方法及系统
US11392599B2 (en) Multi-tenancy for structured query language (SQL) and non structured query language (NOSQL) databases
US11599535B2 (en) Query translation for searching complex structures of objects
CA2507336C (en) Method and system for indexing and searching databases
US9208186B2 (en) Indexing technique to deal with data skew
CN111767303A (zh) 一种数据查询方法、装置、服务器及可读存储介质
CN104102710A (zh) 一种海量数据查询方法
US8812489B2 (en) Swapping expected and candidate affinities in a query plan cache
US11281667B2 (en) Distributed storage and distributed processing policy enforcement utilizing virtual identifiers
EP2788896B1 (en) Fuzzy full text search
US8015195B2 (en) Modifying entry names in directory server
US20170154078A1 (en) Systems and methods for searching multiple related tables
US20190354516A1 (en) Single-level, multi-dimension, hash-based table partitioning
Li et al. Efficient subspace skyline query based on user preference using MapReduce
US11249974B1 (en) Partition key/value pair sorting and splitting techniques
CN102378407B (zh) 一种物联网中的对象名字解析系统及其解析方法
US20080114752A1 (en) Querying across disparate schemas
US8478793B2 (en) Virtual pair algorithm for outer join resolution
Li et al. MR‐tree: an efficient index for MapReduce
Lu et al. A survey of mapreduce based parallel processing technologies
US20160019204A1 (en) Matching large sets of words
US20220309112A1 (en) Building a base index for search
Ohshima et al. Cloud as virtual databases: Bridging private databases and web services
US20240126763A1 (en) Extending database data with intended usage information
CN116361295A (zh) 一种针对高读写争用工作负载的可验证索引构建、更新与验证方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170104

RJ01 Rejection of invention patent application after publication