Druid使用
官方文档:http://druid.io/docs/0.9.2/querying/querying.html
一、Druid使用场景:
整体数据条数大于等于500W
实时入库不保证不丢数据,需要离线来辅助
Druid仅适用交互式OLAP分析场景,查询TPS无法满足大批量离线计算
- 不支持Join操作
- 明细查询不建议使用,并且不支持对明细数据的查询进行排序
- Double类型的指标字段存在精度问题,不适合特别精确统计的领域。https://www.cnblogs.com/bad-guy/p/7698845.html
- 定位交互式查询,不适合离线计算等批量查询的应用场景
- 优先使用单维度进行聚合查询,多维度组合在基数较大的时候,会存在严重的性能问题
- 单维度聚合优先推荐使用TopN操作,而不是GroupBy操作,Top1000是准确的,超过1000可能会不准确
二、druid-client:
1、 首先来认识下druid支持的哪些查询类型
Druid支持Timeseries、TopN、GroupBy、Time Boundary、Segment Metadata、DataSource Metadata、Search、Select八种查询类型。各类型适用场景如下:
- Timeseries: 用于查询一段时间内某些指标的聚合值,但是不支持维度聚合
- TopN: 按单维度聚合,查询一段时间内某些指标的聚合值
- GroupBy: 按多个维度聚合,查询一段时间内某些指标的聚合值;支持having和orderBy语义,其中orderBy语义请参考
- Select: 查询一段时间内的”明细“数据(由于Druid有Rollup语义,这里明细可能和入库原始数据不相符),支持按时间分页。
- Search: 在一段时间内,对维度值进行查询,支持模糊查询,不推荐使用
- Time Boundary: 查询datasource数据的时间边界
- Segment Metadata: 查询Segment的meta信息
- DataSource Metadata: 查询datasource的meta信息