CN106940715A - 一种基于索引表的查询的方法及设备 - Google Patents

一种基于索引表的查询的方法及设备 Download PDF

Info

Publication number
CN106940715A
CN106940715A CN201710138728.4A CN201710138728A CN106940715A CN 106940715 A CN106940715 A CN 106940715A CN 201710138728 A CN201710138728 A CN 201710138728A CN 106940715 A CN106940715 A CN 106940715A
Authority
CN
China
Prior art keywords
index
value
node
file
concordance list
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.)
Granted
Application number
CN201710138728.4A
Other languages
English (en)
Other versions
CN106940715B (zh
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.)
Transwarp Technology Shanghai Co Ltd
Original Assignee
Star Link Information Technology (shanghai) 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 Star Link Information Technology (shanghai) Co Ltd filed Critical Star Link Information Technology (shanghai) Co Ltd
Priority to CN201710138728.4A priority Critical patent/CN106940715B/zh
Publication of CN106940715A publication Critical patent/CN106940715A/zh
Application granted granted Critical
Publication of CN106940715B publication Critical patent/CN106940715B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/2425Iterative querying; Query formulation based on the results of a preceding query

Landscapes

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

Abstract

本申请的目的是提供一种基于索引表的查询的方法及设备,本申请通过根据用户的查询请求判断所述索引列的值是否为确定值,进而选择对应的索引表,根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。在从节点端,根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件,从而满足用户不同的筛选条件,有效地筛选出满足条件的数据文件,大大减少了查询时的数据读取量,缩短查询时间、提高了数据查询的效率。

Description

一种基于索引表的查询的方法及设备
技术领域
本申请涉及计算机领域,尤其涉及一种基于索引表的查询的方法及设备。
背景技术
随着数据库技术的发展和应用,数据库存储的数据量与日俱增,同时快速、灵活地进行大数据量的复杂查询处理也成为新的需求。OLAP(On-Line Analytical Processing,联机分析处理),专门用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持。通常状况下,OLAP用户只需要查询少数的几个数据列,利用行式存储会加载很多无用的数据列,导致查询性能下降。分布式列式存储的基本查询方法首先从zookeeper中读取元信息,进而去集群中各个机器读取所有的数据文件,进而从每个数据文件中读取满足条件的记录,此方式直接导致数据访问量过大,影响了OLAP的查询性能。
申请内容
本申请的一个目的是提供一种基于索引表的查询的方法及设备,解决现有技术中查询数据时数据访问量过大,影响联机分析处理的查询性能的问题。
根据本申请的一个方面,提供了一种在主节点端基于索引表的查询的方法,所述方法包括:
根据用户的查询请求通过索引表的数据结构查找所述索引表的索引列,并判断所述索引列的值是否为确定值,得到判断结果;
根据所述判断结果确定所述索引表的类型;
通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点;
根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。
进一步地,所述索引表的数据结构中索引文件的结构包括BPlusTree结构。
进一步地,所述BPlusTree结构包括叶子节点的键值和位置信息值,其中,所述键值根据所述索引表的索引列的值确定,
所述位置信息值根据所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量确定。
根据本申请另一个方面,提供了一种在从节点端基于索引表的查询的方法,所述方法包括:
根据主节点发送的索引文件的位置信息通过索引文件的数据结构确定所述索引文件所在索引表中的索引列的值;
根据所述索引列的值获取所述索引表中所述索引文件的信息;
根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件。
进一步地,所述索引文件的信息包括所述索引文件的数据结构中的键值及位置信息值时,根据所述索引列的值获取所述索引表中所述索引文件的信息,包括:
根据所述索引列的值确定所述索引文件的数据结构中所述索引列的值对应的键值;
根据所述索引列的值对应的键值获取所述索引文件的数据结构中位置信息值。
进一步地,所述索引表的数据结构中的位置信息值,包括:
所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量。
根据本申请的又一方面,还提供了一种基于索引表的查询的主节点设备,所述主节点设备包括:
判断装置,用于根据用户的查询请求通过索引表的数据结构查找所述索引表的索引列,并判断所述索引列的值是否为确定值,得到判断结果;
确定类型装置,用于根据所述判断结果确定所述索引表的类型;
定位装置,用于通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点;
发送装置,用于根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。
进一步地,所述索引表的数据结构中索引文件的结构包括BPlusTree结构。
进一步地,所述BPlusTree结构包括叶子节点的键值和位置信息值,其中,
所述键值根据所述索引表的索引列的值确定,
所述位置信息值根据所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量确定。
根据本申请再一个方面,还提供了一种基于索引表的查询的从节点设备,所述从节点设备包括:
确定装置,用于根据主节点发送的索引文件的位置信息通过索引文件的数据结构确定所述索引文件所在索引表中的索引列的值;
获取装置,用于根据所述索引列的值获取所述索引表中所述索引文件的信息;
查询装置,用于根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件。
进一步地,所述索引文件的信息包括所述索引文件的数据结构中的键值及位置信息值时,所述获取装置用于:
根据所述索引列的值确定所述索引文件的数据结构中所述索引列的值对应的键值;
根据所述索引列的值对应的键值获取所述索引文件的数据结构中位置信息值。
进一步地,所述索引表的数据结构中的位置信息值,包括:
所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量。
与现有技术相比,本申请通过根据用户的查询请求通过索引表的数据结构查找所述索引表的索引列,并判断所述索引列的值是否为确定值,得到判断结果;根据所述判断结果确定所述索引表的类型;通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点;根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。在从节点端,根据主节点发送的索引文件的位置信息通过索引文件的数据结构确定所述索引文件所在索引表中的索引列的值;根据所述索引列的值获取所述索引表中所述索引文件的信息;根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件。从而通过根据查询条件动态地选择合适的全局索引表并快速确定索引文件位置,接着根据全局索引表的元信息将索引文件加载至内存,结合过滤条件筛选出满足条件的数据文件和偏移量。若数据文件存在于本地,则直接进行后续的查询处理,否则主节点将查询任务和索引信息再次分配给数据文件所在的机器,最后,数据文件所在的机器将满足条件的数据文件加载至内存,根据偏移量从数据文件中读取数据,返回查询结果。通过本申请的查询方法,满足用户不同的筛选条件,有效地筛选出满足条件的数据文件,大大减少了查询时的数据读取量,缩短查询时间,较好地提高了OLAP的查询效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面,提供了一种在主节点端基于索引表的查询的方法流程示意图;
图2示出本申请一实施例中的分布式***框架图;
图3示出本申请中的一实施例中数据源的查询结构化语句;
图4示出本申请中的一实施例的数据源;
图5示出本申请中的一实施例中创建索引表后索引文件的信息分配示意图;
图6示出根据本申请另一个方面,提供了一种在从节点端基于索引表的查询的方法流程示意图;
图7示出根据本申请又一个方面,还提供了一种基于索引表的查询的主节点设备的结构示意图;
图8示出根据本申请另一个方面,还提供了一种基于索引表的查询的从节点设备的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请一个方面,提供了一种在主节点端基于索引表的查询的方法流程示意图,其中,所述方法包括:步骤S11~步骤S14,优选地应用于分布式***中数据查询,
在步骤S11中,根据用户的查询请求通过索引表的数据结构查找所述索引表的索引列,并判断所述索引列的值是否为确定值,得到判断结果;在本申请一实施例中,根据用户的查询条件以便判断查找到的索引列的值是否为确定值,根据用户的查询请求确定索引表的索引列,索引表的数据结构中包括了根据索引表的索引列的值确定的键值,得到判断结果,从而为用户提供动态选取相应索引表的可能。
本申请一实施例中,所述索引表的数据结构中索引文件的结构包括BPlusTree结构,在此,索引文件的结构可以为BPlusTree结构,优选地,在所述实施例中,BPlusTree结构包括叶子节点的键值和位置信息值,BPlusTree结构的叶子节点包含元组<键值,位置信息值>(<key,value>),BPlusTree结构能够有效地对输入的索引列数据进行排序,从而可以快速查询索引列对应的记录的位置,快速响应数据的查询任务。其中,所述键值(key)根据所述索引表的索引列的值确定,所述位置信息值(value)根据所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量确定,key值为索引列的值,来源于数据文件,value为该索引列所在的数据文件信息和满足条件的记录在该索引文件中的偏移量。
在步骤S12中,根据所述判断结果确定所述索引表的类型;在此,根据判断结果中索引列的值是否为确定值进行动态选择索引表的类型:若所述判断结果为所述索引列的值为确定值,则确定所述索引表的类型为所述哈希类全局索引表,若所述判断结果为所述索引列的值为非确定值,则确定所述索引表的类型为所述范围类全局索引表。
在本申请一实施例中,所述索引表的类型包括哈希类全局索引表和/或范围类全局索引表。在此,哈希类与范围类全局索引表的索引文件在集群中的分配策略略有不同。哈希类全局索引表是根据索引列的哈希值决定索引文件在分布式集群中所分布的机器,而范围类全局索引表则是根据索引列值的范围将索引文件分配到对应的机器。因此,需要根据查询条件动态的选择索引表的类型,在确定索引表的类型后,根据各自的分配策略进行确定索引文件所在的从节点。
本申请一实施例中的分布式***框架图如图2所示,包括客户端(client)、主节点(Master)、一个或若干从节点(slave)以及zookeeper,可将每个数据表中数据文件存储于固态硬盘(SSD)中,在本申请实施例中,数据表的元信息存储在zookeeper中,其中,所述zookeeper为性能分布式应用的协调***。
接上述实施例,图3所示的用户针一数据源的查询sql语句,如Sql 1:“Select*from table A where id=1”表示查询sql 1语句执行的是查询数据表A中id为1的数据列对应的数据,根据该sql 1的查询条件,可确定索引列的值为id的值1,是确定值,则选取哈希类全局索引表进行查询数据;而Sql 3:“Select*from table A where id<5”表示查询sql 5语句执行的是查询数据表A中id小于5的数据列对应的数据,根据该sql 5语句执行的查询条件,可确定索引列的值为小于5,不是确定值,因此针对该sql 5的查询语句需要选取与sql 1不同的索引表,选择范围类全局索引表进行查询数据。
在本申请一实施例中,当所述索引表的类型为哈希类全局索引表时,在步骤S13之前,所述方法还包括步骤S12’,根据所述哈希类全局索引表的索引列的哈希值确定的分配规则,将所述哈希类全局索引表的索引文件的信息值分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。在此,根据实际需求,确定需要创建全局索引的列,即从数据表中选取部分列作为索引列,进而利用所选取的索引列创建分布式全局索引表对应的元信息,其中,该元信息包括全局索引表所包含的所有索引文件在集群中各个机器硬盘上的位置信息。索引表被创建成功后可以用于分布式***中数据的查询,能够满足用户只需要查询少数的几个数据列的需求的同时避免读取所有的数据文件,大大减少访问的数据量。
具体地,在步骤S12’中,根据所述哈希类全局索引表的索引列的值及所述从节点的个数确定所述索引列的哈希值,将所述索引列的哈希值为i对应的BPlusTree结构中叶子节点的键值及位置信息值分配至第i+1个从节点的索引文件中,其中,i为自然数,从而合理地将索引文件的信息分配至每个slave中,达到均匀分布的目的。需要说明的是,通过确定哈希值,从而确定了索引文件的信息被分配至的机器的信息(如被分配至机器1上),即确定了将哈希值对应的<key,value>分配至的机器的信息。
在本申请一实施例中,假设分布式集群中有1台master,n台slave。哈希类全局索引表通过对索引列求哈希值,而索引列的值为BPlusTree结构中叶子节点的key值,索引列对应的数据文件的信息和索引列对应记录在数据文件中的偏移量为value。将key以及key的哈希值为i的记录的位置信息value分配到第i+1台slave的索引文件中,其中,哈希值可以根据索引列的值及分布式集群中的slave个数确定。
在本申请一实施例中,当所述索引表的类型为范围类全局索引表时,在步骤S13之前,所述方法还包括:步骤S121和步骤S122,在步骤S121中,根据对所述索引列的值进行采样的采样结果确定分配范围区间,并记录每个从节点以及其对应的索引列的分配范围区间;在步骤S122中,根据所述分配范围区间确定的分配规则,将所述范围类全局索引表的索引文件的信息分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。具体地,在步骤S122中,将所述范围类全局索引表的索引列的值与所述记录的分配范围区间进行比较,确定所述索引列的值所在的分配范围区间;根据所述索引列的值所在的分配范围区间,将所述索引列的值对应的BPlusTree结构中叶子节点的键值及位置信息值分配至所述分配范围区间对应的从节点的索引文件。
在本申请一实施例中,假设分布式集群中有1台Master,n台slave。范围类全局索引表通过对数据表文件的索引列的值进行采样,根据采样结果设定n个范围,使得每个范围内的数据量尽量均匀分布,并在Master中记录每台机器以及其对应的索引列的范围区间。当生成一个索引文件时,会将索引文件的索引列的值与Master中的n个范围进行比较,根据所属范围区域将该列对应的数据文件信息和在数据文件中的偏移量,即<key,value>更新到范围区域相应的slave的索引文件中。
需要说明的是,在创建索引表时,索引文件的大小达到预设的索引文件大小阈值时,生成新的索引文件,Master将所述新的索引文件的位置信息更新至索引表对应的元信息中。在本申请一实施例中,如图4所示的实例的数据源,该数据源共1000条记录,包括地址标识(id)、姓名(name)、年龄(age)、性别(sex)四列数据。将图4中的数据作为数据源,假设分布式***中有1台Master,3台slave,将数据文件的最大范围设定为25行,当输入的数据行数等于最大范围25时,分布式列式存储平台将当前的数据行作为一个数据文件,Master根据负载均衡原则将其输出到集群中某一机器的SSD中对应的数据文件(FileSegment),并更新数据表对应的元信息,针对哈希类全局索引表,key为id的值,value为id对应的数据文件的信息和id对应记录在数据文件中的偏移量信息。通过key值取哈希,将哈希结果为0、1、2的<key,value>元组分别分配到集群中的第1、2、3台机器的哈希类索引表的索引文件(HashIndexFileSegment)中,如图5所示,当id=1时,哈希结果为1,则将其<key,value>存储到集群中的第2台slave中,当id=2时,哈希结果为2,则将其<key,value>存储到集群中的第3台slave中;当id=3时,哈希结果为0,则将其<key,value>存储到集群中的第1台slave中,其中,{key|key%3=哈希值}是指key与slave的个数(这里个数为3)之间进行取余,得到哈希值,这里key为id的值。
当创建范围类全局索引表时,对数据源的key值采样后的范围划分结果如图5所示,范围划分原则应尽量使得各个范围区间内的记录数接近,范围分区的结果包含[1,333]、[334,666]和[667,999]三个区间,并在Master中存储三台slave各自对应的范围区域,当数据块中的索引列的值满足某个范围区间时,将其索引信息存储到该范围区间对应的slave机器的范围类索引表的数据文件(RangeIndexFileSegment)中,以BPlusTree叶子节点的形式存在,如id=5,key值落在第一个范围区间,则将其对应的<key,value>信息存储到第一台机器的索引文件中。
接上述实施例,在步骤S13中,通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点;在本申请一实施例中,确定索引表的类型后,根据各自索引表的类型对应的分配策略计算出满足条件的索引文件在分布式集群中的从节点,具体实现方式可以通过以下实施例实现:
当选择的索引表为哈希类全局索引表时,通过所述哈希类全局索引表确定所述索引列的哈希值;根据所述哈希值确定所述哈希类全局索引表对应的索引文件所在的从节点。在此,当查询条件为索引列的确定值时,则选取哈希类全局索引表,计算出查询条件中列值的哈希值j,则满足条件的索引文件在分布式集群中的第j+1台slave中。
当选择的索引表为范围类全局索引表时,通过所述范围类全局索引表确定所述索引列的值所属的分配范围区间;根据确定的分配范围区间确定所述范围类全局索引表对应的索引文件所在的从节点。在此,若查询条件为索引列的不确定值,则选取范围类全局索引表,根据索引列所属的范围区域,确定满足条件的索引文件分布在集群的相应的slave中。
在本申请一具体实施例中,根据图3所示的查询sql1和sql2,对应key值均为确定值,则对其取哈希,得到id=1对应哈希值为1,确定其索引文件位于集群的slave2中,而id=27对应哈希值为0,确定其索引文件位于集群的slave1中。sql3中的key为不确定值,其查询条件是id<5,恰好落在[1,333]区间内,随即确定其索引文件位于slave1中。在确定了索引文件所在的机器后,两种不同的全局索引表的后续查询步骤相同。
在步骤S14中,根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。在此,Master根据相应全局索引表的元信息获取上述slave中所有索引文件的位置信息并发送给相应的slave,同时master根据数据表的元信息将该slave中存储的数据文件位置信息一并发送给slave;比如,针对sql1,根据全局索引表的元信息找到slave2中所有的索引文件位置信息将其发送给slave2,同时将slave2上存储的所有数据文件的位置信息一并发送。
需要说明的是,在步骤S14之后,所述还包括:步骤S15,接收所述从节点反馈的所述索引文件的数据结构中的位置信息值。在此,当Master发送数据文件信息给某一slave,而在该slave中不含有满足索引文件的数据结构中的位置信息值(value)的数据文件,则Master会接收到由该slave反馈的索引文件的数据结构中的value,接收所述从节点反馈的所述索引文件的数据结构中的位置信息值之后,执行步骤S16,根据所述位置信息值从所述数据表的元信息重新确定所述数据文件所在的从节点;将所述索引表包含的索引文件的位置信息及所述数据表包含的数据文件的位置信息重新发送至所重新确定的从节点。在此,由Master根据数据文件的位置将任务重新分配给存储该数据文件的其他slave,并将相应的数据文件位置信息和value信息发送给其他slave。例如,根据Master发送给该自身的数据文件信息,发现本地的数据文件中并未找到fs1的相关信息,则说明fs1在集群的其他slave中,此时,接收slave2所找到的<key,value>信息的反馈,Matser通过查找数据表的元信息找到fs1位于slave1文件中,于是将<key,value>信息发送给slave1,并把之后的查询任务转交给slave1。
图6示出根据本申请另一个方面,提供了一种在从节点端基于索引表的查询的方法流程示意图,其中,所述方法包括:步骤S21~步骤S23,优选地应用于分布式***中数据查询,
在步骤S21中,根据主节点发送的索引文件的位置信息通过所述索引文件的数据结构确定所述索引文件所在索引表中的索引列的值;在本申请一实施例中,从节点slave根据接收到的索引文件的位置信息将索引文件加载至内存,进而根据索引文件的位置信息查找到索引文件所在索引表中的索引列的值,在步骤S22中,根据所述索引列的值获取所述索引表中所述索引文件的信息;在此,所述索引文件的信息包括所述索引文件的数据结构中的键值及位置信息值时,根据所述索引列的值确定所述索引文件的数据结构中所述索引列的值对应的键值;根据所述索引列的值对应的键值获取所述索引文件的数据结构中位置信息值。其中,所述索引表的数据结构中的位置信息值包括:所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量。接上述实施例,由于索引文件以BPlusTree结构存储,其中该结构的叶子节点中的键值为索引列的值,因此可以能够快速地通过查询条件中的索引列的值在索引文件中找到符合条件的键值key,并读取其位置信息值(value),即该条记录对应的数据文件信息和偏移量,例如,slave2将本地的索引文件信息加载到内存,在各个BPlusTree结构中找到key=1的节点,并读取其value值,即fs1:1 2,表示id=1的记录位于数据文件1(FileSegment1)中,且偏移量为1和2。
在步骤S23中,根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件。在本申请一实施例中,结合Master发送给该slave的数据文件信息,若该slave中含有满足value的数据文件,则直接对这些数据文件进行查询步骤,根据value中的偏移量从中读取每个数据文件中满足条件的数据,返回查询结果。
优选地,若所述从节点中不存在用户查询请求对应的数据文件,则将所述数据结构中的位置信息值反馈至所述主节点。在本申请一实施例中,针对不在该slave中的数据文件,slave将其余的value信息传递给Master,由Master根据数据文件的位置将任务重新分配给存储这些数据文件的其他slave,并将相应的数据文件位置信息和value信息发送给其他slave。例如,根据Master发送给该自身的数据文件信息,发现本地的数据文件中并未找到fs1的相关信息,则说明fs1在集群的其他slave中,此时,slave2将找到的<key,value>信息发送给Master,则Matser通过查找数据表的元信息找到fs1位于slave1文件中,于是将<key,value>信息发送给slave1,并把之后的查询任务转交给slave1。Slave1将数据文件加载至内存,根据value中的偏移量从中读取每个数据文件中满足条件的数据,返回查询结果,比如,slave1接收Master发送的信息和任务,将fs1加载至内存,根据value中的偏移量1和2,读取数据文件中偏移量为1和2的两条记录,返回查询结果。
需要说明的是,在本申请上述实施例中,当从节点中不存在用户查询请求对应的数据文件时,从节点只将value传递给主节点,主节点此时只是去数据表的元信息找到数据文件的从节点和数据文件的位置信息,将任务发送给相应的从节点,相应的从节点直接根据数据文件的位置信息加载,并提取对应偏移量的数据,从而提高了数据查询的效率。
综上所述,在查询时,首先根据查询条件动态地选择合适的全局索引表并快速确定索引文件位置,接着根据全局索引表的元信息将索引文件加载至内存,结合过滤条件筛选出满足条件的数据文件和偏移量。若数据文件存在于本地,则直接进行后续的查询处理,否则主节点将查询任务和索引信息再次分配给数据文件所在的机器,最后,数据文件所在的机器将满足条件的数据文件加载至内存,根据偏移量从数据文件中读取数据,返回查询结果。本方法通过两类分布式全局索引表的创建,满足用户不同的筛选条件,有效地筛选出满足条件的数据文件,大大减少了查询时的数据读取量,缩短查询时间,较好地提高了OLAP的查询效率。
图7示出根据本申请又一个方面,还提供了一种基于索引表的查询的主节点设备的结构示意图,其中,所述主节点设备包括:判断装置11、确定类型装置12、定位装置13和发送装置14,优选地应用于分布式***中数据查询,
判断装置11,用于根据用户的查询请求通过索引表的数据结构查找所述索引表的索引列,并判断所述索引列的值是否为确定值,得到判断结果;在本申请一实施例中,根据用户的查询条件以便判断查找到的索引列的值是否为确定值,根据用户的查询请求确定索引表的索引列,索引表的数据结构中包括了根据索引表的索引列的值确定的键值,得到判断结果,从而为用户提供动态选取相应索引表的可能。
本申请一实施例中,所述索引表的数据结构中索引文件的结构包括BPlusTree结构,在此,索引文件的结构可以为BPlusTree结构,优选地,在所述实施例中,BPlusTree结构包括叶子节点的键值和位置信息值,BPlusTree结构的叶子节点包含元组<键值,位置信息值>(<key,value>),BPlusTree结构能够有效地对输入的索引列数据进行排序,从而可以快速查询索引列对应的记录的位置,快速响应数据的查询任务。其中,所述键值(key)根据所述索引表的索引列的值确定,所述位置信息值(value)根据所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量确定,key值为索引列的值,来源于数据文件,value为该索引列所在的数据文件信息和满足条件的记录在该索引文件中的偏移量。
确定类型装置12,用于根据所述判断结果确定所述索引表的类型;在此,根据判断结果中索引列的值是否为确定值进行动态选择索引表的类型:若所述判断结果为所述索引列的值为确定值,则确定所述索引表的类型为所述哈希类全局索引表,若所述判断结果为所述索引列的值为非确定值,则确定所述索引表的类型为所述范围类全局索引表。
在本申请一实施例中,所述索引表的类型包括哈希类全局索引表和/或范围类全局索引表。在此,哈希类与范围类全局索引表的索引文件在集群中的分配策略略有不同。哈希类全局索引表是根据索引列的哈希值决定索引文件在分布式集群中所分布的机器,而范围类全局索引表则是根据索引列值的范围将索引文件分配到对应的机器。因此,需要根据查询条件动态的选择索引表的类型,在确定索引表的类型后,根据各自的分配策略进行确定索引文件所在的从节点。
本申请一实施例中的分布式***框架图如图2所示,包括客户端(client)、主节点(Master)、一个或若干从节点(slave)以及zookeeper,可将每个数据表中数据文件存储于固态硬盘(SSD)中,在本申请实施例中,数据表的元信息存储在zookeeper中,其中,所述zookeeper为性能分布式应用的协调***。
接上述实施例,图3所示的用户针一数据源的查询sql语句,如Sql 1:“Select*from table A where id=1”表示查询sql 1语句执行的是查询数据表A中id为1的数据列对应的数据,根据该sql 1的查询条件,可确定索引列的值为id的值1,是确定值,则选取哈希类全局索引表进行查询数据;而Sql 3:“Select*from table A where id<5”表示查询sql 5语句执行的是查询数据表A中id小于5的数据列对应的数据,根据该sql 5语句执行的查询条件,可确定索引列的值为小于5,不是确定值,因此针对该sql 5的查询语句需要选取与sql 1不同的索引表,选择范围类全局索引表进行查询数据。
在本申请一实施例中,当所述索引表的类型为哈希类全局索引表时,所述主节点设备还包括分配装置12’,用于根据所述哈希类全局索引表的索引列的哈希值确定的分配规则,将所述哈希类全局索引表的索引文件的信息值分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。在此,根据实际需求,确定需要创建全局索引的列,即从数据表中选取部分列作为索引列,进而利用所选取的索引列创建分布式全局索引表对应的元信息,其中,该元信息包括全局索引表所包含的所有索引文件在集群中各个机器硬盘上的位置信息。索引表被创建成功后可以用于分布式***中数据的查询,能够满足用户只需要查询少数的几个数据列的需求的同时避免读取所有的数据文件,大大减少访问的数据量。
具体地,分配装置12’,用于根据所述哈希类全局索引表的索引列的值及所述从节点的个数确定所述索引列的哈希值,将所述索引列的哈希值为i对应的BPlusTree结构中叶子节点的键值及位置信息值分配至第i+1个从节点的索引文件中,其中,i为自然数,从而合理地将索引文件的信息分配至每个slave中,达到均匀分布的目的。需要说明的是,通过确定哈希值,从而确定了索引文件的信息被分配至的机器的信息(如被分配至机器1上),即确定了将哈希值对应的<key,value>分配至的机器的信息。
在本申请一实施例中,假设分布式集群中有1台master,n台slave。哈希类全局索引表通过对索引列求哈希值,而索引列的值为BPlusTree结构中叶子节点的key值,索引列对应的数据文件的信息和索引列对应记录在数据文件中的偏移量为value。将key以及key的哈希值为i的记录的位置信息value分配到第i+1台slave的索引文件中,其中,哈希值可以根据索引列的值及分布式集群中的slave个数确定。
在本申请一实施例中,当所述索引表的类型为范围类全局索引表时,所述主节点设备还包括:区间确定装置121和信息分配装置122,区间确定装置121,用于根据对所述索引列的值进行采样的采样结果确定分配范围区间,并记录每个从节点以及其对应的索引列的分配范围区间;信息分配装置122,用于根据所述分配范围区间确定的分配规则,将所述范围类全局索引表的索引文件的信息分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。具体地,信息分配装置122,用于将所述范围类全局索引表的索引列的值与所述记录的分配范围区间进行比较,确定所述索引列的值所在的分配范围区间;根据所述索引列的值所在的分配范围区间,将所述索引列的值对应的BPlusTree结构中叶子节点的键值及位置信息值分配至所述分配范围区间对应的从节点的索引文件。
在本申请一实施例中,假设分布式集群中有1台Master,n台slave。范围类全局索引表通过对数据表文件的索引列的值进行采样,根据采样结果设定n个范围,使得每个范围内的数据量尽量均匀分布,并在Master中记录每台机器以及其对应的索引列的范围区间。当生成一个索引文件时,会将索引文件的索引列的值与Master中的n个范围进行比较,根据所属范围区域将该列对应的数据文件信息和在数据文件中的偏移量,即<key,value>更新到范围区域相应的slave的索引文件中。
需要说明的是,在创建索引表时,索引文件的大小达到预设的索引文件大小阈值时,生成新的索引文件,Master将所述新的索引文件的位置信息更新至索引表对应的元信息中。在本申请一实施例中,如图4所示的实例的数据源,该数据源共1000条记录,包括地址标识(id)、姓名(name)、年龄(age)、性别(sex)四列数据。将图4中的数据作为数据源,假设分布式***中有1台Master,3台slave,将数据文件的最大范围设定为25行,当输入的数据行数等于最大范围25时,分布式列式存储平台将当前的数据行作为一个数据文件,Master根据负载均衡原则将其输出到集群中某一机器的SSD中对应的数据文件(FileSegment),并更新数据表对应的元信息,针对哈希类全局索引表,key为id的值,value为id对应的数据文件的信息和id对应记录在数据文件中的偏移量信息。通过key值取哈希,将哈希结果为0、1、2的<key,value>元组分别分配到集群中的第1、2、3台机器的哈希类索引表的索引文件(HashIndexFileSegment)中,如图5所示,当id=1时,哈希结果为1,则将其<key,value>存储到集群中的第2台slave中,当id=2时,哈希结果为2,则将其<key,value>存储到集群中的第3台slave中;当id=3时,哈希结果为0,则将其<key,value>存储到集群中的第1台slave中,其中,{key|key%3=哈希值}是指key与slave的个数(这里个数为3)之间进行取余,得到哈希值,这里key为id的值。
当创建范围类全局索引表时,对数据源的key值采样后的范围划分结果如图5所示,范围划分原则应尽量使得各个范围区间内的记录数接近,范围分区的结果包含[1,333]、[334,666]和[667,999]三个区间,并在Master中存储三台slave各自对应的范围区域,当数据块中的索引列的值满足某个范围区间时,将其索引信息存储到该范围区间对应的slave机器的范围类索引表的数据文件(RangeIndexFileSegment)中,以BPlusTree叶子节点的形式存在,如id=5,key值落在第一个范围区间,则将其对应的<key,value>信息存储到第一台机器的索引文件中。
接上述实施例,定位装置13,用于通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点;在本申请一实施例中,确定索引表的类型后,根据各自索引表的类型对应的分配策略计算出满足条件的索引文件在分布式集群中的从节点,具体实现方式可以通过以下实施例实现:
当选择的索引表为哈希类全局索引表时,通过所述哈希类全局索引表确定所述索引列的哈希值;根据所述哈希值确定所述哈希类全局索引表对应的索引文件所在的从节点。在此,当查询条件为索引列的确定值时,则选取哈希类全局索引表,计算出查询条件中列值的哈希值j,则满足条件的索引文件在分布式集群中的第j+1台slave中。
当选择的索引表为范围类全局索引表时,通过所述范围类全局索引表确定所述索引列的值所属的分配范围区间;根据确定的分配范围区间确定所述范围类全局索引表对应的索引文件所在的从节点。在此,若查询条件为索引列的不确定值,则选取范围类全局索引表,根据索引列所属的范围区域,确定满足条件的索引文件分布在集群的相应的slave中。
在本申请一具体实施例中,根据图3所示的查询sql1和sql2,对应key值均为确定值,则对其取哈希,得到id=1对应哈希值为1,确定其索引文件位于集群的slave2中,而id=27对应哈希值为0,确定其索引文件位于集群的slave1中。sql3中的key为不确定值,其查询条件是id<5,恰好落在[1,333]区间内,随即确定其索引文件位于slave1中。在确定了索引文件所在的机器后,两种不同的全局索引表的后续查询步骤相同。
发送装置14,用于根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。在此,Master根据相应全局索引表的元信息获取上述slave中所有索引文件的位置信息并发送给相应的slave,同时master根据数据表的元信息将该slave中存储的数据文件位置信息一并发送给slave;比如,针对sql1,根据全局索引表的元信息找到slave2中所有的索引文件位置信息将其发送给slave2,同时将slave2上存储的所有数据文件的位置信息一并发送。
需要说明的是,所述主节点设备还包括:接收装置15,用于接收所述从节点反馈的所述索引文件的数据结构中的位置信息值。在此,当Master发送数据文件信息给某一slave,而在该slave中不含有满足索引文件的数据结构中的位置信息值(value)的数据文件,则Master会接收到由该slave反馈的索引文件的数据结构中的value,接收所述从节点反馈的所述索引文件的数据结构中的位置信息值之后,执行步骤S16,根据所述位置信息值从所述数据表的元信息重新确定所述数据文件所在的从节点;将所述索引表包含的索引文件的位置信息及所述数据表包含的数据文件的位置信息重新发送至所重新确定的从节点。在此,由Master根据数据文件的位置将任务重新分配给存储该数据文件的其他slave,并将相应的数据文件位置信息和value信息发送给其他slave。例如,根据Master发送给该自身的数据文件信息,发现本地的数据文件中并未找到fs1的相关信息,则说明fs1在集群的其他slave中,此时,接收slave2所找到的<key,value>信息的反馈,Matser通过查找数据表的元信息找到fs1位于slave1文件中,于是将<key,value>信息发送给slave1,并把之后的查询任务转交给slave1。
图8示出根据本申请另一个方面,还提供了一种基于索引表的查询的从节点设备的结构示意图,其中,所述从节点设备包括:确定装置21、获取装置22和查询装置23,优选地应用于分布式***中数据查询,
确定装置21,用于根据主节点发送的索引文件的位置信息通过所述索引文件的数据结构确定所述索引文件所在索引表中的索引列的值;在本申请一实施例中,从节点slave根据接收到的索引文件的位置信息将索引文件加载至内存,进而根据索引文件的位置信息查找到索引文件所在索引表中的索引列的值,获取装置22用于根据所述索引列的值获取所述索引表中所述索引文件的信息;在此,所述索引文件的信息包括所述索引文件的数据结构中的键值及位置信息值时,根据所述索引列的值确定所述索引文件的数据结构中所述索引列的值对应的键值;根据所述索引列的值对应的键值获取所述索引文件的数据结构中位置信息值。其中,所述索引表的数据结构中的位置信息值包括:所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量。接上述实施例,由于索引文件以BPlusTree结构存储,其中该结构的叶子节点中的键值为索引列的值,因此可以能够快速地通过查询条件中的索引列的值在索引文件中找到符合条件的键值key,并读取其位置信息值(value),即该条记录对应的数据文件信息和偏移量,例如,slave2将本地的索引文件信息加载到内存,在各个BPlusTree结构中找到key=1的节点,并读取其value值,即fs1:12,表示id=1的记录位于数据文件1(FileSegment1)中,且偏移量为1和2。
查询装置23,用于根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件。在本申请一实施例中,结合Master发送给该slave的数据文件信息,若该slave中含有满足value的数据文件,则直接对这些数据文件进行查询步骤,根据value中的偏移量从中读取每个数据文件中满足条件的数据,返回查询结果。
优选地,所述从节点设备还包括反馈装置24,用于若所述从节点中不存在用户查询请求对应的数据文件,则将所述数据结构中的位置信息值反馈至所述主节点。在本申请一实施例中,针对不在该slave中的数据文件,slave将其余的value信息传递给Master,由Master根据数据文件的位置将任务重新分配给存储这些数据文件的其他slave,并将相应的数据文件位置信息和value信息发送给其他slave。例如,根据Master发送给该自身的数据文件信息,发现本地的数据文件中并未找到fs1的相关信息,则说明fs1在集群的其他slave中,此时,slave2将找到的<key,value>信息发送给Master,则Matser通过查找数据表的元信息找到fs1位于slave1文件中,于是将<key,value>信息发送给slave1,并把之后的查询任务转交给slave1。Slave1将数据文件加载至内存,根据value中的偏移量从中读取每个数据文件中满足条件的数据,返回查询结果,比如,slave1接收Master发送的信息和任务,将fs1加载至内存,根据value中的偏移量1和2,读取数据文件中偏移量为1和2的两条记录,返回查询结果。
需要说明的是,在本申请上述实施例中,当从节点中不存在用户查询请求对应的数据文件时,从节点只将value传递给主节点,主节点此时只是去数据表的元信息找到数据文件的从节点和数据文件的位置信息,将任务发送给相应的从节点,相应的从节点直接根据数据文件的位置信息加载,并提取对应偏移量的数据,从而提高了数据查询的效率。
综上所述,在查询时,首先根据查询条件动态地选择合适的全局索引表并快速确定索引文件位置,接着根据全局索引表的元信息将索引文件加载至内存,结合过滤条件筛选出满足条件的数据文件和偏移量。若数据文件存在于本地,则直接进行后续的查询处理,否则主节点将查询任务和索引信息再次分配给数据文件所在的机器,最后,数据文件所在的机器将满足条件的数据文件加载至内存,根据偏移量从数据文件中读取数据,返回查询结果。本方法通过两类分布式全局索引表的创建,满足用户不同的筛选条件,有效地筛选出满足条件的数据文件,大大减少了查询时的数据读取量,缩短查询时间,较好地提高了OLAP的查询效率。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (36)

1.一种在主节点端基于索引表的查询的方法,其中,所述方法包括:
根据用户的查询请求通过索引表的数据结构查找所述索引表的索引列,并判断所述索引列的值是否为确定值,得到判断结果;
根据所述判断结果确定所述索引表的类型;
通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点;
根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。
2.根据权利要求1所述的方法,所述索引表的数据结构中索引文件的结构包括BPlusTree结构。
3.根据权利要求2所述的方法,其中,所述BPlusTree结构包括叶子节点的键值和位置信息值,其中,
所述键值根据所述索引表的索引列的值确定,
所述位置信息值根据所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量确定。
4.根据权利要求1所述的方法,其中,所述索引表的类型包括哈希类全局索引表和/或范围类全局索引表。
5.根据权利要求4所述的方法,其中,根据所述判断结果确定所述索引表的类型,包括:
若所述判断结果为所述索引列的值为确定值,则确定所述索引表的类型为所述哈希类全局索引表。
6.根据权利要求4所述的方法,其中,根据所述判断结果确定所述索引表的类型,包括:
若所述判断结果为所述索引列的值为非确定值,则确定所述索引表的类型为所述范围类全局索引表。
7.根据权利要求5所述的方法,其中,当所述索引表的类型为哈希类全局索引表时,通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点之前,包括:
根据所述哈希类全局索引表的索引列的哈希值确定的分配规则,将所述哈希类全局索引表的索引文件的信息值分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。
8.根据权利要求7所述的方法,其中,根据所述哈希类全局索引表的索引列的哈希值确定的分配规则,将所述哈希类全局索引表的索引文件的信息分配至对应的从节点,包括:
根据所述索引列的值及所述从节点的个数确定所述索引列的哈希值;
将所述索引列的哈希值为i对应的键值及位置信息值分配至第i+1个从节点的索引文件中,其中,i为自然数。
9.根据权利要求8所述的方法,其中,通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点,包括:
通过所述哈希类全局索引表确定所述索引列的哈希值;
根据所述哈希值确定所述哈希类全局索引表对应的索引文件所在的从节点。
10.根据权利6所述的方法,其中,当所述索引表的类型为范围类全局索引表时,通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点之前,包括:
根据对所述索引列的值进行采样的采样结果确定分配范围区间,并记录每个从节点以及其对应的索引列的分配范围区间;
根据所述分配范围区间确定的分配规则,将所述范围类全局索引表的索引文件的信息分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。
11.根据权利要求10所述的方法,其中,根据所述分配范围区间确定的分配规则,将所述范围类全局索引表的索引文件的信息分配至对应的从节点,包括:
将所述范围类全局索引表的索引列的值与所述记录的分配范围区间进行比较,确定所述索引列的值所在的分配范围区间;
根据所述索引列的值所在的分配范围区间,将所述索引列的值对应的BPlusTree结构中叶子节点的键值及位置信息值分配至所述分配范围区间对应的从节点的索引文件中。
12.根据权利要求11所述的方法,其中,通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点,包括:
通过所述范围类全局索引表确定所述索引列的值所属的分配范围区间;
根据确定的分配范围区间确定所述范围类全局索引表对应的索引文件所在的从节点。
13.根据权利要求1所述的方法,其中,所述根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点之后,还包括:
接收所述从节点反馈的所述索引文件的数据结构中的位置信息值。
14.根据权利要求13所述的方法,其中,接收所述从节点反馈的所述索引文件的数据结构中的位置信息值之后,包括:
根据所述位置信息值从所述数据表的元信息重新确定所述数据文件所在的从节点;
将所述索引表包含的索引文件的位置信息及所述数据表包含的数据文件的位置信息重新发送至所重新确定的从节点。
15.一种在从节点端基于索引表的查询的方法,其中,所述方法包括:
根据主节点发送的索引文件的位置信息通过所述索引文件的数据结构确定所述索引文件所在索引表中的索引列的值;
根据所述索引列的值获取所述索引表中所述索引文件的信息;
根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件。
16.根据权利要求15所述的方法,其中,所述索引文件的信息包括所述索引文件的数据结构中的键值及位置信息值时,根据所述索引列的值获取所述索引表中所述索引文件的信息,包括:
根据所述索引列的值确定所述索引文件的数据结构中所述索引列的值对应的键值;
根据所述索引列的值对应的键值获取所述索引文件的数据结构中位置信息值。
17.根据权利要求16所述的方法,其中,所述索引表的数据结构中的位置信息值,包括:
所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量。
18.根据权利要求15所述的方法,其中,根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件之后,包括:若所述从节点中不存在用户查询请求对应的数据文件,则将所述数据结构中的位置信息值反馈至所述主节点。
19.一种基于索引表的查询的主节点设备,其中,所述主节点设备包括:
判断装置,用于根据用户的查询请求通过索引表的数据结构查找所述索引表的索引列,并判断所述索引列的值是否为确定值,得到判断结果;
确定类型装置,用于根据所述判断结果确定所述索引表的类型;
定位装置,用于通过所述索引表的类型确定所述索引表对应的索引文件所在的从节点;
发送装置,用于根据所述索引表对应的元信息将所确定的从节点上的索引文件的位置信息发送至所述从节点,并根据所述数据表的元信息将所确定的从节点上的数据文件的位置信息发送至所述从节点。
20.根据权利要求19所述的主节点设备,所述索引表的数据结构中索引文件的结构包括BPlusTree结构。
21.根据权利要求20所述的主节点设备,其中,所述BPlusTree结构包括叶子节点的键值和位置信息值,其中,
所述键值根据所述索引表的索引列的值确定,
所述位置信息值根据所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量确定。
22.根据权利要求19所述的主节点设备,其中,所述索引表的类型包括哈希类全局索引表和/或范围类全局索引表。
23.根据权利要求22所述的主节点设备,其中,所述确定类型装置用于:
若所述判断结果为所述索引列的值为确定值,则确定所述索引表的类型为所述哈希类全局索引表。
24.根据权利要求22所述的主节点设备,其中,所述确定类型装置用于:
若所述判断结果为所述索引列的值为非确定值,则确定所述索引表的类型为所述范围类全局索引表。
25.根据权利要求23所述的主节点设备,其中,当所述索引表的类型为哈希类全局索引表时,所述主节点设备还包括:
分配装置,用于根据所述哈希类全局索引表的索引列的哈希值确定的分配规则,将所述哈希类全局索引表的索引文件的信息值分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。
26.根据权利要求25所述的主节点设备,其中,所述分配装置用于:
根据所述索引列的值及所述从节点的个数确定所述索引列的哈希值;
将所述索引列的哈希值为i对应的键值及位置信息值分配至第i+1个从节点的索引文件中,其中,i为自然数。
27.根据权利要求26所述的主节点设备,其中,所述定位装置用于:
通过所述哈希类全局索引表确定所述索引列的哈希值;
根据所述哈希值确定所述哈希类全局索引表对应的索引文件所在的从节点。
28.根据权利24所述的主节点设备,其中,当所述索引表的类型为范围类全局索引表时,所述主节点设备还包括:
区间确定装置,用于根据对所述索引列的值进行采样的采样结果确定分配范围区间,并记录每个从节点以及其对应的索引列的分配范围区间;
信息分配装置,用于根据所述分配范围区间确定的分配规则,将所述范围类全局索引表的索引文件的信息分配至对应的从节点,其中,所述索引文件的信息包括所述索引文件的BPlusTree结构中叶子节点的键值和位置信息值。
29.根据权利要求28所述的主节点设备,其中,所述信息分配装置用于:
将所述范围类全局索引表的索引列的值与所述记录的分配范围区间进行比较,确定所述索引列的值所在的分配范围区间;
根据所述索引列的值所在的分配范围区间,将所述索引列的值对应的BPlusTree结构中叶子节点的键值及位置信息值分配至所述分配范围区间对应的从节点的索引文件中。
30.根据权利要求29所述的主节点设备,其中,所述定位装置用于:
通过所述范围类全局索引表确定所述索引列的值所属的分配范围区间;
根据确定的分配范围区间确定所述范围类全局索引表对应的索引文件所在的从节点。
31.根据权利要求19所述的主节点设备,其中,所述主节点设备还包括:
接收装置,用于接收所述从节点反馈的索引文件的数据结构中的位置信息值。
32.根据权利要求31所述的主节点设备,其中,所述主节点设备还包括:
重新分配装置,用于根据所述位置信息值从所述数据表的元信息重新确定所述数据文件所在的从节点;
将所述索引表包含的索引文件的位置信息及所述数据表包含的数据文件的位置信息重新发送至所重新确定的从节点。
33.一种基于索引表的查询的从节点设备,其中,所述从节点设备包括:
确定装置,用于根据主节点发送的索引文件的位置信息通过所述索引文件的数据结构确定所述索引文件所在索引表中的索引列的值;
获取装置,用于根据所述索引列的值获取所述索引表中所述索引文件的信息;
查询装置,用于根据所述主节点发送的数据表的元信息中数据文件的位置信息,判断所述从节点中是否存在用户查询请求对应的数据文件,若是,则根据所述索引文件的信息获取所述数据文件。
34.根据权利要求33所述的从节点设备,其中,所述索引文件的信息包括所述索引文件的数据结构中的键值及位置信息值时,所述获取装置用于:
根据所述索引列的值确定所述索引文件的数据结构中所述索引列的值对应的键值;
根据所述索引列的值对应的键值获取所述索引文件的数据结构中位置信息值。
35.根据权利要求34所述的从节点设备,其中,所述索引表的数据结构中的位置信息值,包括:
所述索引列所属数据文件的文件名及所述索引列所在的行在所述数据文件中的偏移量。
36.根据权利要求33所述的从节点设备,其中,所述从节点设备还包括:
反馈装置,用于若所述索引文件中不存在用户查询请求对应的数据文件,则将所述数据结构中的位置信息值反馈至所述主节点。
CN201710138728.4A 2017-03-09 2017-03-09 一种基于索引表的查询的方法及设备 Active CN106940715B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710138728.4A CN106940715B (zh) 2017-03-09 2017-03-09 一种基于索引表的查询的方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710138728.4A CN106940715B (zh) 2017-03-09 2017-03-09 一种基于索引表的查询的方法及设备

Publications (2)

Publication Number Publication Date
CN106940715A true CN106940715A (zh) 2017-07-11
CN106940715B CN106940715B (zh) 2019-11-15

Family

ID=59469094

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710138728.4A Active CN106940715B (zh) 2017-03-09 2017-03-09 一种基于索引表的查询的方法及设备

Country Status (1)

Country Link
CN (1) CN106940715B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522791A (zh) * 2020-04-30 2020-08-11 电子科技大学 一种分布式文件重复数据删除***及方法
WO2022000851A1 (zh) * 2020-06-28 2022-01-06 百度在线网络技术(北京)有限公司 数据处理方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1965316A (zh) * 2004-04-09 2007-05-16 甲骨文国际公司 用于存取xml数据的索引
CN101674334A (zh) * 2009-09-30 2010-03-17 华中科技大学 一种网络存储设备的访问控制方法
CN102033954A (zh) * 2010-12-24 2011-04-27 东北大学 关系数据库中可扩展标记语言文档全文检索查询索引方法
CN103384878A (zh) * 2011-02-25 2013-11-06 数创株式会社 分布式数据库***和分布式数据库的数据结构

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1965316A (zh) * 2004-04-09 2007-05-16 甲骨文国际公司 用于存取xml数据的索引
CN101674334A (zh) * 2009-09-30 2010-03-17 华中科技大学 一种网络存储设备的访问控制方法
CN102033954A (zh) * 2010-12-24 2011-04-27 东北大学 关系数据库中可扩展标记语言文档全文检索查询索引方法
CN103384878A (zh) * 2011-02-25 2013-11-06 数创株式会社 分布式数据库***和分布式数据库的数据结构

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
於时才 等: "基于元素区间编码的GML数据索引方法", 《兰州理工大学学报》 *
王冬: "基于动态结点流行度的B+树索引研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522791A (zh) * 2020-04-30 2020-08-11 电子科技大学 一种分布式文件重复数据删除***及方法
WO2022000851A1 (zh) * 2020-06-28 2022-01-06 百度在线网络技术(北京)有限公司 数据处理方法、装置、设备和存储介质
US11847161B2 (en) 2020-06-28 2023-12-19 Baidu Online Network Technology (Beijing) Co., Ltd. Data processing method and apparatus, device, and storage medium

Also Published As

Publication number Publication date
CN106940715B (zh) 2019-11-15

Similar Documents

Publication Publication Date Title
CN102831122B (zh) 工作流表的数据保存方法、查询方法及装置
AU779250B2 (en) Method and apparatus for populating multiple data marts in a single aggregation process
CN106960020A (zh) 一种创建索引表的方法及设备
Taljaard et al. Board diversity and financial performance: A graphical time-series approach
US20050267889A1 (en) System and method of managing software product-line customizations
US20040078364A1 (en) Remote scoring and aggregating similarity search engine for use with relational databases
CN102243660B (zh) 一种数据访问方法及设备
US20100153409A1 (en) Computer-Implemented Systems And Methods For Providing Paginated Search Results From A Database
US20050066277A1 (en) Methods, systems and computer program products for use of color saturation to highlight items in a tree map visualization
US20010044791A1 (en) Automated adaptive classification system for bayesian knowledge networks
US9342572B2 (en) Workflow processing system and method with database system support
CN103825837A (zh) 一种节点负载的分布式cdn全局调度的方法
CN110135890A (zh) 基于知识关系挖掘的产品数据推送方法及相关设备
CA2497191A1 (en) Remote scoring and aggregating similarity search engine for use with relational databases
CN105608228B (zh) 一种高效的分布式的rdf数据存储方法
CN106919590A (zh) 一种多业务复用处理方法、装置、及***
CN106681808A (zh) 一种任务调度方法和装置
CN106649687A (zh) 大数据联机分析处理方法及装置
CN105138676B (zh) 基于高级语言并发聚合计算的分库分表merge查询方法
Hidiroglou et al. Stratification of skewed populations: a comparison of optimisation‐based versus approximate methods
US20120109933A1 (en) Method and apparatus for federated search
CN109618003A (zh) 一种服务器规划方法、服务器及存储介质
CN106940715A (zh) 一种基于索引表的查询的方法及设备
CN114357085A (zh) 基于区块链的财务数据存储方法、装置及存储介质
EP3696686A1 (en) Feature value generation device, feature value generation method, and feature value generation program

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
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai

Patentee after: Star link information technology (Shanghai) Co.,Ltd.

Address before: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai

Patentee before: TRANSWARP TECHNOLOGY (SHANGHAI) Co.,Ltd.

CP01 Change in the name or title of a patent holder
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method and device for querying based on index tables

Effective date of registration: 20230616

Granted publication date: 20191115

Pledgee: Bank of China Limited by Share Ltd. Shanghai Xuhui branch

Pledgor: Star link information technology (Shanghai) Co.,Ltd.

Registration number: Y2023310000252

PE01 Entry into force of the registration of the contract for pledge of patent right