Druid 概述

解决两个核心问题:
-. RDBMS的查询太慢。
-. 支持灵活的查询分析能力。

Druid的三个设计原则

  1. 快速查询:部分数据的聚合(Partial Aggregate) + 内存化(In-Memory) + 索引(Index)
  2. 水平扩展能力:分布式数据(Distributed Data) + 并行化查询(Parallelizable Query)
  3. 实时分析: 不可变的过去,只追加的未来(Immutable Past, Append-Only Future)

快速查询

大部分数据分析场景,我们只会关心一定粒度聚合的数据,而非每一行的原始数据的细节情况,给Druid争取了很大的性能优化空间。精细的内存使用设置,如BItMap和各种压缩技术。为了支持Drill-Down某些维度,Druid维护了一些倒排索引。这种凡是可以加快AND和OR等计算操作。

水平扩展能力

数据可以分布在多个节点的内存中,因此当数据增长的时候,可以通过简单增加机器的方式进行扩容。为了保持平衡,Druid按照时间范围把聚合数据进行分区处理。历史Segment数据可以保存在深度存储系统(HDFS等)中。如果某些节点出现故障,可借助Zookeeper协调其他节点进行重新构造。Druid查询模块能够感知和处理集群的状态变化。

实时分析

Druid提供了包含基于时间维度数据的存储服务,并且任何一行数据都是历史真实发生的时间,因此在设计之初就约定时间一旦进入系统,就不能在改变。

Druid的技术特点

  1. 数据吞吐量大
  2. 支持流式数据摄入和实时
  3. 查询灵活且快
  4. 社区支持力度大

Druid的基本概念

数据格式

Druid在数据摄入之前,首先需要定义一个数据源(DataSource), 这个DataSource有些类似数据库中表的概念。每个数据集包括三个部分:时间列(TimeStamp)、维度列(Dimension)和指标列(Metric)。

  1. 时间列
    每个数据集合必须有时间列,Druid会讲时间很近的一些数据行聚合在一起。因此所有的查询都需要指定查询时间范围。
  2. 维度列
    用来标识一些事件(Event),这些标识主要用于过滤或者切片数据,维度列的字段为字符串类型。随着业务分析的精细化,增加维度列也是一个常见的需求。
  3. 指标列
    用于聚合和计算的列。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Druid.io(以下简称Druid)是面向海量数据的、用于实时查询与分析的OLAP存储系统。Druid的四大关键...
    大诗兄_zl阅读 6,497评论 0 9
  • Druid 介绍 说起 Druid,大家首先想到的是阿里的 Druid 数据库连接池,而本文介绍的 Druid 是...
    尼小摩阅读 98,699评论 4 38
  • 0. Overview 后面将写几篇文章介绍一下 OLAP 的大数据系统架构。这里的 Druid 不是阿里巴巴的连...
    legendtkl阅读 4,198评论 1 3
  • 情绪管理:一天都很融洽,今天姥姥来了,宝宝特别开心,除了睡觉时间,都是又是蹦又是跳的,没有一刻是老实呆着的;晚上和...
    月月妈妈阅读 187评论 0 0
  • 《粱漱溟先生讲孔孟》上 这本书之前听过一遍但是没有写笔记,所以有一点印象但并不深刻。 这次因为看到夫子庙很有感触...
    嗨233阅读 1,854评论 0 0