1. 技术名称
列存储引擎
2. 作用或背景
列存数据库从数据存储方式上区别于行存数据库,所有数据按列存取。行存数据库在做一些列分析时,必须将所有列的信息全部读取出来;而列存数据库由于其按列存取的特性,在对特定列进行查询分析时,能够有效降低I/O,提高读取性能。此外列存数据库往往还能在数据压缩上带来更大压缩比,节省了磁盘存储空间。
在当今数据大爆炸的时代,列存数据库由于其存储空间少,读取磁盘少以及复杂数据查询效率高的缘故,成为构建数据仓库的理想架构。基于这些管理和应用上的优势,列存数据库应运而生并得到了快速发展。
3. 技术源头
在SIGM O D85,论文《A Decomposition Storage Model
[1]》提出了一种新的存储概念,简称DSM,这就是列数据库的雏形,但是这种技术在当时并没有得到足够的重视。近些年来在以M ichael Stonebr aker ,Daniel J.Abadi,Peter Boncz为首的一批专家的大力提倡下,列数据库相关技术及应用快速发展,在企业决策领域已经开辟了一条新道路(参考网址www.databasecolumn.com)。这种技术以其在OLAP场景中的巨大优势,很多数据库厂商加入到列存数据库的研发上来。Sybase公司在1994年推出了一款Sybase IQ Accelerator数据库,这便是Sybase IQ列存数据库的雏形,由此列存数据库便由理论在实践中诞生了。
4. 国外技术现状及代表产品
从1994年到2005年的十年时间,列式数据库几乎无人问津,而现在很多厂商加入了列式数据库的研发上来。而之后的十五年时间里,社会需求逐渐从交易业务转向分析业务,而列式数据库正是在分析系统领域(OLAP领域)里最好的技术。特别是现在数据量变得越来越庞大,列存数据库高效的查询效率更是得到凸显。在这几年中,除了列式数据库的鼻祖 Sybase以外,美国已经有多家公司投入到列式数据库研发中。这表明了列存数据库的发展是必然的,是一个趋势,大家正在逐渐认可列式数据库。
国外列式数据库比较有代表的产品包括Sybase IQ, Vertica,Clickhouse,以及Cstore等。
5. 国内技术现状及代表产品
相比于国外的列存数据库技术,国内起步较晚。但是现在大部分主流国产数据库厂商都开始意识到列存数据库在OLAP场景上的巨大优势,都逐渐投入到列存引擎的研发上来。南大通用的GBase 8a是国内第一个基于列存的新型分析性数据库,此后不断有国产数据库厂商发布含有列存引擎的数据库,像TiDB数据库的TiFlash列式存储,openGauss数据库的cstore列存引擎,达梦的DM8,人大金仓的KingbaseES以及PolarDB In-Memory Column Index都增加了列式存储的能力,以增加数据库在大量数据下复杂运算性能。不过现在大部分厂商都是在原来行存的基础上增加的列式存储,很少有厂商开发单独的列存引擎的数据库。
6. 详细描述
列存数据库和行存数据库都是关系型数据库,因此在逻辑上数据处理时并没有区别。两者的本质区别在于其物理存储是基于列存储还是基于行存储。和传统的行存储数据库相比,列存储数据库有以下优势:
- 列的数据特征比较相似,适合压缩,压缩比很高,在数据量较大(如数据仓库) 场景下会节省大量磁盘空间,同时也会提高单位作业下的IO 效率。
- 当表中列数比较多,但是访问的列数比较少时,列存储可以按需读取列数据,大大减少不必要的读IO,提高查询性能。
- 基于列批量数据向量运算,结合向量化执行引擎,CPU 的缓存命中率比较高,性能比较好,更适合 OLAP大数据统计分析的场景。
我们大家都知道,存储引擎是数据库最底层的核心技术,而列存引擎作为存储引擎的一种,在开发上应该是需要很大的投入和成本,这可能也是大部分国内厂商比较少涉及的原因之一,所以这也是国产替换国外列存数据库的难点之一。未来,列存数据库在国内应该还有比较长的一段路要走。
《基于大数据的列存储数据库技术研究》 作者:邱宏




