Apache Druid (incubating) is a high performance real-time analytics database

官网     |     GitHub     |     Docs


目录

  • 一、Home
    • 1.1 Overview
    • 1.2 Learn more (更多了解)
  • 二、Techology (技术)
    • 2.1 Integration
    • 2.2 Ingestion
    • 2.3 Storage
    • 2.4 Querying
    • 2.5 Architecture (架构)
    • 2.6 Operations
  • 三、Use Cases(用例)
    • 3.1 Streaming and operational data (流式和数据操作)
    • 3.2 User activity and behavior (用户活跃和行为)
    • 3.3 Network flows (网络流量)
    • 3.4 Digital marketing (数字营销)
    • 3.5 Application performance management (应用性能管理)
    • 3.6 IoT and device metrics (Iot和设备指标)
    • 3.7 OLAP and business intelligence (OLAP和商业智能)
  • 四、Docs (文档)



一、Home

Apache Druid (孵化中) 是一个高性能的实时分析数据库。

1.1 Overview

  • 分析事件流: Druid以高并发性为事件驱动数据提供快速分析查询。Druid可以即时摄取流数据并提供亚秒级查询以支持交互式UI。
  • 利用重新构想的架构: Druid是一种新型数据库,它结合了OLAP/分析数据库时间序列数据库搜索系统的思想,以支持流式体系结构中的新用例。
  • 构建事件驱动的数据堆栈: Druid本地集成了消息总线(Kafka,AWS Kinesis等)和数据湖(HDFS,AWS S3等)。 Druid尤其适用于流枢纽和流处理器的查询层。
  • 解锁新的工作流程: Druid旨在对实时数据和历史数据进行快速,即席分析。解释趋势,探索数据,并快速迭代查询以应答问题。
  • 任何地方部署: Druid可以部署在商用硬件上的任何*NIX环境中,无论是在云端还是内部部署。Druid是云原生的:扩缩就像添加和删除进程一样简单。

1.2 Learn more (更多了解)


二、Techology

Apache Druid(孵化中)是一个开源的分布式数据存储。Druid的核心设计思想结合了 OLAP/分析型数据库时间序列数据库搜索系统,为广泛的用例创建了统一的系统。Druid将3个系统中每个系统的关键特性合并到其摄入层(ingestion layer)、存储格式(storage format)、查询层(querying layer)和核心架构中。

diagram-2.png

Druid主要特点包括:

  • 面向列的存储:Druid单独存储和压缩每个列,只需要读取特定查询所需的列,这些查询支持快速扫描(scan)、排序(ranking)和groupBy。
  • 原生搜索索引:Druid为字符串值创建反向索引(inverted indexes),以便快速搜索和过滤。
  • 流批摄入: 使用于Apache Kafka,HDFS,AWS S3,流处理器等的开箱即用连接器。
  • 灵活的架构: Druid优雅地处理不断发展的模式和嵌套数据
  • 时间优化的区间:Druid基于时间智能地分区数据,基于时间的查询比传统数据库快得多。
  • 支持SQL: 除了基于JSON的原生语言外,Druid还不言而喻通过HTTP或JDBC支持了SQL
  • 水平可扩展性:Druid已经在生产中用于摄入数百万事件/秒,保留多年的数据,并提供亚秒级查询(sub-second querie)。
  • 操作简单: 只需添加或删除服务器即可向上或向下扩展,德鲁伊会自动重新平衡。 容错架构围绕服务器故障进行路由。

2.1 Integration

Druid是Apache Software Foundation中许多开源数据技术的补充,包括Apache KafkaApache HadoopApache Flink等。

Druid通常位于存储或处理层与最终用户之间,并充当查询层以服务分析工作负载。

diagram-3.png

2.2 Ingestion

Druid 支持流式和批量摄入。 Druid连接到原始数据源,通常是消息总线,如Apache Kafka(用于流数据加载),或分布式文件系统,如HDFS(用于批量数据加载)。

Druid在一个称为“索引”的过程中将存储在源中的原始数据转换为更加读取优化的格式(称为Druid“segment”)。

diagram-4.png

更多详细信息,请访问our docs page

2.3 Storage

与许多分析型数据存储一样,Druid将数据存储在列中。根据列的类型(string, number等),应用不同的压缩和编码方法。 Druid还根据列类型构建不同类型的索引。

与搜索系统类似,Druid为字符串列构建反向索引,以便快速搜索和过滤。 与时间序列数据库类似,Druid会按时间智能地对数据进行分区,以实现快速面向时间的查询。

与许多传统系统不同,Druid可以选择预先汇总数据。 此预聚合步骤称为汇总,可以节省大量存储空间。

diagram-5.png

更多详细信息,请访问our docs page

2.4 Querying

Druid支持通过JSON-over-HTTPSQL查询数据。 除了标准的SQL运算符之外,Druid还支持使用其近似算法套件的独特运算符,以提供快速统计,排名和分位数。

diagram-6.png

更多详细信息,请访问our docs page

2.5 Architecture (架构)

Druid可以被认为是一个分散的数据库。 Druid的每个核心流程(摄取,查询和协调)可以单独或联合部署在商品硬件上。

Druid明确命名每个主要流程,以允许运营商根据用例和工作负载微调每个流程。 例如,如果工作负载需要,operator可以为Druid的摄取过程投入更多资源,同时为Druid的查询过程提供更少的资源。

Druid过程可以独立地失败,而不会影响其他过程的操作。

diagram-7.png

更多详细信息,请访问our docs page

2.6 Operations

Druid旨在为需要每周7天,每天24小时运行的应用程序提供支持。 因此,Druid拥有多项功能,以确保正常运行时间和没有数据丢失。

  • 数据复制: Druid中的所有数据都被复制了可配置的次数,因此单个服务器故障对查询没有影响。

  • 独立流程: Druid明确指出其所有主要流程,并且每个流程都可以根据用例进行微调。 流程可以独立地失败而不会影响其他流程。 例如,如果摄取过程失败,则系统中不会加载新数据,但现有数据仍然可查询。

  • 自动数据备份: Druid自动将所有索引数据备份到文件系统,如HDFS。 您可能会丢失整个Druid群集,并从此备份数据中快速恢复。

  • 滚动更新: 您可以通过滚动更新方式更新Druid群集,无需停机,也不会对最终用户产生任何影响。 所有Druid版本都向后兼容以前的版本。

更多详细信息,请访问our docs page


三、Use Cases (用例)

3.1 Streaming and operational data (流式和数据操作)

Apache Druid(孵化中)通常适用于任何面向事件、点击流、时间序列或遥测数据,尤其是Apache Kafka的流数据集。 Druid提供Apache Kafka一次消费语义,通常用作面向事件的Kafka Topic 接收器。

Druid也适用于批量数据集。 组织机构已经部署了Druid来加速查询并为输入数据是一个或多个静态文件的应用程序提供动力。 如果您正在开发面向用户的应用程序,并希望您的用户能够自行处理他们自己的问题,那么Druid非常适合。

一些常见的德鲁伊高级用例包括:

  • 性能分析:创建具有完全向下钻取功能的交互式仪表板。 分析数字产品的性能,跟踪移动应用程序使用情况或监控站点可靠性。

  • 诊断问题:找出问题的根本原因。 解决netflow瓶颈问题,分析安全威胁或诊断软件崩溃。

  • 寻找共性:查找事件中的常见属性。 识别有缺陷的产品中的共享组件,或确定性能最佳的产品中的模式。

  • 提高效率:改善产品参与度。 优化数字营销广告系列中的广告支出或提高在线产品的用户参与度。

3.2 User activity and behavior (用户活跃和行为)

Druid经常用于点击流(clickstreams)、视图流(viewstreams)和活动流。 具体用例包括衡量用户参与度,跟踪产品发布的 A/B测试数据以及理解使用模式。

Druid可以准确计算用户指标,例如精确和近似的去重计数。 这意味着诸如每日活跃用户之类的措施可以在大约一秒钟内(平均准确率为98%)计算以查看一般趋势,或者精确计算以呈现给关键利益相关者。 此外,Druid可以用于漏斗分析,并测量有多少用户采取一个行动而没有采取其他行动。 这种分析非常有用,可以跟踪产品的用户注册情况。

Druid的搜索和过滤功能可以快速、轻松地沿着任何属性集钻取用户。 按年龄、性别、位置等衡量和比较用户活动。

3.3 Network flows (网络流量)

Druid通常用于收集和分析网络流量。 Druid用于沿任何属性集任意切片和切块流数据。

Druid通过能够摄取大量流记录,以及能够以交互速度在查询时对数十个属性进行分组或排序,从而帮助进行网络流分析。这些属性通常包括IP和端口等核心属性,以及通过增强功能添加的属性,如地理位置、服务、应用程序、设施和ASN。 Druid处理灵活的模式能力意味着您可以添加所需的任何属性。

3.4 Digital marketing (数字营销)

Druid通常用于存储和查询在线广告数据。 此数据通常来自广告服务器,对衡量和了解广告系列效果、点击率、转化率(损耗率)等至关重要。

Druid最初旨在为面向用户的数字广告数据分析应用程序提供支持。Druid已经看到这类数据的大量生产用途,并且世界上最大的用户在数千台服务器上存储了数PB的数据。

Druid可用于计算展示次数、点击次数、有效的千次展示费用和关键转化指标、过滤发布商、广告系列、用户信息以及支持完整切片和切块功能的许多其他维度。

3.5 Application performance management (应用性能管理)

Druid经常用于跟踪应用程序生成的操作数据。与用户活动用例类似,此数据可以是用户如何与应用程序交互,也可以是应用程序本身发出的度量标准。Druid可用于深入了解应用程序的不同组件的执行情况,识别瓶颈以及解决问题。

与许多传统解决方案不同,数据的数量、复杂性和吞吐量几乎没有限制。使用数千个属性快速分析应用程序事件,并计算有关负载、性能和使用情况的复杂指标。 例如,根据95%查询延迟对API端点进行排序,并根据任意一组特殊属性(如时间、用户人口统计或数据中心位置)对这些指标的变化进行切片和切块。

3.6 IoT and device metrics (Iot和设备指标)

Druid可用作服务器和设备指标的时间序列解决方案。实时获取机器生成的数据,并执行快速临时分析以测量性能,优化硬件资源或鉴定问题。

与许多传统的时间序列数据库不同,Druid是一个分析引擎。Druid结合了时间序列数据库,面向列的分析数据库和搜索系统的思想。 Druid在单个系统中支持基于时间的分区,面向列的存储和搜索索引。这意味着基于时间的查询,数字聚合以及搜索和过滤查询都非常快。

您可以在指标中包含数百万个唯一维度值,并对任何维度组合进行任意分组和过滤(Druid中的维度与TSDB中的标记类似)。您可以对标签进行分组和排名,并计算各种复杂的指标。此外,您可以比传统时间序列数据库更快地搜索和过滤标记值。

3.7 OLAP and business intelligence (OLAP和商业智能)

Druid通常用于BI用例。组织机构已经部署了Druid来加速查询和支持应用程序。 与Presto或Hive等SQL-on-Hadoop引擎不同,Druid专为高并发和亚秒查询而设计,通过UI为交互式数据探索提供动力。 总的来说,这使得Druid更适合真正的交互式视觉分析。

如果您需要面向用户的应用程序并希望用户能够运行自己的自助服务深入查询,那么Druid非常适合。 您可以使用Druid的API开发自己的应用程序,也可以使用与Druid一起使用的众多现成应用程序之一。


四、Docs (文档)

目录(更新中……)

1 Getting Started

2 Data Ingestion (数据摄取)

3 Querying (查询)

4 Design (设计)

5 Operations (操作)

6 Configuration (配置)

7 Development (开发)

8 Misc (杂项)

发布了40 篇原创文章 · 获赞 97 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/github_39577257/article/details/95320012