高性能实时分析型数据系统
特点:
- 列式存储:在一个特定的数据查询中它只需要查询特定的列,从而提高了部分列查询场景的性能(如OLAP中通常的维度列+指标列。另外,每一列数据都针对特定数据类型做了优化存储 (不同的压缩和编码方式/不同类型的索引),从而支持快速的扫描和聚合
- 可扩展的分布式系统;自修复、自平衡、便于集群伸缩和运维
- 实时或批量摄取
- 摄取时自动聚合(预计算/roll-up):在数据摄取阶段可选地进行数据汇总,预先聚合数据,从而节省成本并提高性能
数据格式:(即datasource的结构: datasource是被查询的对,最常见的数据源类型是一个表数据源)
- 时间列
- 维度列
- 指标列
使用场景
- 数据插入频率较高,且更新频率较低(即读多写少,情况如:实时录入清洗好的记录)(对现有数据进行低延迟更新操作。Druid支持流式插入,但不支持流式更新)
- 数据需要从Kafka、HDFS、对象存储(如Amazon S3)中加载
- 数据具有时间属性
- 查询场景主要为聚合查询和分组查询(传统OLAP统计指标),同时还有一定的检索与扫描查询
- 查询场景中包含高基维度数据列(例如URL,用户ID等),并且需要对其进行快速计数和排序
- 查询延迟定位在100毫秒到几秒钟之间
- 查询场景对数据质量敏感度不高(写流程可能丢数据)
查询
druid的原生查询语言是JSON over HTTP(通过HTTP传输)
查询语法:https://www.cnblogs.com/xlli/p/10021168.html
https://blog.csdn.net/u012076316/article/details/79299098
https://druid.apache.org/docs/latest/querying/sql.html
Reference
LIU, J. (2020). Druid概述 · ApacheDruid中文技术文档. Retrieved 3 September 2020, from https://www.apache-druid.cn/