CN111897824A - 数据操作方法、装置、设备和存储介质 - Google Patents

数据操作方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN111897824A
CN111897824A CN202010216379.5A CN202010216379A CN111897824A CN 111897824 A CN111897824 A CN 111897824A CN 202010216379 A CN202010216379 A CN 202010216379A CN 111897824 A CN111897824 A CN 111897824A
Authority
CN
China
Prior art keywords
data
database
operated
operation instruction
attribute
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
CN202010216379.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.)
Shanghai Yunli Information Technology Co.,Ltd.
Original Assignee
Shanghai Yunli Technology Co ltd
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 Shanghai Yunli Technology Co ltd filed Critical Shanghai Yunli Technology Co ltd
Priority to CN202010216379.5A priority Critical patent/CN111897824A/zh
Publication of CN111897824A publication Critical patent/CN111897824A/zh
Pending legal-status Critical Current

Links

Images

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/23Updating
    • 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
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2468Fuzzy queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Fuzzy Systems (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Automation & Control Theory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据操作方法、装置、设备和存储介质,该方法包括:获取第一数据操作指令,然后根据第一数据操作指令中包括的待操作数据的数据属性,确定与其对应的数据库,若数据属性指示待操作数据为不可扩展字段的数据,则确定与其对应的数据库为关系型数据库,若数据属性指示待操作数据为可扩展字段的数据,则确定与其对应的数据库为非关系型数据库,再根据第一数据操作指令中包括的操作方式,在已经确定的数据库中对待操作数据执行相应的操作,即完成了数据操作的过程。保留关系型数据库存储不需要扩展的主体数据,同时增加非关系型数据库存储需要进行字段扩展的对象,这样,在数据操作过程中即可实现字段扩展,提高了字段扩展的效率。

Description

数据操作方法、装置、设备和存储介质
技术领域
本申请涉及数据库技术,尤其涉及一种数据操作方法、装置、设备和存储介质。
背景技术
目前,数据库领域应用较为普遍的数据库类型包括关系型数据库和非关系型数据库。其中,关系型数据库因其查询语法的多样性、支持多表联合查询、支持事务等功能特性,而在互联网行业中广泛应用。然而,随着云计算的发展和大数据时代的到来,数据量的急速增多,对数据库的扩展性要求更高,关系型数据库的缺点也越来越明显,在进行表字段扩展和索引的增加上,不够灵活高效。
相关技术中,一般选择在构建数据库时,在表中预留一些列,以供字段扩展使用,然而,面对不可预估的数据量,预留字段的多少根本无法预估,以至于在预留量大时造成空间浪费或者在预留量小时仍需要进行二次扩展。因此,这种静态扩展方式的适用性较差,效率较低。
发明内容
本申请提供一种数据操作方法、装置、设备和存储介质,以实现数据库对象的动态扩展,提高扩展效率。
第一方面,本申请提供一种数据操作方法,包括:获取第一数据操作指令,所述第一数据操作指令中包括待操作数据的数据属性、操作方式;根据所述数据属性,确定与所述数据属性对应的数据库;根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作;若所述数据属性指示所述待操作数据为不可扩展字段的数据,则所述数据库为关系型数据库,若所述数据属性指示所述待操作数据为可扩展字段的数据,则所述数据库为非关系型数据库。
可选的,若所述可扩展字段的数据长度小于预设长度,则所述数据库为第一数据库,若所述可扩展字段的数据长度大于等于预设长度,则所述数据库为第二数据库。
可选的,所述第一数据操作指令为所述关系型数据库可识别的语句。在所述数据库中对所述待操作数据执行相应的操作之前,所述数据操作方法还包括:若所述数据属性指示所述待操作数据为可扩展字段的数据,则根据所述第一数据操作指令和所述非关系型数据库的语法,生成第二数据操作指令,所述第二数据操作指令包括:待操作数据的数据属性、操作方式。所述根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作,包括:根据第二数据操作指令,在所述非关系型数据库中对所述待操作数据执行相应的操作。
可选的,若所述非关系型数据库为第一数据库,所述第二操作指令为第一数据库可识别的语句。若所述非关系型数据库为第二数据库,所述第二操作指令为第二数据库可识别的语句。
可选的,所述操作方式为数据查询,或者,数据写入,或者,数据更新。其中,若所述操作方式为数据写入或者数据更新,则所述第一操作指令还包括待操作数据。
可选的,根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作,包括:若根据所述数据属性确定所述待操作数据为可操作的数据,则在所述数据库中对所述待操作数据执行相应的操作。
可选的,所述数据操作方法还包括:若根据所述数据属性确定所述待操作数据为不可操作的数据,输出提示信息,所述提示信息用于指示操作失败。
第二方面,本申请提供一种数据操作装置,包括:获取模块,用于获取第一数据操作指令,所述第一数据操作指令中包括待操作数据的数据属性、操作方式;确定模块,用于根据所述数据属性,确定与所述数据属性对应的数据库;若所述数据属性指示所述待操作数据为不可扩展字段的数据,则所述数据库为关系型数据库,若所述数据属性指示所述待操作数据为可扩展字段的数据,则所述数据库为非关系型数据库;处理模块,用于根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作。
可选的,若所述可扩展字段的数据长度小于预设长度,则所述数据库为第一数据库,若所述可扩展字段的数据长度大于等于预设长度,则所述数据库为第二数据库。
可选的,所述第一数据操作指令为所述关系型数据库可识别的语句;所述数据操作装置还包括:生成模块,用于所述处理模块在所述数据库中对所述待操作数据执行相应的操作之前,若所述数据属性指示所述待操作数据为可扩展字段的数据,则根据所述第一数据操作指令和所述非关系型数据库的语法,生成第二数据操作指令。所述第二数据操作指令包括:待操作数据的数据属性、操作方式。所述处理模块,具体用于:根据第二数据操作指令,在所述非关系型数据库中对所述待操作数据执行相应的操作。
可选的,若所述非关系型数据库为第一数据库,所述第二操作指令为第一数据库可识别的语句。若所述非关系型数据库为第二数据库,所述第二操作指令为第二数据库可识别的语句。
可选的,所述操作方式为数据查询,或者,数据写入,或者,数据更新。其中,若所述操作方式为数据写入或者数据更新,则所述第一操作指令还包括待操作数据。
可选的,所述处理模块,具体用于:若根据所述数据属性确定所述待操作数据为可操作的数据,则在所述数据库中对所述待操作数据执行相应的操作。
可选的,所述数据操作装置还包括:输出模块,用于若所述确定模块根据所述数据属性确定所述待操作数据为不可操作的数据,输出提示信息,所述提示信息用于指示操作失败。
第三方面,本申请提供一种数据操作设备,包括:存储器,用于存储程序指令;处理器,用于调用并执行所述存储器中的程序指令,执行如第一方面所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如第一方面所述的方法。
第五方面,本申请提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,处理器可以从所述可读存储介质读取所述计算机程序,所述处理器执行所述计算机程序以实施如本申请第一方面所述的方法。
本申请提供了一种数据操作方法、装置、设备和存储介质,获取第一数据操作指令,第一数据操作指令中包括待操作数据的数据属性、操作方式,然后根据数据属性,可以确定与其对应的数据库,若数据属性指示待操作数据为不可扩展字段的数据,则可以确定与其对应的数据库为关系型数据库,若数据属性指示待操作数据为可扩展字段的数据,则可以确定与其对应的数据库为非关系型数据库,再根据操作方式,在已经确定的数据库中对待操作数据执行相应的操作,即完成了数据操作的过程。此方法依旧保留关系型数据库用来存储不需要扩展的主体数据,同时增加非关系型数据库用来存储需要进行字段扩展的对象,这样,在数据操作过程中即可实现字段扩展,同时减少不必要的空间浪费,也无需对数据库进行多次调整,从而提高扩展效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的数据操作方法的应用场景示意图;
图2为本申请一实施例提供的数据操作方法的流程图;
图3为本申请另一实施例提供的数据操作方法的流程图;
图4为本申请另一实施例提供的数据操作方法的流程图;
图5为本申请一实施例提供的数据操作装置的结构示意图;
图6为本申请一实施例提供的数据操作设备的结构示意图;
图7为本申请另一实施例提供的数据操作装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,数据库领域应用较为普遍的数据库类型包括关系型数据库和非关系型数据库。其中,关系型数据库因其查询语法的多样性、支持多表联合查询、支持事务等功能特性,而在互联网行业中广泛应用。然而,随着云计算的发展和大数据时代的到来,数据量的急速增多,对数据库的扩展性要求更高,关系型数据库的缺点也越来越明显,在进行表字段扩展和索引的增加上,不够灵活高效。
相关技术中,一般选择在构建数据库时,在表中预留一些列,以供字段扩展使用,然而,面对不可预估的数据量,预留字段的多少根本无法预估,以至于在预留量大时造成空间浪费或者在预留量小时仍需要进行二次扩展。因此,这种静态扩展方式的适用性较差,效率较低。
而非关系型数据库,尽管不能支持联合查询,也不具备执行事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四要素,但是却适用于非结构化数据的存储,相对于关系型数据库更加适用于字段扩展。基于此,本申请提出将关系型数据库与非关系型数据库结合的方案,保留关系型数据库用来存储不需要扩展的主体数据,同时增加非关系型数据库用来存储需要进行字段扩展的对象,这样,在数据操作过程中即可实现字段扩展,同时避免了不必要的空间浪费,也无需对对关系型数据库进行多次调整。下面以几个相关实施例来详细说明本申请的方案。
图1为本申请一实施例提供的数据操作方法的应用场景示意图。如图1所示,终端设备101和终端设备102都可以与服务器103进行数据交互。用户通过操作终端设备101使得终端设备101可以向服务器103发送数据操作指令,服务器103接收到操作指令后,根据操作指令进行相应的数据操作,并将数据操作的结果反馈给终端设备101。用户也可以通过终端设备102实现相同的数据操作过程。需要说明的是,终端设备并不限于电脑、手机等设备。
图2为本申请一实施例提供的数据操作方法的流程图,如图2所示,本实施例的方法可以包括:
S201、获取第一数据操作指令,第一数据操作指令中包括待操作数据的数据属性、操作方式。
在有数据操作需求的时候,需要通过特定的数据操作指令执行,数据操作指令中会包括有具体的操作方式和待操作数据的数据属性,本方法的第一步就是要获取到此数据操作指令,这里称为第一数据操作指令。
S202、根据数据属性,确定与数据属性对应的数据库;若数据属性指示待操作数据为不可扩展字段的数据,则数据库为关系型数据库,若数据属性指示待操作数据为可扩展字段的数据,则数据库为非关系型数据库。
上述获取的第一数据操作指令中包括待操作数据的数据属性,数据属性指示待操作数据是否需要扩展,根据此属性,可以确定对应的数据库,如果数据属性指示待操作数据为不可扩展字段的数据,则与之对应的数据库为关系型数据库,若数据属性指示待操作数据为可扩展字段的数据,则与之对应的数据库为非关系型数据库。
S203、根据操作方式,在数据库中对待操作数据执行相应的操作。
第一数据操作指令中还包括操作方式,在确定了具体的数据库后,即可根据第一数据操作指令中的操作方式在对应的数据库中对待操作数据执行相应的操作。
本实施例提供的方法,首先获取第一数据操作指令,然后根据第一数据操作指令中包括的待操作数据的数据属性,确定与其对应的数据库,若数据属性指示待操作数据为不可扩展字段的数据,则可以确定与其对应的数据库为关系型数据库,若数据属性指示待操作数据为可扩展字段的数据,则可以确定与其对应的数据库为非关系型数据库,再根据第一数据操作指令中包括的操作方式,在已经确定的对应的数据库中对待操作数据执行相应的操作,即可完成对可扩展数据和不可扩展数据的数据操作过程。此方法所基于的数据库依旧保留关系型数据库用来存储不需要扩展的主体数据,同时增加非关系型数据库用来存储需要进行字段扩展的对象,再辅以本方法,即可在数据操作过程中实现字段扩展,同时避免了关系型数据库中不必要的空间浪费,也无需对关系型数据库进行多次调整,从而提高了字段扩展的效率。
下面采用几个具体的实施例,对图1所示方法实施例的技术方案进行详细说明。
在一些实施方式中,操作方式可能为数据查询,也可能为数据写入,还可能为数据更新。当操作方式为数据写入或者数据更新时,则第一操作指令中还包括待操作数据。执行相应操作时,就是将带操作数据写入到数据属性所指示的位置。而当操作方式为数据查询时,执行相应操作时,就是将数据属性所指示的位置的数据读取出来,此时,本实施例中的数据操作方法还包括,将查询到的数据整合后进行反馈,整合的具体方式可以采用归并算法,具体实现方式不再赘述。
可以理解的是,数据操作指令中包括的待操作数据或数据属性所指向的待操作数据可能为多个,且多个待操作数据的数据属性也并不一定相同,因此同一个数据操作指令指示的待操作数据可能都为主数据,即所有数据都对应关系型数据库,也可能都为扩展数据,即所有数据都对应非关系型数据库,还可能既包括主数据也包括扩展数据,即一部分数据对应关系型数据库,一部分数据对应非关系型数据库。
相应的,在一些实施例中,当待操作数据中既包括主数据也包括扩展数据,即一部分数据对应关系型数据库,一部分数据对应非关系型数据库时,在根据数据属性确定对应的数据库时,具体的,需要根据数据属性对此第一数据操作指令进行语句拆分,两个子语句分别对应两个数据库,以便于在两个数据库中分别执行操作。
图3为本申请另一实施例提供的数据操作方法的流程图,如图3所示,本实施例的方法可以包括:
S301、获取第一数据操作指令,第一数据操作指令为关系型数据库可识别的语句;第一数据操作指令中包括待操作数据的数据属性、操作方式。
S302、若数据属性指示待操作数据为可扩展字段的数据,则确定数据库为非关系型数据库。
本实施例中,步骤S301-S302的具体实现过程可以参见图1所示实施例的相关描述,此处不再赘述。
S303、根据第一数据操作指令和非关系型数据库的语法,生成第二数据操作指令,第二数据操作指令包括:待操作数据的数据属性、操作方式。
S304、根据第二数据操作指令,在非关系型数据库中对待操作数据执行相应的操作。
不同数据库适用不同的语法,在本实施例中,获取到的第一数据操作指令为关系型数据库可识别的语句,当待操作数据中包括扩展数据时,在非关系型数据库中执行操作指令之前,要将获取到的关系型数据库可识别的语句的语法进行改变,生成对应非关系型数据库的语法的操作指令,这里称为第二数据操作指令。其中,关系型数据库的适用语言为结构化查询语言(Structured Query Language,SQL),因此上述的关系型数据库可识别的语句可以为SQL语句。
本实施例提供的方法,在数据操作之前,对数据操作指令的语法进行转换,生成相应的数据库适用的语法,以完成对应数据库中的数据操作。本实施例所基于的数据库依旧保留关系型数据库存储不需要扩展的主体数据,同时增加非关系型数据库存储需要进行字段扩展的对象,再辅以本方法,即可在数据操作过程中实现字段扩展,同时避免了关系型数据库中不必要的空间浪费,也无需对关系型数据库进行多次调整,从而提高了字段扩展的效率。
在非关系型数据库中,各个具体的数据库都分别有其优劣势,根据不同的需要可以选择不同的非关系型数据库,也可以同时选取两个或以上的非关系型数据库进行优势互补,取得更佳的效果。
在一些实施方式中,可以采用两个非关系型数据库分别对于字段长度不同的扩展数据进行存储,若可扩展字段的数据长度小于预设长度,则数据库为第一数据库,若可扩展字段的数据长度大于等于预设长度,则数据库为第二数据库。
非关系型数据库中,分布式数据库的扩展性较好,例如,MongoDB数据库和ElasticSearch数据库都属于分布式存储的数据库。MongoDB数据库可以存储比较复杂的数据类型,支持的查询语言非常强大,其语法类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引,较为适合频繁的增加对象字段、索引等需求。ElasticSearch数据库中每个字段的数据均可被搜索,只需将对象设置为可搜索,就会自动增加索引字段,而且,可以支持模糊查询以及大对象字段的匹配。因此,上述的第一数据库可以选用MongoDB数据库,上述的第二数据库可以选用ElasticSearch数据库。可选的,上述的预设长度例如为字段长度64。这里仅作为一种举例,并不对非关系型数据的数量和具体类型做限定。
在一些实施方式中,非关系型数据库为第一数据库时,第二操作指令为第一数据库可识别的语句;若非关系型数据库为第二数据库时,第二操作指令为第二数据库可识别的语句。
在一些实施方式中,数据属性中还可能包括指示数据可操作性的属性,例如,是否可搜索、是否可以更新等。基于此,根据操作方式,在数据库中对待操作数据执行相应的操作,具体包括:若根据数据属性确定待操作数据为可操作的数据,则在数据库中对待操作数据执行相应的操作。
而对于根据数据属性确定的不可操作的数据,输出提示信息,提示信息用于指示操作失败。
因是否可操作是标注在属性中的,因此,通过修改属性值还可以变更数据的可操作性,将不可操作的数据属性变更为可操作,或将可操作的数据属性变更为不可操作。
图4为本申请另一实施例提供的数据操作方法的流程图,如图4所示,本实施例的方法可以包括:
S401、获取第一数据操作指令,第一数据操作指令为关系型数据库可识别的语句;第一数据操作指令中包括待操作数据的数据属性、操作方式;执行S402。
S402、根据数据属性,判断待操作数据是否为可扩展字段的数据,若是则执行S403,否则执行S406。
S403、判断可扩展字段的数据长度是否小于预设长度,若是则执行S404,否则执行S405。
S404、根据第一数据操作指令和第二数据库的语法,生成第二数据库可识别的数据操作指令,生成的第二数据库可识别的数据操作指令包括:待操作数据的数据属性、操作方式;执行S406。
S405、根据第一数据操作指令和第一数据库的语法,生成第一数据库可识别的数据操作指令,生成的第一数据库可识别的数据操作指令包括:待操作数据的数据属性、操作方式;执行S406。
S406、根据数据属性,判断待操作数据是否为可操作的数据。
数据属性中还可能包括有指示待操作数据是否可操作的属性信息,例如,是否可以搜索、是否可以更新等。当第一数据操作指令为查询时,若数据属性指示待查询数据是不可搜索的,也就是说对应的数据被设置为禁止查询,这样执行查询操作也是没有意义的,所以先对数据属性进行判断,只有当数据是可操作的才执行对应的操作。
如果待操作数据是不可扩展字段的数据,则根据数据属性,判断待操作数据是否为可操作的数据,若是,则执行S407,若否则执行S410。
在执行S404之后,判断待操作数据是否为可操作的数据,若是,则执行S408,若否则执行S410。
在执行S405之后,判断待操作数据是否为可操作的数据,若是,则执行S409,若否则执行S410。
S407、在关系型数据库中对待操作数据执行相应的操作。
S408、在第一数据库中对待操作数据执行相应的操作。
S409、在第二数据库中对待操作数据执行相应的操作。
S410、输出提示信息,提示信息用于指示操作失败。
本实施例所基于的数据库依旧保留关系型数据库存储不需要扩展的主体数据,同时增加非关系型数据库存储需要进行字段扩展的对象,再辅以本方法,即可在数据操作过程中实现字段扩展,同时避免了关系型数据库中不必要的空间浪费,也无需对关系型数据库进行多次调整,从而提高了字段扩展的效率。
在一个具体的实施例中,以第一数据库为MongoDB数据库,第二数据库为ElasticSearch(ES)数据库为例说明。将整个数据存储空间分为3层,第一层使用关系型数据库存储不扩展的主体对象,第二层通过非关系型数据库,具体的可以是MongoDB数据库存储需要扩展且字段长度小于64的对象,第三层使用ElasticSearch(ES)数据库存储字段长度大于等于64的对象。是否可扩展、字段长度等信息预先作为对象属性进行设置。在进行数据操作时,首先获取到数据操作指令,根据数据属性中指示扩展性的信息,将此数据操作指令划分成为两部分,一部分包含或指向的待操作对象为主体对象,另一部分包含或指向的待操作对象为扩展对象,再根据数据属性中的字段长度信息,将扩展对象操作指令划分为两部分,一部分包含或指向的对象字段长度小于64,另一部分包含或指向的对象字段长度大于或等于64,然后对最终形成的三个操作指令进行检查,主要根据数据属性判断是否可操作,还可以判断指令中的列是否合法等,若检查结果表明有不可操作的数据,则输出一提示信息,指示操作失败,若检查结果无误,接下来根据三个操作指令分别在对应的三层数据库中执行相应的数据操作,聚合结果等。当操作方式为查询操作时,在执行完成后,还要对查询到的结果进行整合,然后输出。
数据库领域通常分为关系型和非关系型数据库两种,目前,关系型数据库还是占据着主流的位置,大多数的系统,在考虑数据持久落地时,还是以诸如MySQL数据库、Orcale数据库等主流的关系型数据库为首选。关系型数据库优缺点都很明显,优点:查询语法多样、支持多表联合查询、支持事务ACID等;缺点:在进行字段扩展和索引增加上,不够灵活高效,导致当需要对某一张已经存在且数据量达到一定量级的表进行基于数据库模式定义语言(Data Definition Language,DDL)的操作时,显得力不从心。
而非关系型数据库也同样有它的优劣势。比如较高的每秒查询率(Queries-per-second,QPS),例如Redis数据库、MemCache数据库等;同时还支持非结构化数据存储,例如MongoDB数据库的文档型存储结构。却对于Join查询、ACID事务等力不从心。
本申请通过结合多种数据源的方式,可以在实现对数据的高扩展性的同时保持高水平的QPS。
Facebook早年在处理关系型数据库字段扩展问题时,采用的方案为,在建表时冗余一部分的列(column),当需要字段扩展时,使用这些已存在于数据库中的column作为扩展字段使用。
这种扩展方式属于静态扩展,即通过冗余字段的方式规划好数据库表字段的规模,但业务往往都是不可估量的,特别是在这个数据爆发的时代,产品的需求很难在一开始就定义完善,通常都需要在几个甚至数十个迭代后才能趋于稳定,所以很难在一开始就估算出表内具体需要预留多少扩展的对象字段,当字段冗余得少时,面临不够用的问题,这个时候又需要动态的去扩展字段,而当字段冗余多了,会面临空间资源浪费的问题。
有一些方案使用竖表存储的方式替代目前的横表存储,通过增加键值(key-value),实现字段扩展。
这种方法在一定程度上可以解决关系型数据库字段扩展的问题,但却造成了其他的问题。只是key-value的存储,就相当于非关系型数据库(NoSql)了,无法支持Join、子查询等关联查询操作。另外,还要解决同一张表中对象字段类型不一致时的存储问题。通常,将某一张横表改为竖表时,当表中定义的字段类型都不相同,需要在竖表内将每一种数据类型定义一个value值,在存储时先判断value值的类型,然后再手动的将该值存到对应的那一栏中,这样的做法的结果是,依然会有字段冗余。
本申请提供一方案,在数据存储层不再采用单一的存储源,而是在建表时,就明确区分主体对象数据和需要扩展的对象数据。对于主体的数据对象,使用关系型数据库(SQL)进行存储,可以支持对于主体对象的增加、读取、更新、删除及Join、嵌套子查询等复杂的查询操作。而对于可扩展的对象,因为面临经常性的扩展,所以对其采用非关系型数据库(NoSQL)进行存储,在遵循SQL92的规范的前提下,将这些对象定义为仅支持简单的查询语法,而不支持复杂的查询与Join等操作,而在NoSQL中,MongoDB数据库相对更为适用于频繁的增加对象字段、索引的需求,且性能满足目前大多业务需求,因而可以优选MongoDB数据库将这些字段长度小于64位的对象字段存储落地,用户只需通过索引级别的查询、或对可搜索字段进行简单的匹配查询(match)。而对于诸如SQL语句中Like语句之类的模糊查询以及对字段长度大于等于64位的大对象字段的匹配,可以使用ES数据库来处理,当需要对这些字段进行搜索时,将该对象元素属性设置为可搜索,就会自动在ES数据库中增加索引列。
本申请一方案中的数据存储分为3层,第一层使用关系型数据库存储对象主体(不扩展的对象,支持SQL的所有查询语法),第二层通过NoSQL存储需要扩展的对象(实时动态扩展,无性能瓶颈,支持索引级别单表查询操作和可搜索对象字段长度小于64位的查询,支持SQL92协议相关语法),第三层使用ES,在动态扩展对象时设置属性为可搜索,将对象设置为ES索引,支持模糊查询、对象字段长度大于等于64位的查询等要求。
本申请提供的方案在应用中整体架构采用客户端软件开发工具包(SoftwareDevelopment Kit,SDK)接入的方式,在Java数据库连接(Java Database Connectivity,JDBC)层拦截客户端SQL语句,根据元数据定义规则判断是否只是简单的主数据查询还是涉及到扩展字段的查询,对该SQL语句进行拆分,并自动提交到服务端data-service,data-service首先进行SQL解析,产生中间对象,然后进行字段预检查,例如,对查询、插入、更新等操作时所提交的cloumns是否合法,查询、更新操作中的条件是否都为可搜索等,接下来由结果产生相应的执行计划,关系型数据库执行计划、NoSQL执行计划、ES执行计划等,最终由执行器执行,聚合结果。
本申请的一技术方案使用多种数据库混合的架构,数据源不再是单一的,解决了业务场景中的缺陷。该方案更加灵活,且在执行效率上能满足业务需求,同时,业务端接入也很方便。
本申请中的数据库的实现为插件化的方式,无论使用哪种数据库,只需要实现插件接入的StrorageServicePlugin相关接口即可。
客户端SDK接入无侵入性,用户无感知,使用者只需要引入相关Maven依赖,并在配置文件中配置服务端data-service的访问地址到JDBC连接字符串中即可。SDK自动完成SQL语句拆分、提交、返回结果合并成对象生成(反序列化)等步骤。
可动态、随时修改字段的可搜索性(searchable属性),当开启后,用户的下一次SQL请求即时生效。比如:在开启某字段可搜索属性前,当SQL查询语句where条件中出现该字段作为查询条件时,服务端会提示该字段无法搜索的错误,而当设置完该字段为可搜索后,执行同样的SQL语句时不再报错,且返回相关的查询结果集。
图5为本申请一实施例提供的数据操作装置的结构示意图,如图5所示,本实施例的装置可以包括:获取模块501、确定模块502和处理模块503。
其中,获取模块501,用于获取第一数据操作指令,第一数据操作指令中包括待操作数据的数据属性、操作方式。
确定模块502,用于根据数据属性,确定与数据属性对应的数据库;若数据属性指示待操作数据为不可扩展字段的数据,则数据库为关系型数据库,若数据属性指示待操作数据为可扩展字段的数据,则数据库为非关系型数据库。
处理模块503,用于根据操作方式,在数据库中对待操作数据执行相应的操作。
可选的,若可扩展字段的数据长度小于预设长度,则数据库为第一数据库,若可扩展字段的数据长度大于等于预设长度,则数据库为第二数据库。
可选的,第一数据操作指令为关系型数据库可识别的语句。数据操作装置还包括:生成模块504,用于处理模块在数据库中对待操作数据执行相应的操作之前,若数据属性指示待操作数据为可扩展字段的数据,则根据第一数据操作指令和非关系型数据库的语法,生成第二数据操作指令,第二数据操作指令包括:待操作数据的数据属性、操作方式。处理模块503,具体用于:根据第二数据操作指令,在非关系型数据库中对待操作数据执行相应的操作。
可选的,若非关系型数据库为第一数据库,第二操作指令为第一数据库可识别的语句;若非关系型数据库为第二数据库,第二操作指令为第二数据库可识别的语句。
可选的,操作方式为数据查询,或者,数据写入,或者,数据更新。其中,若操作方式为数据写入或者数据更新,则第一操作指令还包括待操作数据。
可选的,处理模块503,具体用于:若根据数据属性确定待操作数据为可操作的数据,则在数据库中对待操作数据执行相应的操作。
可选的,数据操作装置还包括:输出模块505,用于若确定模块根据数据属性确定待操作数据为不可操作的数据,输出提示信息,提示信息用于指示操作失败。
可选的,当操作方式为查询操作时,输出模块505还用于在执行完成后,对查询到的结果进行整合、输出。
本实施例的装置,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图6为本申请一实施例提供的数据操作设备的结构示意图,如图6所示,本实施例的设备可以包括:存储器601和处理器602。
存储器601,用于存储程序指令。
处理器602,用于调用并执行存储器中的程序指令,执行:获取第一数据操作指令,第一数据操作指令中包括待操作数据的数据属性、操作方式;根据数据属性,确定与数据属性对应的数据库;根据操作方式,在数据库中对待操作数据执行相应的操作;若数据属性指示待操作数据为不可扩展字段的数据,则数据库为关系型数据库,若数据属性指示待操作数据为可扩展字段的数据,则数据库为非关系型数据库。
可选的,若可扩展字段的数据长度小于预设长度,则数据库为第一数据库,若可扩展字段的数据长度大于等于预设长度,则数据库为第二数据库。
可选的,第一数据操作指令为关系型数据库可识别的语句;在数据库中对待操作数据执行相应的操作之前,处理器602还用于执行:若数据属性指示待操作数据为可扩展字段的数据,则根据第一数据操作指令和非关系型数据库的语法,生成第二数据操作指令,第二数据操作指令包括:待操作数据的数据属性、操作方式。相应的,处理器602在根据操作方式,在数据库中对待操作数据执行相应的操作时,具体用于:根据第二数据操作指令,在非关系型数据库中对待操作数据执行相应的操作。
可选的,若非关系型数据库为第一数据库,第二操作指令为第一数据库可识别的语句;若非关系型数据库为第二数据库,第二操作指令为第二数据库可识别的语句。
可选的,操作方式为数据查询,或者,数据写入,或者,数据更新;其中,若操作方式为数据写入或者数据更新,则第一操作指令还包括待操作数据。
可选的,处理器602还用于执行:若根据数据属性确定待操作数据为可操作的数据,则在数据库中对待操作数据执行相应的操作。
可选的,处理器602还用于执行:若根据数据属性确定待操作数据为不可操作的数据,输出提示信息,提示信息用于指示操作失败。
本实施例的设备,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图7为本申请另一实施例提供的数据操作装置的结构示意图。例如,此装置可以被提供为一计算机。参照图7,此装置包括处理组件701,其进一步包括一个或多个处理器,以及由存储器702所代表的存储器资源,用于存储可由处理组件701执行的指令,例如应用程序。存储器702中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件701被配置为执行指令,以执行上述方法。
此装置还可以包括一个电源组件703被配置为执行此装置的电源管理,一个有线或无线网络接口704被配置为将此装置连接到网络,和一个输入输出(I/O)接口705。此装置可以操作基于存储在存储器702的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序被处理器执行时,实现如上任一项的方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种数据操作方法,其特征在于,包括:
获取第一数据操作指令,所述第一数据操作指令中包括待操作数据的数据属性、操作方式;
根据所述数据属性,确定与所述数据属性对应的数据库;
根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作;
若所述数据属性指示所述待操作数据为不可扩展字段的数据,则所述数据库为关系型数据库,若所述数据属性指示所述待操作数据为可扩展字段的数据,则所述数据库为非关系型数据库。
2.根据权利要求1所述的方法,其特征在于,若所述可扩展字段的数据长度小于预设长度,则所述数据库为第一数据库,若所述可扩展字段的数据长度大于等于预设长度,则所述数据库为第二数据库。
3.根据权利要求1所述的方法,其特征在于,所述第一数据操作指令为所述关系型数据库可识别的语句;
在所述数据库中对所述待操作数据执行相应的操作之前,还包括:若所述数据属性指示所述待操作数据为可扩展字段的数据,则根据所述第一数据操作指令和所述非关系型数据库的语法,生成第二数据操作指令,所述第二数据操作指令包括:待操作数据的数据属性、操作方式;
所述根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作,包括:
根据第二数据操作指令,在所述非关系型数据库中对所述待操作数据执行相应的操作。
4.根据权利要求3所述的方法,其特征在于,若所述非关系型数据库为第一数据库,所述第二操作指令为第一数据库可识别的语句;
若所述非关系型数据库为第二数据库,所述第二操作指令为第二数据库可识别的语句。
5.根据权利要求1所述的方法,其特征在于,所述操作方式为数据查询,或者,数据写入,或者,数据更新;
其中,若所述操作方式为数据写入或者数据更新,则所述第一操作指令还包括待操作数据。
6.根据权利要求5所述的方法,其特征在于,根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作,包括:
若根据所述数据属性确定所述待操作数据为可操作的数据,则在所述数据库中对所述待操作数据执行相应的操作。
7.根据权利要求6所述的方法,其特征在于,还包括:
若根据所述数据属性确定所述待操作数据为不可操作的数据,输出提示信息,所述提示信息用于指示操作失败。
8.一种数据操作装置,其特征在于,包括:
获取模块,用于获取第一数据操作指令,所述第一数据操作指令中包括待操作数据的数据属性、操作方式;
确定模块,用于根据所述数据属性,确定与所述数据属性对应的数据库;若所述数据属性指示所述待操作数据为不可扩展字段的数据,则所述数据库为关系型数据库,若所述数据属性指示所述待操作数据为可扩展字段的数据,则所述数据库为非关系型数据库;
处理模块,用于根据所述操作方式,在所述数据库中对所述待操作数据执行相应的操作。
9.一种数据操作设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,执行如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-7任一项所述的方法。
CN202010216379.5A 2020-03-25 2020-03-25 数据操作方法、装置、设备和存储介质 Pending CN111897824A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010216379.5A CN111897824A (zh) 2020-03-25 2020-03-25 数据操作方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010216379.5A CN111897824A (zh) 2020-03-25 2020-03-25 数据操作方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN111897824A true CN111897824A (zh) 2020-11-06

Family

ID=73206193

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010216379.5A Pending CN111897824A (zh) 2020-03-25 2020-03-25 数据操作方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN111897824A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112685611A (zh) * 2020-12-31 2021-04-20 恒安嘉新(北京)科技股份公司 一种数据过滤方法、装置、存储介质及电子设备
CN113377721A (zh) * 2021-07-02 2021-09-10 电信科学技术第五研究所有限公司 一种数据库中存储文件的文件表设计方法
CN114461685A (zh) * 2022-04-14 2022-05-10 天津南大通用数据技术股份有限公司 一种灵活扩展数据库字段的方法
WO2024040931A1 (zh) * 2022-08-24 2024-02-29 华为云计算技术有限公司 一种数据管理方法及相关系统

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103412917A (zh) * 2013-08-08 2013-11-27 广西大学 一种可扩展的多类型领域数据协调管理的数据库系统和管理方法
CN103425780A (zh) * 2013-08-19 2013-12-04 曙光信息产业股份有限公司 一种数据的查询方法和装置
CN103778239A (zh) * 2014-01-28 2014-05-07 北京京东尚科信息技术有限公司 一种多数据库数据管理方法及系统
CN104063409A (zh) * 2013-04-11 2014-09-24 腾讯科技(深圳)有限公司 一种数据库的字段增加方法和系统
CN105512939A (zh) * 2015-12-04 2016-04-20 中国建设银行股份有限公司 外汇业务相关的数据存储、查询方法及申报方法和系统
CN105512167A (zh) * 2015-10-30 2016-04-20 广东广信通信服务有限公司 一种基于混合数据库的多业务用户数据管理系统及其方法
CN106095862A (zh) * 2016-06-02 2016-11-09 四川大学 集中式可扩展融合型多维复杂结构关系数据的存储方法
CN106294499A (zh) * 2015-06-09 2017-01-04 阿里巴巴集团控股有限公司 一种数据库数据查询方法和设备
CN106372177A (zh) * 2016-08-30 2017-02-01 东华大学 支持混合数据类型的关联查询及模糊分组的查询扩展方法
CN106777108A (zh) * 2016-12-15 2017-05-31 贵州电网有限责任公司电力科学研究院 一种基于混合存储架构的数据查询方法和装置
CN106897467A (zh) * 2017-04-24 2017-06-27 成都四方伟业软件股份有限公司 一种大数据分析引擎的数据库适配方法
CN107038207A (zh) * 2017-02-20 2017-08-11 阿里巴巴集团控股有限公司 一种数据查询方法、数据处理方法及装置
CN107491663A (zh) * 2017-10-12 2017-12-19 上海联影医疗科技有限公司 一种管理医学影像数据方法、系统及装置
CN108241627A (zh) * 2016-12-23 2018-07-03 北京神州泰岳软件股份有限公司 一种异构数据存储查询方法和系统
CN109063136A (zh) * 2018-08-03 2018-12-21 北京大米未来科技有限公司 非关系型数据库查询系统及方法
CN109815283A (zh) * 2018-12-18 2019-05-28 中科曙光南京研究院有限公司 一种异构数据源可视化查询方法
CN110389968A (zh) * 2019-07-31 2019-10-29 中国工商银行股份有限公司 聚合查询方法、聚合查询装置、设备及介质

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104063409A (zh) * 2013-04-11 2014-09-24 腾讯科技(深圳)有限公司 一种数据库的字段增加方法和系统
CN103412917A (zh) * 2013-08-08 2013-11-27 广西大学 一种可扩展的多类型领域数据协调管理的数据库系统和管理方法
CN103425780A (zh) * 2013-08-19 2013-12-04 曙光信息产业股份有限公司 一种数据的查询方法和装置
CN103778239A (zh) * 2014-01-28 2014-05-07 北京京东尚科信息技术有限公司 一种多数据库数据管理方法及系统
CN106294499A (zh) * 2015-06-09 2017-01-04 阿里巴巴集团控股有限公司 一种数据库数据查询方法和设备
CN105512167A (zh) * 2015-10-30 2016-04-20 广东广信通信服务有限公司 一种基于混合数据库的多业务用户数据管理系统及其方法
CN105512939A (zh) * 2015-12-04 2016-04-20 中国建设银行股份有限公司 外汇业务相关的数据存储、查询方法及申报方法和系统
CN106095862A (zh) * 2016-06-02 2016-11-09 四川大学 集中式可扩展融合型多维复杂结构关系数据的存储方法
CN106372177A (zh) * 2016-08-30 2017-02-01 东华大学 支持混合数据类型的关联查询及模糊分组的查询扩展方法
CN106777108A (zh) * 2016-12-15 2017-05-31 贵州电网有限责任公司电力科学研究院 一种基于混合存储架构的数据查询方法和装置
CN108241627A (zh) * 2016-12-23 2018-07-03 北京神州泰岳软件股份有限公司 一种异构数据存储查询方法和系统
CN107038207A (zh) * 2017-02-20 2017-08-11 阿里巴巴集团控股有限公司 一种数据查询方法、数据处理方法及装置
CN106897467A (zh) * 2017-04-24 2017-06-27 成都四方伟业软件股份有限公司 一种大数据分析引擎的数据库适配方法
CN107491663A (zh) * 2017-10-12 2017-12-19 上海联影医疗科技有限公司 一种管理医学影像数据方法、系统及装置
CN109063136A (zh) * 2018-08-03 2018-12-21 北京大米未来科技有限公司 非关系型数据库查询系统及方法
CN109815283A (zh) * 2018-12-18 2019-05-28 中科曙光南京研究院有限公司 一种异构数据源可视化查询方法
CN110389968A (zh) * 2019-07-31 2019-10-29 中国工商银行股份有限公司 聚合查询方法、聚合查询装置、设备及介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112685611A (zh) * 2020-12-31 2021-04-20 恒安嘉新(北京)科技股份公司 一种数据过滤方法、装置、存储介质及电子设备
CN113377721A (zh) * 2021-07-02 2021-09-10 电信科学技术第五研究所有限公司 一种数据库中存储文件的文件表设计方法
CN114461685A (zh) * 2022-04-14 2022-05-10 天津南大通用数据技术股份有限公司 一种灵活扩展数据库字段的方法
CN114461685B (zh) * 2022-04-14 2022-07-01 天津南大通用数据技术股份有限公司 一种灵活扩展数据库字段的方法
WO2024040931A1 (zh) * 2022-08-24 2024-02-29 华为云计算技术有限公司 一种数据管理方法及相关系统

Similar Documents

Publication Publication Date Title
US11550769B2 (en) Data processing method, apparatus, and system
CN111897824A (zh) 数据操作方法、装置、设备和存储介质
US9678969B2 (en) Metadata updating method and apparatus based on columnar storage in distributed file system, and host
US10185744B2 (en) Caching views on historical data
CN108475276B (zh) 用于多模型数据库的存储器内键-值存储
US9348641B2 (en) System and method for performing a transaction in a massively parallel processing database
US10191932B2 (en) Dependency-aware transaction batching for data replication
WO2018233364A1 (zh) 索引更新方法、系统及相关装置
CN104123374A (zh) 分布式数据库中聚合查询的方法及装置
US11269829B2 (en) Row level locking for columnar data
CN110046170B (zh) 基于多文件管理的语句执行方法、装置、设备和介质
US10901976B2 (en) Method and apparatus for determining SQL execution plan
CN109885585B (zh) 支持存储过程、触发器与视图的分布式数据库系统和方法
CN109582677A (zh) 基于孩子节点的多粒度分布式读写锁的r树索引优化方法
CN112632065A (zh) 一种数据存储方法、装置、存储介质及服务器
WO2017107130A1 (zh) 数据查询方法和数据库系统
US9870399B1 (en) Processing column-partitioned data for row-based operations in a database system
US10558661B2 (en) Query plan generation based on table adapter
CN109753533A (zh) 一种多源关系型数据库客户端开发方法及装置
CN112818010B (zh) 数据库查询方法及装置
CN110647535A (zh) 一种将业务数据更新至Hive的方法、终端及存储介质
WO2024027459A1 (zh) 一种分布式数据库中创建全局二级索引的方法及装置
US11582098B1 (en) Mechanized modify/add/create/delete for network configuration
WO2024027464A1 (zh) 一种处理全局二级索引的方法及装置
US20230401221A1 (en) Cross-tables search method, electronic device, and storage medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20221124

Address after: 200444 3F, No. 15, Lane 2999, Hutai Road, Baoshan District, Shanghai

Applicant after: Shanghai Yunli Information Technology Co.,Ltd.

Address before: 200444 Floor 3, No. 13, Lane 2999, Hutai Road, Baoshan District, Shanghai

Applicant before: Shanghai Yunli Technology Co.,Ltd.

TA01 Transfer of patent application right