数据存储与查询方法、装置、计算机设备及存储介质与流程

文档序号:18464652发布日期:2019-08-17 02:20阅读:289来源:国知局
数据存储与查询方法、装置、计算机设备及存储介质与流程

本发明涉及数据处理技术领域,尤其涉及一种不依赖于数据库性能的高速数据存储查询方法、装置、计算机设备及存储介质。



背景技术:

随着数据库技术的广泛普及,各类数据信息呈海量高速增长趋势。目前大多数计算机软件的应用场景都是关系型数据库,在关系复杂条件下的查询和存储,会消耗大量的数据库资源,包括存储空间和调用时间,因此在当前行业大数据背景下,随着数据量的增长,很容易到达数据库的瓶颈,严重影响到数据存储以及查询的效率。



技术实现要素:

本发明的目的是提供一种不依赖于数据库性能的高速数据存储查询方法、系统、计算机设备及存储介质,用于解决现有技术存在的问题。

为实现上述目的,本发明提供一种高速数据存储方法,包括以下步骤:

响应于数据存储指令,生成表征多个数据表之间的索引关系的抽象树状结构,所述抽象树状结构包括多个节点,每个节点包括种类信息和映射信息,所述种类信息表征所述节点上要存储的数据的种类,所述映射信息用于表征与当前节点具有映射关系的其它节点;

获取待存储数据,根据所述待存储数据的种类将所述待存储数据存储到所述抽象树的对应节点上,形成全量树状结构;

从所述全量树状结构中抽取每个节点的主键信息和映射信息,形成主键树状结构,其中所述主键信息与所述种类信息相对应;

将所述全量树状结构存储到数据库,并将所述主键树状结构存储为倒排索引。

进一步地,所述获取待存储数据,根据所述待存储数据的种类将所述待存储数据存储到所述抽象树的对应节点上,形成全量树状结构的步骤包括:

拆解抽象树状结构中的每一个节点,得到待更新数据表,根据所述待存储数据的种类向每张待更新数据表中增加数据。

进一步地,所述主键树状结构中还保存有非主键索引,用于表征所述多个数据表中的非主键和主键之间的对应关系。

为实现上述目的,本发明提供一种高速数据查询方法,包括以下步骤:

响应于数据查询指令,获取以倒排索引方式保存的主键树状结构,所述主键树状结构包括多个节点,每个节点对应具有相同主键的一个或多个数据表;

将要查询的字段输入所述主键树状结构,获取与所述字段相对应的节点;

从与所述节点相对应的数据表中查询目标数据;

按输出模式输出所述目标数据。

进一步地,所述将要查询的字段输入所述主键树状结构,获取与所述字段相对应的节点的步骤包括以下步骤中的任一种:

所述字段为主键,根据主键查询节点;

所述字段为非主键,从索引表中查询与所述非主键对应的主键,并根据主键从主键树中查询节点。

进一步地,所述按输出模式输出数据包括按指定模式输出数据或者按默认模式输出数据。

为实现上述目的,本发明提供一种高速数据存储系统,包括:

抽象树生成模块,适用于生成表征多个数据表之间的索引关系的抽象树状结构,所述抽象树状结构包括多个节点,每个节点包括种类信息和映射信息,所述种类信息表征所述节点上要存储的数据的种类,所述映射信息用于表征与当前节点具有映射关系的其它节点;

全量树生成模块,适用于获取待存储数据,根据所述待存储数据的种类将所述待存储数据存储到所述抽象树的对应节点上,,形成全量树状结构;

主键树生成模块,适用于从所述全量树状结构中抽取每个节点的主键信息和映射信息,形成主键树状结构,其中所述主键信息与所述种类信息相对应;

数据存储模块,适用于将所述全量树状结构存储到oracle数据库,并将所述主键树状结构存储为倒排索引。

为实现上述目的,本发明提供一种数据查询系统,包括:

主键树获取模块,适用于响应于数据查询指令,获取以倒排索引方式存储的主键树状结构,所述主键树状结构包括多个节点,每个节点对应具有相同主键的一个或多个数据表;

节点获取模块,适用于将要查询的字段输入所述主键树状结构,获取与所述字段相对应的节点;

数据查询模块,适用于从与所述节点相对应的数据表中查询目标数据;

数据输出模块,适用于按输出模式输出所述目标数据。

为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

本发明提供的高速数据存储与查询方法、装置、计算机设备及存储介质,适用于数据处理技术领域,为海量数据的存储与查询提供一种不依赖于数据库性能的自动化实现方案。本发明中的数据库将不再需要维护大量的关系数据和索引,而是引入了大数据背景的高速倒排索引框架es(elasticsearch)来存储业务关系数据的主键信息,数据库中仅保留数据的细节以及关系的备份。当有查询请求时候,本发明会根据条件首先检索倒排索引框架es,查询到主键信息,再由主键向数据库执行查询,屏蔽了所有的非主键数据库请求,极大提升了检索效率。

附图说明

图1为本发明的数据存储方法实施例一的流程图;

图2为本发明的数据存储装置实施例一的程序模块示意图;

图3为本发明的数据存储装置实施例一的硬件结构示意图;

图4为本发明的数据查询方法实施例一的流程图;

图5为本发明的数据查询装置实施例一的程序模块示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供的高速数据存储与查询方法、装置、计算机设备及存储介质,适用于数据处理技术领域,为海量数据的存储与查询提供一种不依赖于数据库性能的自动化实现方案。本发明主要包括数据存储和数据查询两大部分。在数据存储过程中,本发明首先获取各个数据表之间的逻辑关系及其主键,根据逻辑关系和主键生成包含多个节点的抽象树来表征上述逻辑关系,其中每个节点具有唯一的主键,并相应地与一个或多个数据表相对应。在进行数据存储时,本发明将待更新数据中的数据信息按照抽象树的结构存储到对应的各个节点下的数据表中,同时将仅包含了主键信息的抽象树(即主键树)存储为倒排索引(es)的形式,并且将除主键之外的其它数据信息保存至oracle数据库。在进行数据查询时,本发明会先从倒排索引中调取主键树以明确带查询数据所在的节点,然后再根据节点信息从oracle数据库中查询与该节点所对应的一个或多个数据表。本发明的上述方案大大简化了数据查询过程,无需遍历所有的数据表进行查询,从而有效提高了数据存储和查询的效率。

实施例一

请参阅图1,本实施例的一种高速数据存储方法中,包括以下步骤:

s1:响应于数据存储指令,生成表征多个数据表之间的索引关系的抽象树状结构,所述抽象树状结构包括多个节点,每个节点包括种类信息和映射信息,所述种类信息表征所述节点上要存储的数据的种类,所述映射信息用于表征与当前节点具有映射关系的其它节点。

本步骤用于首先搭建一个进行数据存储的框架,这个框架已经安排好了不同数据表的存储位置以及数据表之间的映射关系,以便后续往相应的位置上存储具体数据。本发明将上述进行数据存储的框架称为抽象树状结构,该抽象树状结构包括多个节点,这里的节点表示的是数据表存储的位置,每个节点对应存储一张或者多张存储表。本发明中的节点是按照待存储数据的种类进行划分的,具体的种类例如可以是客户信息、账户信息、银行卡信息等内容。节点与节点之间具有映射关系,例如账户信息是在客户信息的基础上生成的,首先由客户的基本情况信息,然后再记录每个客户的账户信息。这种情况下将客户信息所在的节点作为父节点a,将账户信息所在的节点作为子节点b。本发明中节点与节点之间的映射关系或者说节点的映射信息,可以通过在每一个节点上添加与其自身相联系的父节点信息或者子节点信息来确定。需要指出的是,当通过父节点的方式来表示映射信息时,由于最上层的节点不再具有父节点,因此将该最上层的节点的父节点信息置空;当通过子节点的方式来表示映射信息时,由于最下层的节点不再具有子节点,因此将该最下层的节点的子节点信息置空。

以银行后台数据库系统为例,一般保存有客户基本信息、客户申请账户信息、客户银行卡信息等多项内容,每项内容中包含一张或者多张数据表。假设某银行后台的数据库中将与客户有关的数据划分为以下几种数据表:客户信息表(a表)、客户信息补充表(a1表)、客户申请记录表(c表)、客户账户信息表(b表)、账户额度控制表(b1表)以及账户银行卡表(d表)。其中客户信息表(a表)和客户信息补充表(a1表)具有相同的主键custno,客户账户信息表(b表)和账户额度控制表(b1表)具有相同的主键accountno,客户申请记录表(c表)具有主键applyno,账户银行卡表(d表)具有主键cardno。

本发明根据逻辑索引关系对上述几种数据表重新进行了划分并通过树状结构进行展示。首先,客户信息表(a表)记载了包含客户的编号、姓名、身份证号、住址等最基本的信息,因此将其作为父层。另外与客户信息表(a表)具有相同主键的还有客户信息补充表(a1表),作为对客户信息表中客户信息的进一步补充,例如客户的收入状况。为了简化结构,本发明将具有相同主键的表归为同一节点,记为节点a,并将之作为父层。与客户信息表具有索引关系的表包括客户申请记录表(c表)和客户账户信息表(b表),因此将这两张表作为第一子层。由于客户申请记录表(c表)和客户账户信息表(b表)彼此之间不具有关联关系,因此分别将客户申请记录表(c表)记为节点c,将客户账户信息表(b表)记为节点b。另外,账户额度控制表(b1表)与客户信息表(a表)之间也有直接的索引关系,并且账户额度控制表(b1表)和客户账户信息表(b表)之间具有同样的主键accountno,故为了简化起见将账户额度控制表(b1表)也归入节点b中。接下来,与客户账户信息表(b表)具有索引关系的表是账户银行卡表(d表),因此将账户银行卡表(d表)划归为第二子层,并标记为节点d。如图2所示,上述包含了多个层次以及多个节点的树状结构称为本发明的抽象树,能够直观显示出各个数据表之间的索引关系。

上述父层、第一子层、第二子层之间的层次关系可以用子节点信息来表示,例如在每个节点中记录与该节点具有映射关系的子节点信息。上文中,节点a的子节点信息包括节点b和节点c,节点b的子节点信息包括节点d。节点c和节点d之后没有具有映射关系的子节点,则可以将节点c和节点d中的子节点信息置空。

实施时,将生成的抽象树状结构保存至配置文件中,命名为dataschema。

s2:获取待存储数据,根据所述待存储数据的种类将所述待存储数据存储到所述抽象树的对应节点上,形成全量树状结构。

本步骤在抽象树的基础上添加要存储的数据信息,使其成为全量树状结构。本发明的抽象书中包括多个节点,每个节点对应一个种类信息,每个种类信息下包含一张或者多张数据表。将数据记录根据种类填充到对应节点的对应数据表中,便实现了由抽象树状结构到全量树状结构的转化。优选的,本发明中的种类信息可以根据数据表的主键来确定。

例如,需要将以下数据条目存储到数据库:

(1)客户信息表

custno00123;客户id:210123190101019987;

(2)账户信息表

账户编号:acc01;

(3)账户银行卡表

卡号:card662266;卡详情:abc

(4)申请记录表

申请号:apl0012333552,申请国家:cn;

(5)申请记录表

申请号:apl0012334663,手机:13633331804,申请城市:上海。

实施时,本发明从配置文件中获取抽象树dataschema,对dataschema进行拆解获得每一个节点以及节点下对应的数据表,将要存储的数据条目按字段内容存储到不同的数据表中。

本步骤是在抽象树dataschema的基础上向每个节点下的对应数据表中存储数据,与抽象树相对应的,存储有完整数据的树状结构称为全量树状结构。

s3:从所述全量树状结构中抽取每个节点的主键信息和映射信息,形成主键树状结构,其中所述主键信息与所述种类信息相对应。

本步骤在全量树状结构的基础上提取主键,从而建立描述多张数据表之间索引关系的主键树状结构的数据。以步骤s2中存储的数据条目为例,在只抽取主键数据的基础上,es中存储的数据条目信息如下所示:

(1)客户信息表

客户编号:custno00123;

(2)账户信息表

账户编号:acc01;

(3)账户银行卡表

卡号:card662266;

(4)申请记录表

申请号:apl0012333552;

(5)申请记录表

申请号:apl0012334663。

与全量树相比,本步骤中生成的主键树状结构在去掉了大量数据内容基础上保留了必要的主键数据的索引信息,本领域技术人员只需要通过该主键数据的索引信息便可以得到数据的存储位置,因此可以有效提高数据的存储及查询效率。

s4:将所述全量树状结构存储到oracle数据库,并将所述主键树状结构存储为倒排索引。

本发明中的全量树状结构就是按照索引关系存储的完整数据记录,本步骤将完整的数据记录保存到oracle数据库,方便本领域技术人员进行存储及查询操作。与现有技术不同的是,本发明中的oracle数据库并不直接与常规应用程序相对接,即当应用程序需要对数据库中的数据进行存储或查询时,并不直接面向oracle数据库进行操作,而是首先去es索引库中提取表征数据表索引关系的主键树状结构,从主键树状结构中获得各个数据表之间的关系及其位置信息,然后按照该关系及其位置信息再从oracle数据库中调取相应的数据表进行操作。本发明不再需要从oracle数据库中遍历所有的数据表,因此可以极大地提高数据存储和查询效率。同时因为数据表的索引关系是单独存储的,因此oracle数据库不再需要维护大量的关系数据和索引,使得数据存储的极限不在依赖于oracle数据库的性能。

另外,本发明将提取后的主键树状结构以倒排索引(elasticsearch)的方式进行保存。所谓倒排索引,指的是存储关键词在文章中的位置和出现频次,从而提高查询关键词的效率。

请继续参阅图2,示出了一种高速数据存储装置,在本实施例中,数据存储装置10可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述自动更新方法。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述数据存储装置10在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:

抽象树生成模块11,适用于生成表征多个数据表之间的索引关系的抽象树状结构,所述抽象树状结构包括多个节点,每个节点包括种类信息和映射信息,所述种类信息表征所述节点上要存储的数据的种类,所述映射信息用于表征与当前节点具有映射关系的其它节点;

全量树生成模块12,适用于获取待存储数据,根据所述待存储数据的种类将所述待存储数据存储到所述抽象树的对应节点上,,形成全量树状结构;

主键树生成模块13,适用于从所述全量树状结构中抽取每个节点的主键信息和映射信息,形成主键树状结构,其中所述主键信息与所述种类信息相对应;

数据存储模块14,适用于将所述全量树状结构存储到oracle数据库,并将所述主键树状结构存储为倒排索引。

本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备20至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器22,如图3所示。需要指出的是,图3仅示出了具有组件21-22的计算机设备20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器21(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备20的内部存储单元,例如该计算机设备20的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如实施例一的高速数据存储装置10的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器22在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行高速数据存储装置10,以实现实施例一的自动更新方法。

本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储自动更新装置10,被处理器执行时实现实施例一的自动更新方法。

实施例二

请参阅图4,本实施例的高速数据查询方法以实施例一为基础,包括以下步骤:

s1:响应于数据查询指令,获取以倒排索引方试保存的主键树状结构,所述主键树状结构包括多个节点,每个节点对应具有相同主键的一个或多个数据表。

本实施例针对的是数据库中的数据查询操作过程。当需要从数据库中查询某一条数据时,本发明并不直接访问oracle数据库,而是首先去es索引库中查找表征数据表之间索引关系的树状结构,例如是包含了主键信息的主键树状结构(简称主键树)。该树状结构按照数据表之间的索引关系划分为多个层次,每个层次中包含多个节点,每个节点对应一个或者多个数据表。

假设某银行后台的数据库中将与客户有关的数据划分为以下几种数据表:客户信息表(a表)、客户信息补充表(a1表)、客户申请记录表(c表)、客户账户信息表(b表)、账户额度控制表(b1表)以及账户银行卡表(d表)。其中客户信息表(a表)和客户信息补充表(a1表)具有相同的主键custno,客户账户信息表(b表)和账户额度控制表(b1表)具有相同的主键accountno,客户申请记录表(c表)具有主键applyno,账户银行卡表(d表)具有主键cardno。

本发明根据逻辑索引关系对上述几种数据表重新进行了划分并通过树状结构进行展示。首先,客户信息表(a表)记载了包含客户的编号、姓名、身份证号、住址等最基本的信息,因此将其作为父层。另外与客户信息表(a表)具有相同主键的还有客户信息补充表(a1表),作为对客户信息表中客户信息的进一步补充,例如客户的收入状况。为了简化结构,本发明将具有相同主键的表归为同一节点,记为节点a。与客户信息表具有索引关系的表包括客户申请记录表(c表)和客户账户信息表(b表),因此将这两张表作为第一子层。由于客户申请记录表(c表)和客户账户信息表(b表)彼此之间不具有关联关系,因此分别将客户申请记录表(c表)记为节点c,将客户账户信息表(b表)记为节点b。另外,账户额度控制表(b1表)与客户信息表(a表)之间也有直接的索引关系,并且账户额度控制表(b1表)和客户账户信息表(b表)之间具有同样的主键accountno,故为了简化起见将账户额度控制表(b1表)也归入节点b中。接下来,与客户账户信息表(b表)具有索引关系的表是账户银行卡表(d表),因此将账户银行卡表(d表)划归为第二子层,并标记为节点d。

s2:将要查询的字段输入所述主键树状结构,获取与所述字段相对应的节点。

在获取了主键树状结构的基础上,需进一步确定要查找的数据所在的数据表位置。主键树中包含了各个数据表的主键信息,理想情况下,当要查询的数据字段为主键时,则直接可以从主键树中获取到与该主键相对应的节点信息,然后只需要从该节点下的数据表中查询需要的数据即可,不用遍历所有的数据表进行查询。

当要查询的数据字段为非主键时,则需要先从索引表中查找与该非主键字段相对应的主键信息,然后再根据查找到的主键信息从主键树中查找相应的节点。

s3:从与所述节点相对应的数据表中查询目标数据。

本发明的每个节点下包含有一个或者多个数据表,这些数据表之间具有相互平行的索引关系,且具有相同的主键。在确定了节点的基础上,本发明只需要从隶属于该节点的数据表中查询目标数据即可,不再需要便利数据库中的所有数据表,因此可显著提高数据查询效率。

s4:按输出模式输出所述目标数据。

以某一字段为目标查找到的数据可能会包含多项内容,例如查找客户编号为001的数据,可能会同时查询到该客户的姓名、账户编号、账户名称、申请编号、贷款代码等等信息,因此这里需要对于输出格式进行限定。本实施例中可以人为设置需要显示的内容,例如查询客户编号为001的数据,规定显示客户姓名、账户名称、贷款代码等几项信息。也可以选择默认格式,例如当未设置需要显示的具体内容时,则默认显示查询到的所有数据信息。

请继续参阅图5,本实施例的高速数据查询装置30以实施例一为基础,用以实现实施例二的高速数据查询方法,其包括的各程序模块的功能:

主键树获取模块31,适用于响应于数据查询指令,获取以倒排索引方式存储的主键树状结构,所述主键树状结构包括多个节点,每个节点对应具有相同主键的一个或多个数据表;

节点获取模块32,适用于将要查询的字段输入所述主键树状结构,获取与所述字段相对应的节点;

数据查询模块33,适用于从与所述节点相对应的数据表中查询目标数据;

数据输出模块34,适用于按输出模式输出所述目标数据。

综上所述,本发明提供的高速数据存储与查询方法、装置、计算机设备及存储介质,具有高速高效的数据存储和查询功能,本发明利用高速倒排索引框架es组件,极大提升了数据存储和检索的性能,降低了数据库的访问压力,降低了开发人员编写程序时对数据性能可能带来的隐患影响。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

流程图中或在此以其它方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

本技术领域的普通技术人员可以理解,实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1