0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一个高性能的实时分析型数据库Apache Durid

工程师邓生 来源:码哥字节 作者:MageByte技术团队 2022-09-01 12:09 次阅读

概览

Apache Druid 是一个高性能的实时分析型数据库。

一个现代化的云原生,流原生,分析型数据库

Druid 是为快速查询和快速摄入数据的工作流而设计的。Druid 强在有强大的 UI,运行时可操作查询,和高性能并发处理。Druid 可以被视为一个满足多样化用户场景的数据仓库的开源替代品。

轻松与现有的数据管道集成

Druid 可以从消息总线流式获取数据(如 Kafka,Amazon Kinesis),或从数据湖批量加载文件(如 HDFS,Amazon S3 和其他同类数据源)。

比传统方案快 100 倍的性能

Druid 对数据摄入和数据查询的基准性能测试大大超过了传统解决方案。

Druid 的架构融合了数据仓库,时间序列数据库和检索系统最好的特性。

解锁新的工作流

Druid 为 Clickstream,APM(应用性能管理系统),supply chain(供应链),网络遥测,数字营销和其他事件驱动形式的场景解锁了新的查询方式和工作流。Druid 专为实时和历史数据的快速临时查询而构建。

部署在 AWS/GCP/Azure,混合云,k8s 和租用服务器上

Druid 可以部署在任何*NIX 环境中。无论是内部环境还是云环境。部署 Druid 是非常 easy 的:通过添加或删减服务来扩容缩容。

使用场景

Apache Druid 适用于对实时数据提取,高性能查询和高可用要求较高的场景。因此,Druid 通常被作为一个具有丰富 GUI 的分析系统,或者作为一个需要快速聚合的高并发 API 的后台。Druid 更适合面向事件数据。

比较常见的使用场景:

点击流分析(web 和 mobile 分析)

风控分析

网路遥测分析(网络性能监控)

服务器指标存储

供应链分析(制造业指标)

应用性能指标

商业智能/实时在线分析系统 OLAP

下面将详细分析这些使用场景:

用户活动和行为

Druid 经常用在点击流,访问流,和活动流数据上。具体场景包括:衡量用户参与度,为产品发布追踪 A/B 测试数据,并了解用户使用方式。Druid 可以做到精确和近似计算用户指标,例如不重复计数指标。这意味着,如日活用户指标可以在一秒钟计算出近似值(平均精度 98%),以查看总体趋势,或精确计算以展示给利益相关者。Druid 可以用来做“漏斗分析”,去测量有多少用户做了某种操作,而没有做另一个操作。这对产品追踪用户注册十分有用。

网络流

Druid 常常用来收集和分析网络流数据。Druid 被用于管理以任意属性切分组合的流数据。Druid 能够提取大量网络流记录,并且能够在查询时快速对数十个属性组合和排序,这有助于网络流分析。这些属性包括一些核心属性,如 IP 和端口号,也包括一些额外添加的强化属性,如地理位置,服务,应用,设备和 ASN。Druid 能够处理非固定模式,这意味着你可以添加任何你想要的属性。

数字营销

Druid 常常用来存储和查询在线广告数据。这些数据通常来自广告服务商,它对衡量和理解广告活动效果,点击穿透率,转换率(消耗率)等指标至关重要。

Druid 最初就是被设计成一个面向广告数据的强大的面向用户的分析型应用程序。在存储广告数据方面,Druid 已经有大量生产实践,全世界有大量用户在上千台服务器上存储了 PB 级数据。

应用性能管理

Druid 常常用于追踪应用程序生成的可运营数据。和用户活动使用场景类似,这些数据可以是关于用户怎样和应用程序交互的,它可以是应用程序自身上报的指标数据。Druid 可用于下钻发现应用程序不同组件的性能如何,定位瓶颈,和发现问题。

不像许多传统解决方案,Druid 具有更小存储容量,更小复杂度,更大数据吞吐的特点。它可以快速分析数以千计属性的应用事件,并计算复杂的加载,性能,利用率指标。比如,基于百分之 95 查询延迟的 API 终端。我们可以以任何临时属性组织和切分数据,如以天为时间切分数据,如以用户画像统计,如按数据中心位置统计。

物联网和设备指标

Driud 可以作为时间序列数据库解决方案,来存储处理服务器和设备的指标数据。收集机器生成的实时数据,执行快速临时的分析,去估量性能,优化硬件资源,和定位问题。

和许多传统时间序列数据库不同,Druid 本质上是一个分析引擎。Druid 融合了时间序列数据库,列式分析数据库,和检索系统的理念。它在单个系统中支持了基于时间分区,列式存储,和搜索索引。这意味着基于时间的查询,数字聚合,和检索过滤查询都会特别快。

你可以在你的指标中包括百万唯一维度值,并随意按任何维度组合 group 和 filter(Druid 中的 dimension 维度类似于时间序列数据库中的 tag)。你可以基于 tag group 和 rank,并计算大量复杂的指标。而且你在 tag 上检索和过滤会比传统时间序列数据库更快。

OLAP 和商业智能

Druid 经常用于商业智能场景。公司部署 Druid 去加速查询和增强应用。和基于 Hadoop 的 SQL 引擎(如 Presto 或 Hive)不同,Druid 为高并发和亚秒级查询而设计,通过 UI 强化交互式数据查询。这使得 Druid 更适合做真实的可视化交互分析。

技术

Apache Druid 是一个开源的分布式数据存储引擎。Druid 的核心设计融合了 OLAP/analytic databases,timeseries database,和 search systems 的理念,以创造一个适用广泛用例的统一系统。Druid 将这三种系统的主要特性融合进 Druid 的 ingestion layer(数据摄入层),storage format(存储格式化层),querying layer(查询层),和 core architecture(核心架构)中。

7002297a-292c-11ed-ba43-dac502259ad0.png

Druid 的主要特性包括:

列式存储

Druid 单独存储并压缩每一列数据。并且查询时只查询特定需要查询的数据,支持快速 scan,ranking 和 groupBy。

原生检索索引

Druid 为 string 值创建反向索引以达到数据的快速搜索和过滤。

流式和批量数据摄入

开箱即用的 Apache kafka,HDFS,AWS S3 连接器 connectors,流式处理器

灵活的数据模式

Druid 优雅地适应不断变化的数据模式和嵌套数据类型。

基于时间的优化分区

Druid 基于时间对数据进行智能分区。因此,Druid 基于时间的查询将明显快于传统数据库。

支持 SQL 语句

除了原生的基于 JSON 的查询外,Druid 还支持基于 HTTP 和 JDBC 的 SQL。

水平扩展能力

百万/秒的数据摄入速率,海量数据存储,亚秒级查询。

易于运维

可以通过添加或移除 Server 来扩容和缩容。Druid 支持自动重平衡,失效转移。

数据摄入

Druid 同时支持流式和批量数据摄入。Druid 通常通过像 Kafka 这样的消息总线(加载流式数据)或通过像 HDFS 这样的分布式文件系统(加载批量数据)来连接原始数据源。

Druid 通过 Indexing 处理将原始数据以 segment 的方式存储在数据节点,segment 是一种查询优化的数据结构。

70141b94-292c-11ed-ba43-dac502259ad0.png

数据存储

像大多数分析型数据库一样,Druid 采用列式存储。根据不同列的数据类型(string,number 等),Druid 对其使用不同的压缩和编码方式。Druid 也会针对不同的列类型构建不同类型的索引。

类似于检索系统,Druid 为 string 列创建反向索引,以达到更快速的搜索和过滤。类似于时间序列数据库,Druid 基于时间对数据进行智能分区,以达到更快的基于时间的查询。

不像大多数传统系统,Druid 可以在数据摄入前对数据进行预聚合。这种预聚合操作被称之为 rollup,这样就可以显著的节省存储成本。

702422e6-292c-11ed-ba43-dac502259ad0.jpg

查询

Druid 支持 JSON-over-HTTP 和 SQL 两种查询方式。除了标准的 SQL 操作外,Druid 还支持大量的唯一性操作,利用 Druid 提供的算法套件可以快速的进行计数,排名和分位数计算。

704420dc-292c-11ed-ba43-dac502259ad0.png

架构

Druid 是微服务架构,可以理解为一个拆解成多个服务的数据库。Druid 的每一个核心服务(ingestion(摄入服务),querying(查询服务),和 coordination(协调服务))都可以单独部署或联合部署在商业硬件上。

Druid 清晰的命名每一个服务,以确保运维人员可以根据使用情况和负载情况很好地调整相应服务的参数。例如,当负载需要时,运维人员可以给数据摄入服务更多的资源而减少数据查询服务的资源。

Druid 可以独立失败而不影响其他服务的运行。

7061d06e-292c-11ed-ba43-dac502259ad0.jpg

运维

Drui 被设计成一个健壮的系统,它需要 7*24 小时运行。Druid 拥有以下特性,以确保长期运行,并保证数据不丢失。

数据副本

Druid 根据配置的副本数创建多个数据副本,所以单机失效不会影响 Druid 的查询。

独立服务

Druid 清晰的命名每一个主服务,每一个服务都可以根据使用情况做相应的调整。服务可以独立失败而不影响其他服务的正常运行。例如,如果数据摄入服务失效了,将没有新的数据被加载进系统,但是已经存在的数据依然可以被查询。

自动数据备份

Druid 自动备份所有已经 indexed 的数据到一个文件系统,它可以是分布式文件系统,如 HDFS。你可以丢失所有 Druid 集群的数据,并快速从备份数据中重新加载。

滚动更新

通过滚动更新,你可以在不停机的情况下更新 Druid 集群,这样对用户就是无感知的。所有 Druid 版本都是向后兼容。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3754

    浏览量

    64253
  • 管理系统
    +关注

    关注

    1

    文章

    2391

    浏览量

    35787
  • GUI
    GUI
    +关注

    关注

    3

    文章

    641

    浏览量

    39502
  • APM
    APM
    +关注

    关注

    1

    文章

    71

    浏览量

    12977

原文标题:Apache Durid从入门到安装详解

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数据库数据恢复—通过拼接数据库碎片恢复SQLserver数据库

    运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成
    的头像 发表于 10-31 13:21 117次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—通过拼接<b class='flag-5'>数据库</b>碎片恢复SQLserver<b class='flag-5'>数据库</b>

    数据库价格贵吗?云数据库租用价格表

    不同的云服务提供商会提供多样化的云数据库产品,以满足不同规模和类型的企业需求。这些产品通常包括基础、标准高性能等多个档次,每个档次的
    的头像 发表于 10-10 11:12 152次阅读
    云<b class='flag-5'>数据库</b>价格贵吗?云<b class='flag-5'>数据库</b>租用价格表

    软件系统数据库的分库分表设计

    的分布式集群,实现分库分表功能,解决数据库中海量数据存储和查询性能的问题。MyCat 还是个数据库的集群中间件,主要实现 RDBMS
    的头像 发表于 08-22 11:39 278次阅读
    软件系统<b class='flag-5'>数据库</b>的分库分表设计

    恒讯科技分析:跨境电商网站有哪些数据库系统是推荐使用的?

    对于跨境电商网站,数据库系统的选择非常关键,以下是些推荐使用的数据库系统: 1、MySQL:MySQL是流行的开源关系
    的头像 发表于 08-12 15:01 294次阅读

    HarmonyOS开发案例:【搭建关系数据库】(4)

    本节将介绍如何调用关系数据库接口在本地搭建数据库,并读写相应的用户数据
    的头像 发表于 05-11 10:27 739次阅读
    HarmonyOS开发案例:【搭建关系<b class='flag-5'>型</b><b class='flag-5'>数据库</b>】(4)

    深耕文档数据库12载,SequoiaDB再开源

    、易用性四方向的技术特性,宣布了2024年面向技术社区的开源计划。此次发布活动不仅是对SequoiaDB性能的全面介绍,更是对十余年来始终坚守以JSON文档数据库内核为技术底座的发
    的头像 发表于 01-16 13:06 264次阅读

    mysql怎么新建个数据库

    mysql怎么新建个数据库 如何新建个数据库在MySQL中 创建个数据库是MySQL中的基
    的头像 发表于 12-28 10:01 842次阅读

    轻量级数据库有哪些类型

    关系数据库是目前最常见的数据库类型,它将数据以表的形式存储,并使用SQL语言进行数据的管理和查询。虽然关系
    的头像 发表于 12-20 11:29 1170次阅读

    常见的存储Idea数据库的地方

    Idea的数据库被存储在许多不同的地方,取决于应用程序和使用的技术。下面将详细描述些常见的存储Idea数据库的地方。 关系数据库(RDB
    的头像 发表于 12-06 14:15 901次阅读

    mysql数据库基础命令

    MySQL是流行的关系数据库管理系统,经常用于存储、管理和操作数据。在本文中,我们将详细介绍MySQL的基础命令,并提供与每个命令相关
    的头像 发表于 12-06 10:56 537次阅读

    oracle数据库的使用方法

    Oracle数据库种关系数据库管理系统,它由Oracle公司开发和维护。它提供了安全、可靠和高性能
    的头像 发表于 12-06 10:10 1169次阅读

    oracle数据库alert日志作用

    Oracle数据库alert日志的作用、结构和重要内容。 、alert日志的作用 异常检测和排查:alert日志能够记录数据库引擎和实例发生的异常情况,如启动、关闭、崩溃和重启等。当数据库
    的头像 发表于 12-06 10:08 1182次阅读

    redis是关系数据库

    Redis不是关系数据库,它是种基于键值对的NoSQL数据库。在本文中,我将对Redis进行详细介绍,包括其特点、用途、常见命令和应用场景等。 Redis(REmote DIcti
    的头像 发表于 12-05 10:32 1480次阅读

    NoSQL 数据库如何选型

    什么是NoSQL数据库?为什么要使用NoSQL数据库?键值数据库内存键值数据库文档数据库列式数据库
    的头像 发表于 11-26 08:05 434次阅读
    NoSQL <b class='flag-5'>数据库</b>如何选型

    Redis 不仅仅是内存数据库

    除了用作缓存与主数据库之外,Redis还能够提供大量其他的底层技术用于解决业务问题,包括实时分析驱动决策、高性能、关键数据的故障转移和高速的数字支付等。文章速览:基于
    的头像 发表于 11-26 08:05 318次阅读
    Redis 不仅仅是内存<b class='flag-5'>数据库</b>