3

什么是 Druid

 2 years ago
source link: https://segmentfault.com/a/1190000040396221
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

什么是 Druid

发布于 今天 18:25

Apache Druid 是一个实时分析型数据库,旨在对大型数据集进行快速查询和分析(“OLAP” 查询)。

Druid 最常被当做数据库,用以支持实时摄取、高查询性能和高稳定运行的应用场景。 例如,Druid 通常被用来作为图形分析工具的数据源来提供数据,或当有需要高聚和高并发的后端 API。 同时 Druid 也非常适合针对面向事件类型的数据。

通常可以使用 Druid 作为数据源的系统包括有:

点击流量分析(Web 或者移动分析)
网络监测分析(网络性能监控)
服务器存储指标
供应链分析(生产数据指标)
应用性能指标
数字广告分析
商业整合 / OLAP

Druid 的核心架构集合了数据仓库(data warehouses),时序数据库(timeseries databases),日志分析系统(logsearch systems)的概念。

如果你对上面的各种数据类型,数据库不是非常了解的话,那么我们建议你进行一些搜索来了解相关的一些定义和提供的功能。

Druid 的一些关键特性包括有:

列示存储格式(Columnar storage format) Druid 使用列式存储,这意味着在一个特定的数据查询中它只需要查询特定的列。 这样的设计极大的提高了部分列查询场景性能。另外,每一列数据都针对特定数据类型做了优化存储,从而能够支持快速扫描和聚合。
可扩展的分布式系统(Scalable distributed system) Druid通常部署在数十到数百台服务器的集群中, 并且可以提供每秒数百万级的数据导入,并且保存有万亿级的数据,同时提供 100ms 到 几秒钟之间的查询延迟。
高性能并发处理(Massively parallel processing) Druid 可以在整个集群中并行处理查询。
实时或者批量数据处理(Realtime or batch ingestion) Druid 可以实时(已经被导入和摄取的数据可立即用于查询)导入摄取数据库或批量导入摄取数据。
自我修复、自我平衡、易于操作(Self-healing, self-balancing, easy to operate) 为集群运维操作人员,要伸缩集群只需添加或删除服务,集群就会在后台自动重新平衡自身,而不会造成任何停机。 如果任何一台 Druid 服务器发生故障,系统将自动绕过损坏的节点而保持无间断运行。 Druid 被设计为 7*24 运行,无需设计任何原因的计划内停机(例如需要更改配置或者进行软件更新)。
原生结合云的容错架构,不丢失数据(Cloud-native, fault-tolerant architecture that won’t lose data) 一旦 Druid 获得了数据,那么获得的数据将会安全的保存在 深度存储 (通常是云存储,HDFS 或共享文件系统)中。 即使单个个 Druid 服务发生故障,你的数据也可以从深度存储中进行恢复。对于仅影响少数 Druid 服务的有限故障,保存的副本可确保在系统恢复期间仍然可以进行查询。
针对快速过滤的索引(Indexes for quick filtering) Druid 使用 Roaring 或 CONCISE 来压缩 bitmap indexes 后来创建索引,以支持快速过滤和跨多列搜索。
基于时间的分区(Time-based partitioning) Druid 首先按时间对数据进行分区,同时也可以根据其他字段进行分区。 这意味着基于时间的查询将仅访问与查询时间范围匹配的分区,这将大大提高基于时间的数据处理性能。
近似算法(Approximate algorithms) Druid应用了近似 count-distinct,近似排序以及近似直方图和分位数计算的算法。 这些算法占用有限的内存使用量,通常比精确计算要快得多。对于精度要求比速度更重要的场景,Druid 还提供了exact count-distinct 和 exact ranking。
在数据摄取的时候自动进行汇总(Automatic summarization at ingest time) Druid 支持在数据摄取阶段可选地进行数据汇总,这种汇总会部分预先聚合您的数据,并可以节省大量成本并提高性能。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK