分布式数据库系统、在其中建立索引的方法和查询方法技术方案

技术编号:7240944 阅读:176 留言:0更新日期:2012-04-11 18:40
公开了一种分布式数据库系统和在分布式数据库系统中建立索引的方法。分布式数据库系统包括:多个分布式存储单元,分区存储有多个数据块文件;索引存储器,存储有所述多个数据块文件的索引;解析器,解析用户发起的查询语句,并选择相应的查询索引;索引查询模块,根据选择的查询索引,搜索所述多个数据块文件的索引以获得至少一个查询数据块集,所述查询数据块集包括索引键值、和记录了所述多个数据块文件中与所述索引键值对应的数据块文件的位置信息;以及并行处理引擎,将所述至少一个查询数据块集拆分并发起并行扫描任务。

【技术实现步骤摘要】

本申请涉及一种。
技术介绍
将大批量结构化数据存储在数据库中,特别是关系型数据库中是常用的数据管理方法。简单直观的实践是部署成熟的数据库管理系统,用标准的接口(如SQL)定义数据表及数据结构,将收集到的数据导入或插入到数据库的相应表中。根据需要,数据库系统为其建立索引供快速查询时使用。查询数据时,根据查询条件,可以选用合适的索引以优化查询性能。在大规模数据的管理方面,影响数据查询性能的关键因素是查询时访问的数据量和磁盘10。索引技术是数据库实践中提高查询性能的重要方法。索引的数据量一般比实际的数据量小很多,而且可以组织成便于查找的数据结构,如树或HASH表结构。通过优先查找索引过滤掉大部分无须访问的数据而不是直接扫描实际数据,可以有效地减少须访问的数据量和磁盘10。同时数据的组织和存储方式对建立有效的索引也非常重要,不同的索引技术对数据的组织和存储方式也有不同的要求。数据库系统中常用的索引类型如B-TREE 索引、HASH索引和BITMAP索引等,分别适用于不同的场合,它们的原理基本都是通过查询的键值来快速定位数据记录的存储位置。当前在许多行业中,产生和累积的数据量特别巨大,甚至达到几百TB或PB级。并且这些数据随着时间在不断膨胀,随着业务的发展产生数据的速度也在不断提高。例如电信业务⑶R(Call Detail Record)数据、物联网传感器数据、金融交易数据、互联网日志数据等。海量数据具有以下特点中的至少之一(1)数据多是时间序列数据,有时间标签,并按照或大致按照时间顺序产生和存储。(2)数据是结构化或半结构化数据,并且结构可能变更;(3)数据产生的速度非常快(如某系统每天产生2TB或50亿条记录),并且数据量越来越大;(4)很多属性域上的值的重复率很高。对海量数据的管理和应用也有以下特点(1)需保存较长时间(如半年),更久的数据被丢弃或备份到其它介质;(2)老旧的历史数据须可以被访问,但被访问的机会较少;出于成本考虑,除了存储资源外不应占用太多运行时资源(如CPU、内存、带宽等);(3)历史数据一般不需要修改,一旦数据存储好,就只需读之;(4)对数据的查询一般会指定一定的时间范围条件;(5)对同样的数据集,除了要支持快速的查询操作外,往往还需要支持批量数据分析和挖掘操作。并且对同一批数据的同样的分析和挖掘操作一般不会多次重复执行。用户要从海量数据集中查询获得想要的数据,继续使用现有的数据库及其索引方法已经非常困难。数据库往往无法存储如此巨大的数据量,而且不太适用于半结构化数据或数据结构的变更。密集完备的索引对海量数据来说不仅会使建立和维护索引的开销大、 速度慢,而且索引本身的数据量也非常庞大,从而也使数据的写入速度难以跟上数据的产生速度。
技术实现思路
一方面,本申请公开了一种分布式数据库系统,包括多个分布式存储单元,分区存储有多个数据块文件;索引存储器,存储有所述多个数据块文件的索引;解析器,解析用户发起的查询语句,并选择相应的查询索引;索引查询模块,根据选择的查询索引,搜索所述多个数据块文件的索引以获得至少一个查询数据块集,所述查询数据块集包括索引键值、和记录了所述多个数据块文件中与所述索引键值对应的数据块文件的位置信息;以及并行处理引擎,将所述至少一个查询数据块集拆分并发起并行扫描任务。在本申请的一个实施方式中,分布式数据库系统定义了数据组织和存储的基本结构,以流的方式收集或批量获得的数据记录被顺序写入其中。所述数据组织和存储的基本结构中包括数据文件和对应的数据块索引文件。每个数据文件中可以顺序存放许多压缩数据块,而每个数据块中可以顺序存放许多数据记录。数据块的大小可以根据平均记录长度适当定义,例如定义为1MB ;数据文件的大小也可以灵活定义,如定义为1GB。数据块采用常用的压缩算法进行压缩以节省空间。每个数据文件伴随着一个非常轻量级的数据块索引文件,用于快速定位指定的数据块。数据块索引一般在写数据文件的同时生成,也可以根据已经存在的数据文件重新构建。本申请并不限制将数据块和其索引分开存储在不同文件中, 也可以存储在同一文件中。本申请提供的索引建立在前面所述的数据块索引之上。这是一种近似的稀疏索引结构,即所述索引的键值并不是定位到每条记录的存储位置,而只是近似地指向出现过该键值的所有数据块上,在索引中只记录在所指数据块中第一次出现该键值的位置。因为每个数据块中包括许多条记录,而且同一个键值可能在某个数据块中多次重复,这样建立的索引就可以成数量级地缩小,并且大大加快建立索引的速度。同时也可以避免因为键值分布严重不均勻造成的索引不均勻问题。例如在一个数据块中有10000条记录,而只有100 个唯一键值,就只会产生100条索引。对于取值范围较大但有限离散的属性域,例如电信业务CDR中的电话号码或其他数据集中的用户ID等,建立索引对该属性域的查询非常有效。在一个数据块中,无论该属性域某一特定值出现过多少次,只记录其第一次出现的位置。索引的结构如<Key, BlockLocation〉。因为此类属性域的取值重复率很高,因此其索引也非常小和稀疏。此类属性域较为常见,也往往需要建立索引。也可以对多个属性域建立联合索引。虽然所述索引策略只是建立在数据块之上,大大减小了索引的大小,但需要在查询时增加在有限数据块内进行顺序扫描的开销。在海量数据的处理上,这种折中所获得的益处要比建立繁重的索引多很多。在分布式系统中采用并行处理技术的情况下,上述开销5将降到可以接受的较低水平。此外,本申请公开了一种在分布式数据库系统中建立索引的方法,包括收集要存储的数据;将所述数据块压缩成多个数据块并确定相应的数据块索引;将压缩的数据块按照文件的形式分区存储在所述分布式数据库系统中的多个分布式存储单元中;以及对所存储的数据块建立索引文件,其中,所述索引文件中的各个索引包括索引键值和所述数据块的位置信息。上述建立的索引数据本身因为容量不大,可以将其存储在关系型数据库中,在关系型数据库中对其关键字建立B-TREE索引,这样可以同时支持对该属性域的范围查询和点查询。也可以将索引数据存储在分布式的Key-Value存储系统提供更好的伸缩性和稳定性。作为对所述索引策略的可选补充,为了减少跨越较宽范围(如多天时间)的数据查询时需要访问的数据量,也为了减少指定范围(如多天时间)的批量统计分析和数据挖掘操作需要访问的数据量,可以对数据文件进行分区分目录存储,如按日期分区。分区后, 前述的基于数据块的索引可以建立在分区上。分区可以被看作一种基于目录的粗粒度索引。本本申请还公开了一种应用于分布式数据库系统中的查询方法,所述分布式数据库系统包括使用上述方法形成的索引,所述查询方法包括解析查询语句并确定出相应的查询索引;根据选择的查询索引搜索所述索引文件以获得至少一个查询数据块集;以及将所述至少一个查询数据块集拆分、并根据所述查询数据块集包括的位置信息发起并行扫描任务。在一个实施方式中,当查询时,如果查询条件中包括分区条件,首先判断查询条件中所涉及的分区列表(如日期分区),缩小查询的分区范围。如果查询条件中包括建立了索弓丨的属性域,先查询各相关分区的该属性域的索引,得到一个数据块集,进一步缩小了数据块的范围。如果查询条件中存在多个本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:齐骥钱岭郭磊涛周大罗治国孙少陵张松波张卫平
申请(专利权)人:中国移动通信集团公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术