共计 1684 个字符,预计需要花费 5 分钟才能阅读完成。
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 反对在数据摄取阶段可选地进行数据汇总,这种汇总会局部事后聚合您的数据,并能够节俭大量老本并进步性能。