Apache Druid 0.18.0简介

2020-05-22 01:47:36

Apache Druid社区在2020年4月20日发布了Druid 0.18。此版本包含来自42个贡献者的200多个新功能、性能增强、错误修复和主要文档改进。

像往常一样,您可以访问Apache Druid下载页面下载该软件,并阅读详细介绍每个更改的完整发行说明。这个德鲁伊版本也可以作为Impline发行版的一部分提供,该发行版还包括Impline Pivot。

在成为一个全面的分析引擎的道路上,Druid在0.18中获得了一些新功能,包括改进的子查询、连接和分组集。

具有多个计算阶段的查询更容易使用子查询表示。Druid引擎在0.18中改进了对子查询的支持。您可以在Druid文档中找到关于子查询支持的更多详细信息。

请注意,默认情况下,单个查询中的所有子查询共享相同的限制,即100,000行。这是因为中间表位于代理内存中。代理上的内存是共享的有限资源。因此,您应该避免创建输出大型结果集的子查询。

在关系数据库中,规范化模式很常见。这意味着分析引擎必须能够跨表合并数据。SQL JOINS提供了此功能。

在0.18.0之前,Druid支持一些连接特性,比如SQL中的查找或半连接。Druid 0.18.0在其历史上首次支持真正的联接,包括支持内部联接、左联接和交叉联接。

使用联接和子查询,您现在可以表达商业智能用例中使用的许多常见查询。

在0.18中,联接支持仅限于查找、内联查询和子查询数据源。我们计划在未来增加对更多数据源的支持。让我们知道你想在社区里看到什么。

具有多个计算阶段的查询更容易使用子查询表示。Druid引擎在0.18中改进了对子查询的支持。您可以在Druid文档中找到关于子查询支持的更多详细信息。

在0.18中,Druid还引入了分组集。例如,GROUP BY GROUPING SETS((COUNTRY,CITY),(COUNTRY),())将创建一个包含3个数据集的结果集,先是在国家-城市级别细分的聚合(例如,SUM),然后是国家级别(城市为空),然后是总计。

例如,当您在报告中执行从地区、城市到州级别的多层汇总时,这尤其有用。这是非常高效的,因为数据只需要扫描一次。

在具有异构工作负载的多租户环境中,资源争用可能导致短时间运行的查询必须在队列中等待很长时间。在Druid0.18中,我们引入了查询通道和动态优先级排序,让您可以更好地控制如何分配集群中的资源。请在此处查看更多详细信息。

使用通道,代理检查查询并对其进行分类,并为其分配通道。您还可以选择手动指定车道。您可以指定通道可以使用的最大资源量,确保留出一些容量来处理其他工作负载,例如短时间运行的查询。

自动查询优先顺序根据查询的开销确定查询优先级。它考虑了扫描了多少数据、查询试图从多远的历史中读取数据,以及估计查询成本的其他一些因素。

这是朝着更智能的资源分配迈出的又一步,它为集群管理员提供了工具箱中的另一个工具。

Druid现在支持SQL的动态参数。这可以用来增强安全性。因为它将正确转义参数字符串以避免SQL注入。它还减少了将大量数据传递到查询规划器的需要。因为数据BLOB在规划期间不需要规划者解析,所以它将提高查询规划的性能,并降低查询规划的内存需求。

Druid支持两种位图类型,咆哮和简明。由于咆哮位图提供了更好的开箱即用体验(通常查询速度更快),因此默认的位图类型已切换为咆哮位图。

有关Druid 0.18.0中所有新功能的完整列表,请访问Apache Druid下载页面并查看发行说明!

返回博客