基于列存储的数据库存储系统研究.docVIP

  • 3
  • 0
  • 约5.17千字
  • 约 5页
  • 2018-12-20 发布于山东
  • 举报
基于列存储的数据库存储系统研究.doc

基于列存储的数据库存储系统研究 基于列存储的数据库,相对于传统的基于行的数据库,更适合在数据仓库存储方面发挥特长 1简介 在项目中,将研究一个客户(常规)文件系统设计,以提高基于列存储数据库的查询性能。该基于列存储数据库除了在磁盘上存储数据方式不同外,类似于典型的关系型数据库(基于行存储的数据库,如MySQL或Postgres)。不同之处如图1所示:在一个基于行存储的数据库中,每一行的属性按顺序存储,并在每一行被存储在一个连续的文件中。而在一个基于列存储的数据库中,每个属性列存储在一个单独的文件。 这个文件的配置有一个优势,主要是适合只读数据库(数据仓库)。首先,任何查询涉及到的数据库属性的子集回归,只需要较少的磁盘带宽,因为只加载所需的属性。随着装载属性增多,查询次数也就增加。其次,每个列存储一个单一类型使文件比传统的数据库可压缩(整数,八进制,字节,等等)性更高。压缩减少了磁盘上的数据读取量,可以进一步提高性能。第三,CPU只处理为所需属性的数据列,只需要在内存中缓存,节省内存资源,提高CPU的性能。 基于行存储的数据库 Source IP Dest IP Source Port Dest Port 基于列存储的数据库 图1:基于行存储数据库和基于列存储数据库文件系统布局 面向列存储的缺点之一是:一个表中包含多个files。推测由于基于列存储可以降低磁盘带宽要求,因此基于列存储的数据库可以提高查询性能。但是它将增加磁盘查找时间,因为查询期间在一个磁盘上要定位更多的files。因此希望文件系统可以定制,这样可以使基于列存储数据库的file寻求时间最小化,这样提高查询性能。 这个项目的目的是为了提高基于列存储数据库的操作性能,用于探讨如何捕获和储存大容量(数兆兆字节)网络流量(目前的数据包或网络流动数据NetFlow data)的高查询性能。因此,这个项目的数据集来自劳伦斯伯克利国家实验室(LBNL)收集了几个月的包头数据。该网络数据在基于列的环境中运行良好,因为数据一旦写入就很少修改,使其适合于只读型的数据存储,也就适合数据仓库类型的数据存储。 2背景 为了实现这个项目,使用一个基于列存储数据库——Fastbit,而劳伦斯伯克利国家实验室的包头数据作为测试数据集。 Fastbit支持一个SQL查询语言子集和可以进行快速数据检索的位图索引。它支持索引压缩,但没有数据压缩。劳伦斯伯克利国家实验室的数据集有2个月的包头数据相当于2/16个网络。该网络包含7000主机总数(3000人及其他的4000)。数据加载到数据库中,该数据库使用SiLK网络数据分析工具包,而数据可以根据自定义的数据加载工具加载。 数据被水平划分成10万个纪录块。这样做,主要是因为网络数据是高度突发性的。在一个典型的环境中,数据按时间被分割,但是,这就造成了在网络高流量时出现数据量大的捕获文件,而在低流量时出现小的捕获文件。因此保持设置分区大小,有助于在进行某些类型查询时候可以减少和预测磁盘的读取量。在进行数据库并行操作时候还可以发挥辅助作用,因为分区可以分发和复制一些节点,在查询时候每个节点可以负责处理大约相同数量的分区。这将有助于每台计算机在一个相同的时间段内返回查询结果。 每个数据库分区由一个列文件及其对应的索引文件组成,如图1所示。它还包含一个分区描述文件,描述分区中的文件。每个分区有相同数量的文件(19)。如上所述,每个分区包含高达10万条纪录,因此,一列的大小应是相同的,列并且横跨所有事先已知的分区。由于有些分区没有完全充满,因此,列文件的大小可能要小些,但是在一个连续的网络数据集中分区最终有望被存满。 分区文件描述了分区中的所有列(见表1 part.txt)。既然横跨所有分区的列的数量是不变的,那么文件的大小也应和横跨所有分区的类似。不过,分区的文件是基于文本的,所以文件的大小在每一种情况下不会完全一样。每个数据列都有一个对应的索引文件,索引文件保存了每一列的独特值和一个位图,描述了该行以及所具有的值。判断索引文件的大小是非常困难的,因为他们依赖于列的基数,以及位图的压缩率。在大多数情况下,索引要比其对应的列文件小。在某些情况下,他们要小100倍左右。不过,也有例外,索引文件的大小类似对应的列部分,但在少数情况下,其实更大。有一个较高基数的列往往有一个大索引文件。例如,字节计数列可以有较宽的值,因此一些索引文件的字节数要高于列。 3 方法 在这个项目中,打算修改现有的Linux文件系统模块,以便在磁盘上最佳地安排数据库文件,以提高阅读磁盘能力。知道一个分区的文件数目和大概空间将提供一些磁盘上的分区安排优势,以减少某些特定查询的磁盘寻找时间。 在Linux中,文件系统建成独立的内核,形成可以从操作系统中加载和卸载的

文档评论(0)

1亿VIP精品文档

相关文档