Druid vs StarRocks 选型对比

1、Druid与StarRocks介绍

近年来,越来越多的企业开始使用数据驱动决策,对数据探索分析的需求进一步提升。随着技术的演进涌,市场现出了各种各样的OLAP引擎,基于不同场景需求,在数据量、性能和灵活性方面进行了不同的取舍。不同的引擎呈现出不同的特点,相应地也有其自己的适用范围。本文对目前比较流行的两款开源引擎Druid和StarRocks进行对比分析。

1.1 Druid介绍

Druid 是广告分析公司MetaMarket研发,专为在海量数据集上做高性能 OLAP而设计的数据存储和分析系统。Druid 支持低延时的数据摄取,灵活的数据探索分析,高性能的数据聚合,简便的水平扩展。Druid支持更大的数据规模,具备一定的预聚合能力,通过倒排索引和位图索引进一步优化查询性能,在广告分析场景、监控报警等时序类应用均有广泛使用。其具有以下特点:

  • 列式存储,分布式的Shared-Nothing架构
  • 支持实时或批量摄入,摄入后可立即查询
  • 自我修复,自我平衡,易于操作
  • 数据存储在Deep Storage中,不会丢失
  • 预聚合,基于时间进行分区,使用Roaring/Concise bitmap索引快速过滤数据
  • 支持近似算法

1.2 StarRocks介绍

StarRocks是新一代极速全场景MPP数据库,用于提供多维分析、实时分析以及Ad hoc查询能力。StarRocks不仅支持高并发低延迟的点查,也支持高吞吐的Ad hoc查询。统一离线与近实时数据摄入,支持预聚合、大宽表、星型以及雪花型建模方式。StarRocks 致力于在全场景 OLAP 业务上为用户提供统一的解决方案,适用于对性能、实时性、并发能力和灵活性有较高要求的各类应用场景。具有以下特点:

  • 列式存储,全面向量化SQL引擎
  • 极简高可用架构,易于运维
  • 标准SQL支持,兼容MySQL协议
  • 支持基于CBO的智能查询优化
  • 实时数据摄入和更新
  • 现代物化视图,智能加速聚合查询
  • 支持联邦查询,异构数据源联合分析

2、Druid与StarRocks对比

Druid和StarRocks同样定位于大数据分析层引擎,存在很多共同点。比如都是列式存储,都支持大数据量的摄入,支持高并发,支持近似算法去重,架构都是自愈、自均衡的等等。但基于不同的设计取舍,二者在数据存储、预聚合、计算框架、易用性以及运维方面存在明显差异。

2.1 数据存储

数据摄入到Druid后,转化成Segments存储在Deep Storage中。生成后只能追加或者基于整段segment进行覆盖或删除,不支持segment部分数据的修改。Druid首先会按照时间列进行分区,也可以根据经常需要过滤的列构建二级分区改进数据本地性,从而减少数据访问时间。另外也可以指定排序维度,改进压缩和查询性能。

在StarRocks中,数据以分区分桶的方式做数据分布。用户可以根据数据以及业务查询的特点,灵活的指定分区分桶列,通过分区列的指定达到灵活的分区裁剪,减少数据访问量,通过对数据合理分桶,充分利用集群并行处理能力。同时,StarRocks为加速查询,在内部组织并存储数据时,会把表中数据按照指定的列进行排序,用户可以选择区分度高、经常查询的列建议放在前面以加速数据查找。Druid的二级分区机制与StarRocks的分桶机制类似,

总体而言,二者存储机制类似,StarRocks一级分区支持DATE、DATETIME、INT等多种类型,相对于Druid只能按照时间分区更加灵活。

在数据更新方面,Druid只能指定时间段删除或者更新,不能进行点删除或者点更新。这对于维度经常变更或者数据存在变化的场景存在一定的局限性。StarRocks除了支持明细数据和聚合数据分析外,还支持数据更新的场景,利用更新模型和主键模型,可以实现按照主键进行 UPDATE/DELETE 操作,满足数据更新的需求。

场景

特点

Druid

StarRocks

明细数据分析

保存和分析原始明细数据

你可能感兴趣的:(数据库,数据仓库,big,data)