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

    文章

    3993

    浏览量

    67715
  • 管理系统
    +关注

    关注

    1

    文章

    2887

    浏览量

    38315
  • GUI
    GUI
    +关注

    关注

    3

    文章

    693

    浏览量

    42833
  • APM
    APM
    +关注

    关注

    1

    文章

    73

    浏览量

    13751

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华纳云为游戏数据库选择高性能NVMe SSD存储

    的关键因素,尤其是在香港服务器租用环境中。 为何游戏数据库需要高性能存储 游戏数据库因其动态化和实时性需求,与传统数据库存在显著差异。这些需
    的头像 发表于 09-30 16:03 823次阅读

    数据库性能瓶颈分析与SQL优化实战案例

    作为名在线摸爬滚打8年的运维工程师,我见过太多因为数据库性能问题而半夜被叫醒的场景。今天分享几个真实的优化案例,希望能帮你避开这些坑。
    的头像 发表于 08-27 14:31 301次阅读

    数据库性能优化指南

    作为名在大厂摸爬滚打多年的运维老兵,我见过太多因为数据库性能问题导致的生产事故。今天分享套完整的数据库优化方法论,从SQL层面到硬件配置
    的头像 发表于 08-18 11:21 510次阅读

    数据库数据恢复—服务器异常断电导致Oracle数据库故障的数据恢复案例

    Oracle数据库故障: 某公司台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持
    的头像 发表于 07-24 11:12 434次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—服务器异常断电导致Oracle<b class='flag-5'>数据库</b>故障的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—MongoDB数据库文件丢失的数据恢复案例

    MongoDB数据库数据恢复环境: 台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库
    的头像 发表于 07-01 11:13 454次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—MongoDB<b class='flag-5'>数据库</b>文件丢失的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SQL Server数据库被加密如何恢复数据

    SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 497次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    SQLSERVER数据库是什么

    SQL Server 是由微软公司开发的款 关系数据库管理系统(RDBMS) ,用于存储、管理和检索结构化数据。它是企业级应用中广泛使用的数据库
    的头像 发表于 05-26 09:19 977次阅读

    MySQL数据库是什么

    MySQL数据库种 开源的关系数据库管理系统(RDBMS) ,由瑞典MySQL AB公司开发,后被Oracle公司收购。它通过结构化查询语言(SQL)进行
    的头像 发表于 05-23 09:18 911次阅读

    适用于SQLite的dbExpress数据库驱动程序

    dbExpress Driver for SQLite 概述 dbExpress Driver for SQLite 是独立于数据库的层,它定义了通用的 接口提供从 Delphi 和 C++
    的头像 发表于 02-09 09:45 762次阅读

    Devart: dbForge Compare Bundle for SQL Server—比较SQL数据库最简单、最准确的方法

      dbForge Compare Bundle For SQL Server:包含两工具,可帮助您节省用于手动数据库比较的 70% 的时间 dbForge数据比较 帮助检测和分析
    的头像 发表于 01-17 11:35 863次阅读

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系分布式数据库、非关系分布式数据库
    的头像 发表于 01-15 09:43 863次阅读

    MySQL数据库的安装

    MySQL是开源免费的关系数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。 MySQL 最流行的关系
    的头像 发表于 01-14 11:25 857次阅读
    MySQL<b class='flag-5'>数据库</b>的安装

    关系数据库和非关系区别

    关系数据库和非关系数据库在多个方面存在显著差异,主机推荐小编为您整理发布关系数据库和非关系
    的头像 发表于 01-10 09:58 1430次阅读

    数据库是哪种数据库类型?

    数据库种部署在虚拟计算环境中的数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云数据库主要分为两大类:关系
    的头像 发表于 01-07 10:22 790次阅读

    数据库数据恢复—Mysql数据库表记录丢失的数据恢复流程

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分
    的头像 发表于 12-16 11:05 996次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—Mysql<b class='flag-5'>数据库</b>表记录丢失的<b class='flag-5'>数据</b>恢复流程