Druid 的简介
Druid 是一个分布式的、支持实时多维 OLAP 分析的数据处理系统。它既支持高速的数据实时摄入处理,也支持实时且灵活的多维数据分析查询。因此 Druid 最常用的场景就是大数据背景下、灵活快速的多维 OLAP 分析。 另外,Druid 还有一个关键的特点:它支持根据时间戳对数据进行预聚合摄入和聚合分析,因此也有用户经常在有时序数据处理分析的场景中用到它。Druid 的由来
为了提高经营者的运营水平,在管理后台中会展示一些数据统计信息比如:订单量、访客量、PV,UV,转化率等;这些指标的计算依赖对历史数据的查询,当针对用户量很大的系统来说一般拥有很大的数据存储量,要实时的对这些数据进行查询及分析,一般的数据存储系统已经显得捉襟见肘了,这时候就需要使用到分布式数据库;Druid是一个为大型冷数据集上实时查询而设计的开源数据分析和存储系统,提供极具成本效益并且永远在线的实时数据摄取和任意数据处理。他的主要特性有一下几点:- 为分析而设计——Druid是为OLAP工作流的探索性分析而构建。它支持各种filter、aggregator和查询类型,并为添加新功能提供了一个框架。用户已经利用Druid的基础设施开发了高级K查询和直方图功能。
- 交互式查询——Druid的低延迟数据摄取架构允许事件在它们创建后毫秒内查询,因为Druid的查询延时通过只读取和扫描有必要的元素被优化。Aggregate和 filter没有坐等结果。
- 高可用性——Druid是用来支持需要一直在线的SaaS的实现。你的数据在系统更新时依然可用、可查询。规模的扩大和缩小不会造成数据丢失。
- 可伸缩——现有的Druid部署每天处理数十亿事件和TB级数据。Druid被设计成PB级别。
- 就系统而言,Druid功能位于PowerDrill和Dremel之间。它实现几乎所有Dremel提供的工具(Dremel处理任意嵌套数据结构,而Druid只允许一个基于数组的嵌套级别)并且从PowerDrill吸收一些有趣的数据格式和压缩方法。
Druid对于需要实时单一、海量数据流摄取产品非常适合。特别是如果你面向无停机操作时,如果你对查询查询的灵活性和原始数据访问要求,高于对速度和无停机操作,Druid可能不是正确的解决方案。在谈到查询速度时候,很有必要澄清“快速”的意思是:Druid是完全有可能在6TB的数据集上实现秒级查询。
Apache Druid 0.18 更新内容
- Join support
Druid 开始支持Join 查询。Join 是数据库重要特性之一,加入Join后,查询方式将更加简单。
- 内联查询
topN | (join datasource) / \ (table datasource) groupBy
- 查询通道和优先级
- 新增配置
druid.server.http.maxSubqueryRows 配置控制在Broker内存中实现的最大行数。
- support for Java 11
可以在Java 11 上运行。
更新信息:https://github.com/apache/druid/releases/tag/druid-0.18.0