翻译自 Apache Druid
Apache Druid(正在孵化)是一个开源的分布式数据存储。德鲁伊的核心设计结合了OLAP /分析数据库,时间序列数据库和搜索系统的思想,为广泛的用例创建了一个统一的系统。Druid将这三个系统中的每个系统的关键特征合并到其接收层,存储格式,查询层和核心体系结构中。
德鲁伊的主要功能包括:
列式存储
Druid分别存储和压缩每一列,并且只需要读取特定查询所需的内容即可,这支持快速扫描,排名和groupBys。
本机搜索索引
Druid为字符串值创建倒排索引,以便快速搜索和过滤。
流式处理和批量摄取
适用于Apache Kafka,HDFS,AWS S3,流处理器等的现成连接器。
灵活的架构
德鲁伊优雅地处理不断发展的模式和嵌套数据。
时间优化的分区
Druid基于时间对数据进行智能分区,并且基于时间的查询比传统数据库要快得多。
SQL支持
除了基于本机JSON的本地语言外,Druid还通过HTTP或JDBC 讲SQL。
横向可扩展性
Druid已用于生产中,每秒接收数百万个事件,保留多年的数据并提供亚秒级的查询。
操作简便
只需添加或删除服务器即可扩大或缩小规模,而Druid会自动重新平衡。容错架构围绕服务器故障进行路由。
积分
Druid是Apache软件基金会中许多开源数据技术的补充,包括Apache Kafka,Apache Hadoop,Apache Flink等。
德鲁伊通常位于存储或处理层与最终用户之间,并充当查询层以服务于分析工作负载。
摄取
德鲁伊支持流式传输和批量摄取。Druid连接到原始数据源,通常是消息总线,例如Apache Kafka(用于流数据加载),或分布式文件系统,例如HDFS(用于批处理数据加载)。
在调用“索引”的过程中,Druid将存储在源中的原始数据转换为更具读取优化的格式(称为Druid“段”)。
有关更多信息,请访问我们的文档页面。
存储
像许多分析数据存储一样,Druid将数据存储在列中。根据列的类型(字符串,数字等),将应用不同的压缩和编码方法。Druid还根据列类型构建不同类型的索引。
与搜索系统类似,Druid为字符串列构建反向索引,以进行快速搜索和过滤。与时间序列数据库类似,Druid可按时间对数据进行智能分区,以实现快速的面向时间的查询。
与许多传统系统不同,Druid可以选择在提取数据时对其进行预聚合。此预聚合步骤称为汇总,可以节省大量存储空间。
有关更多信息,请访问我们的文档页面。
查询方式
Druid支持通过JSON-over-HTTP和SQL查询数据。除标准SQL运算符外,Druid还支持独特的运算符,这些运算符利用其近似算法套件来提供快速计数,排名和分位数。
有关更多信息,请访问我们的文档页面。
架构
德鲁伊具有基于微服务的架构,可以认为是一个反汇编的数据库。Druid中的每个核心服务(摄取,查询和协调)都可以单独或联合部署在商用硬件上。
Druid明确命名了每个主要服务,以使操作员可以根据用例和工作量对每个服务进行微调。例如,如果工作负载需要,操作员可以将更多资源分配给Druid的提取服务,而将更少的资源分配给Druid的查询服务。
德鲁伊服务可以独立发生故障,而不会影响其他服务的运行。
有关更多信息,请访问我们的文档页面。
运作方式
德鲁伊旨在为需要每周7天,每天24小时不间断运行的应用程序供电。因此,德鲁伊具有多种功能来确保正常运行时间且不会丢失数据。
资料复制
Druid中的所有数据都被复制了可配置的次数,因此单个服务器故障对查询没有影响。
独立服务
Druid明确命名了其所有主要服务,并且每个服务都可以根据用例进行微调。服务可以独立发生故障,而不会影响其他服务。例如,如果提取服务失败,则系统中不会加载任何新数据,但是现有数据仍可查询。
自动数据备份
Druid自动将所有索引数据备份到文件系统(例如HDFS)。您可能会丢失整个Druid群集,并从此备份数据中快速还原它。
滚动更新
您可以通过滚动更新来更新Druid群集,而不会造成停机时间,也不会影响最终用户。所有Druid版本都向后兼容先前的版本。