CN110888870A - 数据存储表的查询方法、分区服务器及电子设备 - Google Patents
数据存储表的查询方法、分区服务器及电子设备 Download PDFInfo
- Publication number
- CN110888870A CN110888870A CN201811058605.0A CN201811058605A CN110888870A CN 110888870 A CN110888870 A CN 110888870A CN 201811058605 A CN201811058605 A CN 201811058605A CN 110888870 A CN110888870 A CN 110888870A
- Authority
- CN
- China
- Prior art keywords
- query
- sub
- index
- data
- condition
- 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
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 51
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000005192 partition Methods 0.000 title claims abstract description 20
- 238000013523 data management Methods 0.000 abstract description 8
- 238000013508 migration Methods 0.000 abstract description 7
- 230000005012 migration Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000233805 Phoenix Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据存储表的查询方法、分区服务器及电子设备。该方法包括:接收客户端发送的查询请求,并根据查询请求确定查询条件及对应的查询类型;当查询类型为索引类型时,查询条件与列值相关,根据查询条件查询索引数据子表,以得到对应的行键;根据行键查询源数据子表,以得到查询结果并返回客户端。本申请通过一个数据存储表来存储索引数据和源数据,便于数据读写、数据迁移等情况下的数据管理,保证数据的一致性不被破坏,在查询数据时,在索引数据子表中可以快速查询到行键,并可以通过行键在源数据子表快速得到查询结果,有效提高数据的可靠性。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,本申请涉及一种数据存储表的数据写入方法、分区服务器及电子设备。
背景技术
伴随互联网信息技术的高速发展及深层次应用,数据的存储量呈现爆炸式增长,云计算与分布式系统成为了大数据量处理的主要趋势。其中,分布式数据库为结构化的大数据提供了高性能、高可靠性、易扩展的读写功能,在大型互联网公司中得到了广泛的应用,包括现常用来存储海量数据的HBase数据库等。
实际应用中,如图1所示,HBase的数据表是rowkey(行键)有序的,通过rowkey可以很快的定位到数据,这称之为“一级索引”。现有技术中,还可以采用社区开源的phoenix实现针对列的“二级索引”,如图2所示,其方案是通过在HBase数据表的基础上构建另一张对应的HBase表(图2中以col2列为例),索引列的value(列值)和原rowkey被反向插入新构建的HBase表中,使得索引列有序,从而能够根据索引列快速查询rowkey,以便在图1中通过rowkey快速定位到数据。
但是,这种方式的二级索引的实现有一个显而易见的缺点:需要在原HBase数据表的基础上多出一张索引HBase表,这导致了读写时操作这两张表格的难度加大,索引数据和原数据的一致性很难得到保障。并且即使能在读写时准确操作这两张表格,也很难避免迁移等外部操作会破坏其原有的对照依赖关系。
发明内容
为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
第一方面,本申请提供了一种数据存储表的查询方法,所述数据存储表包括按列值排序的索引数据子表及相对应的按行键排序的源数据子表,该方法包括:
接收客户端发送的查询请求,并根据查询请求确定查询条件及对应的查询类型;
当查询类型为索引类型时,查询条件与列值相关,根据所述查询条件查询所述索引数据子表,以得到对应的行键;
根据所述行键查询所述源数据子表,以得到查询结果并返回客户端。
在一个可能的实现方式中,所述根据所述查询条件查询所述索引数据子表,包括:
根据所述查询条件,生成索引描述信息;
根据所述索引描述信息,扫描所述索引数据子表。
在一个可能的实现方式中,所述根据所述查询条件,生成索引描述信息,包括:
确定所述查询条件中各个列族分别对应的子查询条件;
确定各个子查询条件之间的逻辑关系;
根据各个子查询条件和所述逻辑关系生成索引描述信息。
在一个可能的实现方式中,根据所述索引描述信息,扫描所述索引数据子表,以得到对应的行键:包括:
分别根据各个子查询条件扫描所述索引数据子表,得到各个子查询条件分别对应的行键;
基于所述逻辑关系,根据各个子查询条件分别对应的行键得到所述查询条件对应的行键。
在一个可能的实现方式中,所述数据存储表还包括按文本排序的全文检索数据子表,所述当查询类型为索引类型时,查询条件与列值相关信息,根据所述查询条件查询所述索引数据,还包括:
当判断出查询条件中相关的列值为文本信息时,根据所述查询条件查询所述全文检索数据子表。
在一个可能的实现方式中,所述根据所述查询条件查询所述索引数据子表,以得到对应的行键,包括:
依据数据存储表中存储的反序列化信息,在所述索引数据子表中读取各个列值;
将各个列值与所述查询条件进行对比,确定符合所述查询条件的列值;
确定符合所述查询条件的列值对应的行键。
在一个可能的实现方式中,该方法还包括:
当查询类型为非索引类型时,所述查询条件与行键相关,根据所述查询条件查询所述源数据子表,以得到查询结果并返回客户端。
第二方面,本申请提供了一种分区服务器,所述分区服务器中包括数据存储表,所述数据存储表包括按列值排序的索引数据子表及相对应的按行键排序的源数据子表,该分区服务器包括:
接收模块,用于接收客户端发送的查询请求,并根据查询请求确定查询条件及对应的查询类型;
索引模块,用于当查询类型为索引类型时,查询条件与列值相关,根据所述查询条件查询所述索引数据子表,以得到对应的行键;
查询模块,用于根据所述行键查询所述源数据子表,以得到查询结果并返回客户端。
在一个可能的实现方式中,所述索引模块具体用于根据所述查询条件,生成索引描述信息;以及,根据所述索引描述信息,扫描所述索引数据子表。
在一个可能的实现方式中,所述索引模块具体用于确定所述查询条件中各个列族分别对应的子查询条件;以及,确定各个子查询条件之间的逻辑关系;以及,根据各个子查询条件和所述逻辑关系生成索引描述信息。
在一个可能的实现方式中,所述索引模块具体用于分别根据各个子查询条件扫描所述索引数据子表,得到各个子查询条件分别对应的行键;以及,基于所述逻辑关系,根据各个子查询条件分别对应的行键得到所述查询条件对应的行键。
在一个可能的实现方式中,所述数据存储表还包括按文本排序的全文检索数据子表,所述索引模块还具体用于当判断出查询条件中相关的列值为文本信息时,根据所述查询条件查询所述全文检索数据子表。
在一个可能的实现方式中,所述索引模块具体用于依据数据存储表中存储的反序列化信息,在所述索引数据子表中读取各个列值;以及,将各个列值与所述查询条件进行对比,确定符合所述查询条件的列值;以及,确定符合所述查询条件的列值对应的行键。
在一个可能的实现方式中,所述查询模块还具体用于当查询类型为非索引类型时,所述查询条件与行键相关,根据所述查询条件查询所述源数据子表,以得到查询结果并返回客户端。
第三方面,本申请提供了一种电子设备,该电子设备包括:
处理器和存储器,存储器存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本申请的第一方面所示的查询方法。
第四方面,本申请提供了一种计算机可读存储介质,计算机存储介质用于存储计算机指令、程序、代码集或指令集,当其在计算机上运行时,使得计算机执行如本申请的第一方面所示的查询方法。
本申请提供的技术方案带来的有益效果是:
本申请通过一个数据存储表来存储索引数据和源数据,便于数据读写、数据迁移等情况下的数据管理,保证数据的一致性不被破坏,在查询数据时,在索引数据子表中可以快速查询到行键,并可以通过行键在源数据子表快速得到查询结果,有效提高数据的可靠性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种用于一级索引的数据表的示例图;
图2为本申请实施例提供的一种用于二级索引的数据表的示例图;
图3为本申请实施例提供的数据存储表的示例图;
图4为本申请实施例提供的数据存储表的查询方法的流程示意图;
图5为本申请实施例提供的基于HBase的查询方法的示意图一;
图6为本申请实施例提供的基于HBase的查询方法的示意图二;
图7为本申请实施例提供的分区服务器的结构示意图;
图8为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,首先对本申请提供的数据存储表进行介绍和解释:
考虑到现有技术中,二级索引需要维护两张表,必然会出现以下问题:
(1)数据的写入过程必须确保两张表的写操作的一致性,若表1写入成功,而表2写入失败,则查询会得不到所需的数据。
(2)在表1产生的文件1和表2产生的文件2的迁移过程中,若用户不知道文件2的存在,仅仅拷贝走文件1是无法用作二级索引的。
基于此,本申请提供了一种数据存储表,将索引数据作为源数据的列族增加到数据存储表中,并对索引数据按列值排序再进行封装,形成了索引数据子表,其中索引数据建立了某一列族的列值与行键的映射关系;此外,由源数据形成源数据子表,其中源数据建立了行键与各个列族的列值的映射关系,这样使得索引数据成为源数据的一部分,存在于同一个表中,便于数据读写、数据迁移等情况下的数据管理。保证数据的一致性不被破坏,有效提高数据存储的可靠性。
作为示例地,如图3所示,数据存储表包括按列值排序的索引数据子表(对应图3中的INDEX子表,该INDEX子表以图3中基于cf1:col2列族的列值与相应的行键的映射关系为例构建的)及按行键排序的源数据子表(对应图3中的cf1子表)。
对于本申请,该数据存储表可以是基于HBase实现的。
HBase是一款key-value数据库,它提供了对分布式文件系统上数据的高效读写服务,且利用HBase的协处理器Coprocessor,可以编写运行在HBase服务器端的代码,以实现功能的扩展。
基于HBase的服务器端会具有多个分区(Region),用户待存储的不同组数据可能会落入不同的分区,例如图3中,行键RK1和RK2对应的数据存储在Region1中,行键RK3和RK4对应的数据存储在Region2中。
其中,索引数据子表中的每组索引数据由其所在Region的起始行标识(例如图3中列值c21对应的目标分区Region1的起始行标识为Region1.StartKey)、列值对应的列族名称(例如图3中列值c21对应的列族名称示例为INDEX)、列值(例如图3中的列值c21)、行键(例如图3中的行键RK1),按照预定顺序拼接而成。例如图3中,c21与RK1的映射关系对应的索引数据为Region1.StartKey+INDEX+c21+RK1。
可选地,对于索引数据子表中的每组索引数据,还可以存储对应的反序列化信息,其中,反序列化信息可以表示为每组数据对应的索引数据的长度。这样,根据反序列化信息,就能够确定出每组数据对应的索引数据的偏移量位置。在对数据存储表进行二级索引时,可以根据每组数据对应的索引数据的偏移量位置来分别扫描每组数据对应的索引数据,以便快速得到查询结果。
一种可行的方案中,本申请提供的数据存储表还可以包括全文检索数据子表,对于数据类型为int、long、float、string等类型之外的text(文本)类型的列值,例如地址、标题等列族中的列值,通过全文检索数据建立了这些列族的列值与行键的映射关系,而不再建立索引数据。同样地,将全文检索数据作为源数据的列族增加到数据存储表中,并对索引数据按列值排序再进行封装,形成了全文检索数据子表。这样使得索引数据和全文检索数据成为源数据的一部分,存在于同一个表中,便于数据读写、数据迁移等情况下的数据管理。保证数据的一致性不被破坏,有效提高数据存储的可靠性。
由于本申请提供的数据存储表与现有的数据表存在较大差异,现有的查询方法不能简单的应用到本申请提供的数据存储表中。作为示例地,现有技术中,每次都会查询独立的数据表,因此直接采用get()方法即可得到查询结果。而本申请中,由于数据存储表的架构产生了变化,使用现有的get()方法并不能实现数据的查询。
基于此,本申请提供了一种数据存储表的查询方法、分区服务器及电子设备,用于解决如何在本申请提供的数据存储表中查询数据。
下面将结合附图对本申请实施方式作进一步地详细描述。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
实施例一
本申请实施例提供了一种数据存储表的查询方法,如图4所示,该方法包括:
步骤S401:接收客户端发送的查询请求,并根据查询请求确定查询条件及对应的查询类型。
当用户需要查询数据时,可以通过客户端向服务器发送查询请求。
一种可能的实现方式中,查询请求中包括查询条件及对应的查询类型,服务器在接收到客户端发送的查询请求后直接在查询请求中读取查询条件及对应的查询类型。
一种可能的实现方式中,查询请求中包括查询条件,服务器在接收到客户端发送的查询请求后在查询请求中读取查询条件,并根据查询条件确定出对应的查询类型。
实际应用中,查询条件是用户通过输入的,会表明用户想要查找的数据的特性,以便服务器在存储的海量数据中获取查询的数据维。
查询类型包括索引类型和非索引类型,可简单理解为,非索引类型对应现有的一级索引,用户想要查找的数据为行键对应的特性,那么需要通过行键查找数据;索引类型对应现有的二级索引,用户想要查找的数据为列值对应的特性,需要通过列值来查找数据。
步骤S402:当查询类型为索引类型时,查询条件与列值相关,根据查询条件查询索引数据子表,以得到对应的行键。
由上述介绍可知,当查询类型为索引类型时,查询条件是列值对应的数值的特性,那么查询条件必定与列值相关。
本申请实施例中,根据查询条件查询索引数据子表,以得到对应的行键。具体而言,由于可以编写运行在HBase服务器端的代码,本申请实施例扩展了scan()方法的接口,预先在服务器端编写索引扫描方法indexscan()的代码,用于在查询类型为索引类型时,进行调用来查询用户所需的数据。
由于本申请提供的数据存储表,在索引数据子表中写入了各个region的StartKey,使得indexscan()方法能够先扫描索引数据子表。
该步骤中,通过indexscan()方法得到对应的行键后,执行步骤S403。
步骤S403:根据行键查询源数据子表,以得到查询结果并返回客户端。
同样地,该步骤中,indexscan()方法会继续根据得到的行键查询源数据子表,以得到查询结果。
实际应用中,服务器在接收到查询请求后,会控制每个region均执行步骤S402和步骤S403,以得到各个region的查询结果。
服务器将查询结果返回客户端,可以由客户端进行汇总并向用户呈现,本申请实施例对此不作限定。
本申请实施例提供的数据存储表的查询方法,在数据存储表便于数据管理,保证数据的一致性不被破坏的基础上,通过索引数据子表中可以快速查询到行键,并可以通过行键在源数据子表快速得到查询结果,有效提高数据的可靠性。
实施例二
基于上述实施例所提供的技术方案,下面提供了一种可能的实现方式,其中,步骤S402包括步骤S4021和步骤S4022,具体地,
步骤S4021:根据查询条件,生成索引描述信息;
本申请实施例中,步骤S401的具体执行过程可参见实施例一,在此不再赘述。
可以理解,用户提供的查询条件,针对不同的列族,可能能够拆分成不同的子查询条件。也就是说,查询条件可以包括一个列族对应的一个子查询条件,也可以包括两个或两个以上列族分别对应的两个或两个以上子查询条件。
以图5为例,结合图1,若查询条件为col2=c21|col3=c31,也就是说,查询条件相关的列族有cf1:col2和cf1:col3。本申请实施例中,需要确定查询条件中各个列族分别对应的子查询条件。
具体而言,接上例,子查询条件1(对应图5中的Leaf1)为col2=c21,子查询条件2(对应图5中的Leaf2)为col3=c31。
进一步地,确定各个子查询条件之间的逻辑关系。
具体而言,接上例,子查询条件1和子查询条件2的逻辑关系为“或”关系(对应图5中的“OR”)。
实际应用中,子查询条件之间的逻辑关系可以包括但不限于“与”关系、“或”关系、“非”关系、“与非”关系、“或非”关系、“与或非”关系、“异或”关系、“同或”关系等。
再进一步地,根据各个子查询条件和逻辑关系生成索引描述信息。
例如,可以是构造如图5中IndexFamily所示的语法树。
步骤S4022:根据索引描述信息,扫描索引数据子表。
具体而言,针对不同列族对应的子查询条件,所要扫描的索引数据子表也会不同。
接上例,根据子查询条件1所要扫描的为列族cf1:col2与行键的映射关系相应的索引数据子表,图5中以IDX1表示。
根据子查询条件2所要扫描的为列族cf1:col3与行键的映射关系相应的索引数据子表,图5中以IDX2表示
本申请实施例中,分别根据各个子查询条件扫描索引数据子表,得到各个子查询条件分别对应的行键。
具体地,针对不同的子查询条件,分别采用子扫描(subscan,对应图5中的ss)来扫描对应的索引数据子表,便可得到符合子查询条件的列值的起始坐标startRow和终止坐标endRow。例如图5中,根据Leaf1得到的列值value1的startRow为:SK+IDX1+c21,endRow为:SK+IDX1+c21’;根据Leaf2得到的列值value2的startRow为:SK+IDX2+c31,endRow为:SK+IDX2+c31’;其中SK表示数据存储表所在的Region的StartKey。这样,便可得到各个子查询条件分别对应的行键。
进一步地,基于逻辑关系,根据各个子查询条件分别对应的行键得到查询条件对应的行键。
接上例,图5中,子查询条件1和子查询条件2的逻辑关系为“或”关系,那么即可确定对应的value1和value2的逻辑关系也为“或”关系,将value1和value2基于“或”关系进行逻辑运算,即可得到用户提供的查询条件对应的行键。
可以理解,得到的查询条件对应的行键可以为一个,也可以为两个或两个以上,随后,如图6所示,便可在步骤S403中根据行键(对应图6中的RK list)查询源数据子表,以得到查询结果并返回客户端。
实施例三
基于上述各实施例所提供的技术方案,针对索引数据子表的扫描方式,下面提供了一种可能的实现方式,其中,步骤S402包括步骤S402a、步骤S402b和步骤S402c,具体地,
步骤S402a:依据数据存储表中存储的反序列化信息,在索引数据子表中读取各个列值;
本申请实施例中,步骤S401的具体执行过程可参见实施例一,在此不再赘述。
由于反序列化信息可以表示为每组数据对应的索引数据的长度,根据反序列化信息,能够快速确定出每组数据对应的索引数据的偏移量位置。在扫描索引数据子表时,可以根据每组数据对应的索引数据的偏移量位置来快速读取各个索引数据对应的列值。
步骤S402b:将各个列值与查询条件进行对比,确定符合所述查询条件的列值;
本申请实施例中,也可结合实施例二,将读取到的各个列族的列值与相应的子查询条件进行对比,确定符合各个子查询条件的各个列族的列值,基于对应的逻辑关系进行逻辑运算,得到符合用户提供的查询条件的列值。
步骤S402c:确定符合查询条件的列值对应的行键。
由于每个列值都具有与之唯一对应的行键,那么在确定出符合查询条件的列值后,可以快速在索引数据子表中查到对应的行键,随后便可在步骤S403中根据行键查询源数据子表,以得到查询结果并返回客户端。
实施例四
由上文介绍可知,数据存储表还可以包括按文本排序的全文检索数据子表,基于上述各实施例所提供的技术方案,下面提供了一种可能的实现方式,其中,步骤S402包括:当判断出查询条件中相关的列值为文本信息时,根据查询条件查询全文检索数据子表。
本申请实施例中,步骤S401的具体执行过程可参见实施例一,在此不再赘述。
这种情况下,用户提供的查询条件,可能包括以下各种情形:
查询条件包括一个文本类型的列族对应的一个子查询条件;
查询条件包括两个或两个以上文本类型的列族分别对应的两个或两个以上子查询条件;
查询条件包括一个文本类型的列族对应的一个子查询条件,以及一个非文本类型的列族对应的一个子查询条件;
查询条件包括一个文本类型的列族对应的一个子查询条件,以及两个或两个以上非文本类型的列族分别对应的两个或两个以上子查询条件;
查询条件包括两个或两个以上文本类型的列族分别对应的两个或两个以上子查询条件,以及一个非文本类型的列族对应的一个子查询条件;
查询条件包括两个或两个以上文本类型的列族分别对应的两个或两个以上子查询条件,以及两个或两个以上非文本类型的列族分别对应的两个或两个以上子查询条件。
可以理解,这些子查询条件之间也具有对应的逻辑关系,且针对不同子查询条件,需要扫描的对应的数据子表。其中,
根据非文本类型的列族对应的子查询条件,需要扫描相应的索引数据子表,得到非文本类型的列族对应的子查询条件分别对应的行键。具体实现方式可参见实施例二,在此不再赘述。
同理,根据本类型的列族对应的子查询条件,需要扫描相应的全文检索数据子表,得到文本类型的列族对应的子查询条件分别对应的行键。
将得到的所有行键按照对应的逻辑关系进行逻辑运算,得到户提供的查询条件对应的行键。随后,便可在步骤S403中根据行键查询源数据子表,以得到查询结果并返回客户端。
实施例五
基于上述各实施例所提供的技术方案,下面提供了一种可能的实现方式,能够利用本申请提供的数据存储表进行一级索引。
具体而言,本申请实施例提供的数据存储表的查询方法还包括步骤:当查询类型为非索引类型时,查询条件与行键相关,根据查询条件查询源数据子表,以得到查询结果并返回客户端。
本申请实施例中,预先在服务器端编写普通扫描方法scan()的代码,用于在查询类型为非索引类型时,进行调用来查询用户所需的数据。其中,使用本申请实施例的scan()方法能够直接扫描源数据子表,由于行键是有序的,能够快速得到查询结果,以返回客户端。
实施例六
本申请实施例提供了一种分区服务器,分区服务器中包括数据存储表,数据存储表包括按列值排序的索引数据子表及相对应的按行键排序的源数据子表,如图7所示,该分区服务器70可以包括:接收模块701、索引模块702以及查询模块703,其中,
接收模块701用于接收客户端发送的查询请求,并根据查询请求确定查询条件及对应的查询类型;
索引模块702用于当查询类型为索引类型时,查询条件与列值相关,根据查询条件查询索引数据子表,以得到对应的行键;
查询模块703用于根据行键查询源数据子表,以得到查询结果并返回客户端。
可选地,索引模块702具体用于根据查询条件,生成索引描述信息;以及,根据索引描述信息,扫描索引数据子表。
可选地,索引模块702具体用于确定查询条件中各个列族分别对应的子查询条件;以及,确定各个子查询条件之间的逻辑关系;以及,根据各个子查询条件和确定的逻辑关系生成索引描述信息。
可选地,索引模块702具体用于分别根据各个子查询条件扫描索引数据子表,得到各个子查询条件分别对应的行键;以及,基于确定的逻辑关系,根据各个子查询条件分别对应的行键得到查询条件对应的行键。
可选地,数据存储表还包括按文本排序的全文检索数据子表,可选地,索引模块702还具体用于当判断出查询条件中相关的列值为文本信息时,根据查询条件查询全文检索数据子表。
可选地,索引模块702具体用于依据数据存储表中存储的反序列化信息,在索引数据子表中读取各个列值;以及,将各个列值与查询条件进行对比,确定符合查询条件的列值;以及,确定符合查询条件的列值对应的行键。
本申请实施例所提供的分区服务器,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,该实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不再赘述。
本申请实施例提供的分区服务器通过一个数据存储表来存储索引数据和源数据,便于数据读写、数据迁移等情况下的数据管理,保证数据的一致性不被破坏,在查询数据时,在索引数据子表中可以快速查询到行键,并可以通过行键在源数据子表快速得到查询结果,有效提高数据的可靠性。
实施例七
本申请实施例还提供了一种电子设备,如图8所示,图8所示的电子设80包括:处理器801和存储器802,存储器802存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集由处理器801加载并执行以实现前述方法实施例中相应内容。可选的,电子设备80还可以包括收发器803。处理器801和收发器803相连,如通过总线804相连。需要说明的是,实际应用中收发器803不限于一个,该电子设备80的结构并不构成对本申请实施例的限定。
其中,处理器801可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器801也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线804可包括一通路,在上述组件之间传送信息。总线804可以是PCI总线或EISA总线等。总线804可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器802可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
本申请实施例还提供了一种计算机可读存储介质,该计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据存储表的查询方法,其特征在于,所述数据存储表包括按列值排序的索引数据子表及相对应的按行键排序的源数据子表,该方法包括:
接收客户端发送的查询请求,并根据查询请求确定查询条件及对应的查询类型;
当查询类型为索引类型时,查询条件与列值相关,根据所述查询条件查询所述索引数据子表,以得到对应的行键;
根据所述行键查询所述源数据子表,以得到查询结果并返回客户端。
2.根据权利要求1所述的查询方法,其特征在于,所述根据所述查询条件查询所述索引数据子表,包括:
根据所述查询条件,生成索引描述信息;
根据所述索引描述信息,扫描所述索引数据子表。
3.根据权利要求2所述的查询方法,其特征在于,所述根据所述查询条件,生成索引描述信息,包括:
确定所述查询条件中各个列族分别对应的子查询条件;
确定各个子查询条件之间的逻辑关系;
根据各个子查询条件和所述逻辑关系生成索引描述信息。
4.根据权利要求3所述的查询方法,其特征在于,根据所述索引描述信息,扫描所述索引数据子表,以得到对应的行键:包括:
分别根据各个子查询条件扫描所述索引数据子表,得到各个子查询条件分别对应的行键;
基于所述逻辑关系,根据各个子查询条件分别对应的行键得到所述查询条件对应的行键。
5.根据权利要求1所述的查询方法,其特征在于,所述数据存储表还包括按文本排序的全文检索数据子表,所述当查询类型为索引类型时,查询条件与列值相关,根据所述查询条件查询所述索引数据子表,还包括:
当判断出查询条件中相关的列值为文本信息时,根据所述查询条件查询所述全文检索数据子表。
6.根据权利要求1所述的查询方法,其特征在于,所述根据所述查询条件查询所述索引数据子表,以得到对应的行键,包括:
依据数据存储表中存储的反序列化信息,在所述索引数据子表中读取各个列值;
将各个列值与所述查询条件进行对比,确定符合所述查询条件的列值;
确定符合所述查询条件的列值对应的行键。
7.根据权利要求1-6所述的查询方法,其特征在于,该方法还包括:
当查询类型为非索引类型时,所述查询条件与行键相关,根据所述查询条件查询所述源数据子表,以得到查询结果并返回客户端。
8.一种分区服务器,其特征在于,所述分区服务器中包括数据存储表,所述数据存储表包括按列值排序的索引数据子表及相对应的按行键排序的源数据子表,该分区服务器包括:
接收模块,用于接收客户端发送的查询请求,并根据查询请求确定查询条件及对应的查询类型;
索引模块,用于当查询类型为索引类型时,查询条件与列值相关,根据所述查询条件查询所述索引数据子表,以得到对应的行键;
查询模块,用于根据所述行键查询所述源数据子表,以得到查询结果并返回客户端。
9.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-7任一项所述的查询方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储计算机指令、程序、代码集或指令集,当其在计算机上运行时,使得计算机执行如权利要求1-7任一项所述的查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811058605.0A CN110888870A (zh) | 2018-09-11 | 2018-09-11 | 数据存储表的查询方法、分区服务器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811058605.0A CN110888870A (zh) | 2018-09-11 | 2018-09-11 | 数据存储表的查询方法、分区服务器及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110888870A true CN110888870A (zh) | 2020-03-17 |
Family
ID=69745616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811058605.0A Pending CN110888870A (zh) | 2018-09-11 | 2018-09-11 | 数据存储表的查询方法、分区服务器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110888870A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100175A (zh) * | 2020-08-28 | 2020-12-18 | 拉卡拉支付股份有限公司 | 分区数据定向传递方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011130706A2 (en) * | 2010-04-16 | 2011-10-20 | Salesforce.Com, Inc. | Methods and systems for performing cross store joins in a multi-tenant store |
CN106202207A (zh) * | 2016-06-28 | 2016-12-07 | 中国电子科技集团公司第二十八研究所 | 一种基于HBase‑ORM的索引及检索系统 |
CN106777343A (zh) * | 2017-01-16 | 2017-05-31 | 百融(北京)金融信息服务股份有限公司 | 增量分布式索引系统和方法 |
-
2018
- 2018-09-11 CN CN201811058605.0A patent/CN110888870A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011130706A2 (en) * | 2010-04-16 | 2011-10-20 | Salesforce.Com, Inc. | Methods and systems for performing cross store joins in a multi-tenant store |
CN106202207A (zh) * | 2016-06-28 | 2016-12-07 | 中国电子科技集团公司第二十八研究所 | 一种基于HBase‑ORM的索引及检索系统 |
CN106777343A (zh) * | 2017-01-16 | 2017-05-31 | 百融(北京)金融信息服务股份有限公司 | 增量分布式索引系统和方法 |
Non-Patent Citations (1)
Title |
---|
张威: "环境空气质量监测大数据非侵入式二级索引的研究", 《中国优秀硕士论文全文数据库信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100175A (zh) * | 2020-08-28 | 2020-12-18 | 拉卡拉支付股份有限公司 | 分区数据定向传递方法及装置 |
CN112100175B (zh) * | 2020-08-28 | 2021-10-19 | 拉卡拉支付股份有限公司 | 分区数据定向传递方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601474B2 (en) | Resuming execution of an execution plan in a virtual machine | |
US8219587B2 (en) | Method for searching a tree structure | |
CN107729371B (zh) | 区块链的数据索引及查询方法、装置、设备及存储介质 | |
US8732143B2 (en) | Reducing locking during database transactions | |
US8812489B2 (en) | Swapping expected and candidate affinities in a query plan cache | |
KR20010089309A (ko) | 2 이상의 모델들간의 차이점을 결정하는 방법 | |
US9218394B2 (en) | Reading rows from memory prior to reading rows from secondary storage | |
JPH11212980A (ja) | インデクス作成方法および検索方法 | |
US8442971B2 (en) | Execution plans with different driver sources in multiple threads | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
CN116186133A (zh) | 一种融合正排与倒排索引的电子文档管理方法 | |
CN108549666B (zh) | 一种数据表的排序方法、装置、设备及存储介质 | |
US20080114752A1 (en) | Querying across disparate schemas | |
US20130041887A1 (en) | Adding entries to an index based on use of the index | |
CN111125216B (zh) | 数据导入Phoenix的方法及装置 | |
US8407255B1 (en) | Method and apparatus for exploiting master-detail data relationships to enhance searching operations | |
CN108959330B (zh) | 一种数据库的处理、数据查询方法及设备 | |
US10380111B2 (en) | System and method for searching data | |
CN110888870A (zh) | 数据存储表的查询方法、分区服务器及电子设备 | |
CN109697234B (zh) | 实体的多属性信息查询方法、装置、服务器和介质 | |
CN116521733A (zh) | 一种数据查询方法及装置 | |
US10185742B2 (en) | Flexible text searching for data objects of object notation | |
CN115328950A (zh) | 一种基于二级索引的hbase查询方法、终端设备及存储介质 | |
CN111309704B (zh) | 数据库操作方法和数据库操作系统 | |
US9020995B2 (en) | Hybrid relational, directory, and content query facility |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200317 |