Apache Druid 高性能的实时分析型数据库( 三 )


纵向:即列式存储 , 对每个列进行切分并压缩 , 且利用 Bitmap 构建索引从而优化数据访问 。
 
一个数据源刚开始由几个segments组成 , 一直扩展到几百几千甚至上百万个segments 。每个segment的生命周期始于被MiddleManager创建 , 这个时候segment是可变的没有被提交的 。一个segment的构建包含以下列出来的几个步骤 , 这种设计是为了满足一个可以支持压缩并可以被快速查询的文件格式 。
转换成列式存储格式
利用bitmap建立索引
利用多种算法进行压缩
segments会周期性地提交 。此时它会被写入deep storage , 然后状态改为不可变的 。随后它会被从MiddleManager移动到Historical进程中去 。与此同时 , 关于这个segment的一个条目也会被写入元数据存储 。这个条目是描述该segment的元数据 , 包含segment的schema、大小、以及它在deep storage上的存储位置 。所有这些类似的条目都会被Coordinator用来寻找对应的数据是否在集群上是可用状态的 。
 
六、Druid应用实践Druid当前最新版本为0.20 。下载链接:http://druid.apache.org/downloads.html

Apache Druid 高性能的实时分析型数据库

文章插图
 
Druid 有着很成熟的用户群体 , 包括国内外的知名企业 , 国外的话当属 Airbnb , 这家公司在内部大量使用 Druid 来做分析 , 包括他们开源的知名 BI 工具 Apache Superset , 也在其中专门为 Druid 写了一套 Query Engine 。国内公司像阿里、小米、58都在用 。

【Apache Druid 高性能的实时分析型数据库】


推荐阅读