基本概念
概述
Apache Druid™ 是目前比较流行的高性能的,分布式列存储的 OLAP 框架(准确来说是 MOLAP)。它是一款可以快速(实时)访问大量的、很少变化的数据的系统。并被设计为,在面对代码部署、机器故障和生产系统的其他可能性问题时,依旧能 100% 地正常提供服务
特性
亚秒级查询
Druid 提供了快速的聚合能力以及亚秒级的 OLAP 查询能力,多租户的设计,是面向用户分析应用的理想方式
实时数据注入
Druid 支持 流数据的注入,并提供了 数据的事件驱动,保证在 实时和离线环境下事件的 时效性 和 统一性
可扩展的 PB 级存储
Druid 集群可以很方便地 扩容到 PB 的数据量,每秒百万级别的数据注入
即便在超大数据规模的情况下,也能保证时其高效性
多环境部署
Druid 既可以运行在商业的硬件上,也可以运行在云上
它可以将很多种数据系统作为数据源,进行数据注入,包括 Hadoop、Spark、Storm、Kafka 和 Samza 等
多版本控制
多版本控制(MVCC,Multi-Version Concurrent Control),主要是为了解决多用户操作同一行记录时的并发问题。MVCC 设计思路是,在多用户访问数据库时,不使用粗暴的行锁,而是在事务操作更新数据的时候,生成一个新版本的数据。如此,可以保证读写分离,从而避免读写操作互相阻塞,提高了并发性能。另外约束,同一时刻只有最新版本的记录是有效的,即保证了数据的一致性
而 Druid 中是使用数据更新时间来区分版本,历史节点只加载最新版本的数据。同时,实时数据索引与离线数据批量覆盖同时进行的 lambda 架构设计,既满足了实时响应的需求,又确保了数据的准确性