基于单级数据库的数据查询方法、装置、设备及存储介质
技术领域
本发明涉及数据查询领域,尤其涉及一种基于单级数据库的数据查询方法、装置、电子设备及计算机可读存储介质。
背景技术
单级数据库是指单级索引不具备多条件查询且不具备二级索引机制的数据库,如Hbase数据库,所述Hbase数据库是一个分布式的和面向列的动态模式数据库,可以支持实时读写和随机访问超大规模的数据集。
目前,单级数据库的表数据按RowKey进行字典排序,所述RowKey可以理解为是单级数据库中数据表的一级索引(Primary Index),由于单级数据库本身没有二级索引(Secondary Index)机制,当遇到多条件数据查询时,需要将所有可能作为查询条件的字段一一拼接到RowKey中,这样需要配置多个查询条件,容易带来多条件数据查询的局限性,从而影响单级数据库的数据查询速度。
发明内容
本发明提供一种基于单级数据库的数据查询方法、装置、电子设备及计算机可读存储介质,其主要目的在于提高单级数据库的数据查询速度。
为实现上述目的,本发明提供的一种基于单级数据库的数据查询方法,包括:
从单级数据库中获取每个原始数据的标识字段及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录;
对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库;
响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,并根据所述目标用户信息,查询所述数据查询请求在单级数据库的标识字段,得到目标标识字段;
根据所述目标标识字段,向所述单级数据库中查询数据,得到所述数据查询请求的数据查询结果。
可选地,所述将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录,包括:
根据每个所述用户信息的信息类型,将所述用户信息进行字段转换,得到每个所述用户信息的用户信息字段;
将每个所述用户信息字段和所述原始数据中对应标识字段进行合并,生成多个用户记录。
可选地,所述对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库,包括:
利用分布式搜索引擎对每个所述用户记录进行文档索引,生成索引文档;
根据每个所述用户记录中的用户信息,对所述索引文档的标识字段建立倒排索引,得到每个所述用户记录的倒排索引;
将每个所述用户记录的倒排索引进行汇总,生成倒排索引库。
可选地,所述响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,包括:
获取所述数据查询请求的用户标识,将所述数据查询请求的用户标识与所述倒排索引库中的用户信息进行匹配,将匹配成功的用户信息作为所述目标用户信息。
可选地,所述根据所述目标用户信息,查询所述数据查询请求在所述单级数据库的标识字段,得到目标标识字段,包括:
根据所述目标用户信息,从所述倒排索引库中查询所述数据查询请求的用户记录;
根据所述数据查询请求的用户记录,识别所述数据查询请求在所述单级数据库的标识字段,得到目标标识字段。
可选地,所述从单级数据库中获取每个原始数据的标识字段及用户信息之前,还包括:
获取原始数据及对应的用户信息,对所述原始数据进行格式统一化,得到标准数据;
创建所述标准数据在单级数据库中的字段标识,并将创建的字段标识进行散列处理,得到所述标准数据在所述单级数据库中的标识字段;
根据所述标识字段,将所述原始数据及对应的用户信息存储至所述单级数据库中。
可选地,所述根据所述标识字段,将所述原始数据及对应的用户信息存储至所述单级数据库中,包括:
根据所述标识字段,在所述单级数据库中的存储介质建立所述原始数据及对应用户信息的存储目录;
根据所述存储目录,将所述原始数据及对应用户信息加载至所述单级数据库中。
为了解决上述问题,本发明还提供一种基于单级数据库的数据查询装置,所述装置包括:
用户记录生成模块,用于从单级数据库中获取每个原始数据的标识字段及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录;
倒排索引构建模块,用于对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库;
标识字段查询模块,用于响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,并根据所述目标用户信息,查询所述数据查询请求在单级数据库的标识字段,得到目标标识字段;
数据查询模块,用于根据所述目标标识字段,向所述单级数据库中查询数据,得到所述数据查询请求的数据查询结果。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以实现上述所述的基于单级数据库的数据查询方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的基于单级数据库的数据查询方法。
本发明实施例从单级数据库中获取每个原始数据的标识字段(Rowkey)及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录,以确保后续单级数据库的二级索引构建前提;其次,本发明实施例对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库,可以支持多条件数据的查询请求,以确保单级数据库的秒回查询,满足数据查询的实时性。因此,本发明提出的一种基于单级数据库的数据查询方法、装置、电子设备以及计算机可读存储介质可以提高单级数据库的数据查询速度。
附图说明
图1为本发明一实施例提供的基于单级数据库的数据查询方法的流程示意图;
图2为本发明一实施例提供的基于单级数据库的数据查询装置的模块示意图;
图3为本发明一实施例提供的实现基于单级数据库的数据查询方法的电子设备的内部结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请实施例提供一种基于单级数据库的数据查询方法。所述基于单级数据库的数据查询方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述基于单级数据库的数据查询方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。
参照图1所示,为本发明一实施例提供的基于单级数据库的数据查询方法的流程示意图。在本发明实施例中,所述基于单级数据库的数据查询方法包括:
S1、从单级数据库中获取每个原始数据的标识字段及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录。
本发明实施例中,所述单级数据库是指单级索引不具备多条件查询且不具备二级索引机制的数据库,如Hbase数据库,所述Hbase数据库是一个分布式的、面向列的开源数据库,可以支持非结构化数据的存储。本发明实施例中,所述原始数据包括半结构化数据和非结构化数据,如文本数据和用户数据,所述文本数据包括保险产品种类和数量、基金产品种类和数量、股票产品种类和数量等,所述用户数据包括:姓名、性别、身份证以及手机号码等。进一步地,所述标识字段是指每个原始数据在所述单级数据库中的一级索引,又称Rowkey,应该了解的是,在所述单级数据库中,数据的存储是基于列的形式而并非是行的形式,因此,通过所述Rowkey可以实现所述单级数据库的一级索引查询,所述用户信息是指每个原始数据的用户身份信息(如身份证号码、姓名以及企业账户等),基于所述用户信息可以作为搜索每个原始数据的搜索条件。
本发明的其中一个实施例,所述从单级数据库中获取每个原始数据的标识字段及用户信息之前,还包括:获取原始数据及对应的用户信息,对所述原始数据进行格式统一化,得到标准数据,创建所述标准数据在单级数据库中的字段标识,并将创建的字段标识进行散列处理,得到所述标准数据在所述单级数据库中的标识字段,根据所述标识字段,将所述原始数据及对应的用户信息存储至所述单级数据库中。
一个可选实施例中,所述对所述原始数据进行格式统一化,得到标准数据,包括:利用Spark框架中的读取指令读取所述原始数据;通过所述Spark框架中的检测指令判断所述原始数据是否合法;若所述原始数据不合法,接收剩余的原始数据;若所述原始数据合法,通过所述Spark框架中的获取指令获取所述原始数据的数据格式,并调用所述Spark框架中的转换指令将所述原始数据的数据格式转换为键值对格式,根据所述Spark框架中的输出指令输出所述键值对格式的原始数据,得到标准数据。
其中,所述Spark框架指的是专为大规模数据处理而设计的快速通用的计算引擎。所述读取指令包括RDD.saveAsNewAPIHadoopFile,所述检测指令包括checkOutputSpecs,所述获取指令包括getRecordWriter,所述转换指令包括getWriter,所述输出指令包括HFileOutputFormat。
一个可选实施例中,将所述标准数据的关键字段作为所述标准数据的标识字段。例如,所述标准数据为某学生语文成绩为98分,则选取字段“Student”、“Chinese”以及“achievement”作为该标准数据的标识字段。进一步地,为使创建的标识字段具有唯一性,本发明实施例还包括将所述标识字段的格式转换为MD5哈希格式,所述MD5哈希指的是以32位16进制的小写字符串形式返回字段数值。
应该了解,数据在导入单级数据库时,会存在单级数据库中少数数据表的数据负载过大,其他数据表负载却很小的热点现象,这样会使热点数据表所在的主机负载过大,引起性能下降,甚至导致数据表不可用。因此,本发明又一可选实施例通过对所述标识字段进行散列处理,解决数据导入单级数据库时出现的热点现象。可选的,所述散列处理包括:反转处理、加盐处理以及Hash散列处理。
一个可选实施例中,所述根据所述标识字段,将所述原始数据及对应的用户信息存储至所述单级数据库中,包括:根据所述标识字段,在所述单级数据库中的存储介质建立所述原始数据及对应用户信息的存储目录,根据所述存储目录,利用预设的加载方法将所述原始数据及对应用户信息加载至所述单级数据库中。可选的,所述存储介质包括HDFS(Hadoop Distributed File System)分布式存储系统,所述预设的加载方法包括LoadIncrementalHFiles方法。
进一步地,本发明实施例通过查询语句从所述从单级数据库中获取每个原始数据的标识字段(Rowkey)及用户信息。可选的,所述查询语句包括SQL语句。
进一步地,所述将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录,包括:根据每个所述用户信息的信息类型,将所述用户信息进行字段转换,得到每个所述用户信息的用户信息字段;将每个所述用户信息字段和所述原始数据中对应标识字段进行合并,生成多个用户记录。基于所述用户记录的生成,可以查询用户的基本信息和用户在单级数据库中数据存储的一级索引。
S2、对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库。
本发明实施例中,通过分布式搜索引擎对每个所述用户记录构建倒排索引,所述分布式搜索引擎包括Elasticsearch,基于所述用户记录的倒排索引构建,可以实现所述用户记录中标识字段在所述单级数据库的二级索引,即预先在单级数据库中创建的标识字段作为一级索引,利用分布式搜索引擎生成标识字段的倒排索引作为二级索引,以支持后续多条件的数据查询,从而使得单级数据库可以支持多条件数据的秒回查询。
本发明一可选实施例中,所述利用分布式搜索引擎对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库,包括:利用所述分布式搜索引擎对每个所述用户记录进行文档索引,生成索引文档,根据每个所述用户记录中的用户信息,对所述索引文档的标识字段建立倒排索引,得到每个所述用户记录的倒排索引,将每个所述用户记录的倒排索引进行汇总,生成倒排索引库。
其中,所述文档索引是指将所述用户记录构建词典的过程,用于整合每个用户记录,所述倒排索引是指将用户信息构建为索引目录,将标识字段构建为索引内容,以形成用户信息和标识字段的对应关系,由于所述用户信息和标识字段可能会存在多个,因此,所述对应关系包括:一一对应关系、一对多对应关系、多对一对应关系以及多对多对应关系。
S3、响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,并根据所述目标用户信息,查询所述数据查询请求在单级数据库的标识字段,得到目标标识字段。
本发明实施例中,所述数据查询请求包括至少两个数据查询字段,例如对于“查询用户A的保险和产险的销售数据”的数据查询请求,其数据查询字段包括:“用户A”、“保险”、“产险”以及“销售”,为保障所述数据查询请求的秒回查询,本发明实施通过从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,根据所述目标用户信息,得到所述数据查询请求在单级数据库中的标识字段,从而实现多条件的数据查询。
本发明一可选实施例中,所述响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,包括:获取所述数据查询请求的用户标识,将所述数据查询请求的用户标识与所述倒排索引库中的用户信息进行匹配,将匹配成功的用户信息作为所述目标用户信息。
进一步地,在本发明又一可选实施例中,利用下述方式将所述用户标识与所述倒排索引库中的用户信息进行匹配;
其中,X表示用户标识的字段,Y表示用户信息的字段,m表示用户标识的字段的数量,n表示用户信息的字段数量。
本发明一可选实施例中,所述根据所述目标用户信息,查询所述数据查询请求在所述单级数据库的标识字段,得到目标标识字段,包括:根据所述目标用户信息,从所述倒排索引库中查询所述数据查询请求的用户记录,根据所述用户记录,识别所述数据查询请求在所述单级数据库的标识字段,得到目标标识字段。
S4、根据所述目标标识字段,向所述单级数据库中查询数据,得到所述数据查询请求的数据查询结果。
本发明实施例将所述目标标识字段作为单级数据库的索引,向所述单级数据库中查询数据,以实现所述数据查询请求的数据查询,得到数据查询结果。
综上所述,本发明实施例从单级数据库中获取每个原始数据的标识字段(Rowkey)及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录,以确保后续单级数据库的二级索引构建前提;其次,本发明实施例对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库,可以支持多条件数据的查询请求,以确保单级数据库的秒回查询,满足数据查询的实时性。因此,本发明提出的一种基于单级数据库的数据查询方法可以提高单级数据库的数据查询速度。
如图2所示,是本发明一实施例提供的基于单级数据库的数据查询装置的模块模块图。
本发明所述基于单级数据库的数据查询装置100可以安装于电子设备中。根据实现的功能,所述基于单级数据库的数据查询装置可以包括用户记录生成模块101、倒排索引构建102、标识子弹查询模块103以及数据模块104。本发所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
所述用户记录生成模块101,用于从单级数据库中获取每个原始数据的标识字段及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录;
所述倒排索引构建模块102,用于对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库;
所述标识字段查询模块103,用于响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,并根据所述目标用户信息,查询所述数据查询请求在单级数据库的标识字段,得到目标标识字段;
所述数据查询模块104,用于根据所述目标标识字段,向所述单级数据库中查询数据,得到所述数据查询请求的数据查询结果。
详细地,本发明实施例中所述基于单级数据库的数据查询装置100中的所述各模块在使用时采用与上述的图1中所述的基于单级数据库的数据查询方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图3所示,是本发明一实施例提供的实现基于单级数据库的数据查询方法的电子设备的结构示意图。
所述电子设备1可以包括处理器10、存储器11、通信总线12以及通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如基于单级数据库的数据查询程序。
其中,所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备1的控制核心(ControlUnit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如执行基于单级数据库的数据查询程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于单级数据库的数据查询程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述通信总线12可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
所述通信接口13用于上述电子设备1与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备1之间建立通信连接。所述用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
图3仅示出了具有部件的电子设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的基于单级数据库的数据查询程序是多个计算机程序的组合,在所述处理器10中运行时,可以实现:
从单级数据库中获取每个原始数据的标识字段及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录;
对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库;
响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,并根据所述目标用户信息,查询所述数据查询请求在单级数据库的标识字段,得到目标标识字段;
根据所述目标标识字段,向所述单级数据库中查询数据,得到所述数据查询请求的数据查询结果。
具体地,所述处理器10对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性计算机可读取存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备1的处理器所执行时,可以实现:
从单级数据库中获取每个原始数据的标识字段及用户信息,将每个所述原始数据的标识字段及用户信息进行合并,形成多个用户记录;
对每个所述用户记录构建倒排索引,得到所述用户记录的倒排索引库;
响应于数据查询请求,从所述倒排索引库中查询所述数据查询请求的用户信息,得到目标用户信息,并根据所述目标用户信息,查询所述数据查询请求在单级数据库的标识字段,得到目标标识字段;
根据所述目标标识字段,向所述单级数据库中查询数据,得到所述数据查询请求的数据查询结果。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。