一篇文章了解 Apache Druid

news2024/11/24 10:19:44

前言

本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见大数据技术体系


概述

在这里插入图片描述

Apache Druid 是一个实时分析型数据库,旨在对大型数据集进行快速的查询分析(OLAP 查询)。

Druid 最常被当作数据库用以支持摄取、高性能查询和高稳定运行的应用场景,通过 Druid 也常用作为 GUI 分析应用程序提供动力的数据存储,或者用作需要快速聚合的高并发 API 的后端。

Druid 最适合应用于面向事件类型的数据。


应用领域

Druid 常见的应用领城包括:

  • 点击流分析(网络和移动分析)。
  • 网络遥测分析(网络性能监控)。
  • 服务器指标存储。
  • 供应链分析(制造指标)。
  • 应用程序性能指标。
  • 数字营销/广告分析。
  • 商业智能 /OLAP。

主要特征

Druid 的核心架构吸收和结合了数据仓库、时序数据库以及检索系统的优势,其主要特征如下:

  1. 列式存储:Druid 使用列式存销,这意味着在一个特定的数据套询中它只需要查询特定的列,这样极大地提高了部分列查询场景的性能。另外,每一列数据都针对特定数据类型做了优化存储,从而支持快速的扫描和聚合。
  2. 可扩展的分布式系统:Druid 通常以集群形式对外提供服务,集群规模可达数十甚至数百台,并且可以提供每秒数百万条记录的接收速率、数万亿条记录的保留存储以及亚秒级到几秒的查询延迟。
  3. 大规模并行处理:Druid 可以在集群中并行处理查询。
  4. 实时或批量摄取:Druid 可以实时(已经被摄取的数据立即可查)或批量摄取数据。
  5. 自修复、自平衡、易于操作:伸缩集群只需添加或删除服务,集群就会在后台自动重新平衡数据,而不会造成任何停机。如果任何一台 Druid 服务器发生故障,系统將自动绕过损坏。Druid 设计为 7 x 24h 全天候运行,不会出于任何原因而导致计划内停机,包括配置更改和软件更新。
  6. 不会丢失数据的云原生容错架构:一旦 Druid 摄取了数据,副本就安全地存储在深度存储介质 (通常是云存储、HDFS 或共享文件系统)中。即使某个 Druid 服务发生故障,也可以以从深度存储中恢复效据,对于仅影响的少数 Druid 服务的有限故障,副本可确保在系统恢复时仍然可以进行查询。
  7. 快速过滤的紫引:Druid 使用由 CONCISE 或 Roaring 压缩的位图索引来创建索引,以支持快速过滤和跨多列搜素。
  8. 基于时间的分区:Druid 首先按时间对数据进行分区,另外同时可以根据其他字段进行分区,这意味着基于时间的查询将仅访问与查询时间范围匹配的分区,这将大大提高基于时间的数据的性能。
  9. 近似算法:Druid 应用了近似 count-distinct、近似排序以及近似直方图和分位数计算的算法,这些算法占用有限的内存使用量,通常比精确计算要快得多;对于精度要求比速度更重要的场景,Druid还提供了精确 count-distint 和精确排序。
  10. 自动汇总聚合:Druid 支持在数据摄取阶段进行数据汇总,这种汇总会部分预先聚合数据,并可以节省大量成本并提高性能。

适合场景

  • 数据插人频率比较高,但较少更新数据。
  • 大多数查询场景为聚合查询和分组查询(GroupBy),同时还有一定的检索与扫描查询。
  • 将数据查询延迟目标定位 100ms 到几秒钟之间。
  • 数据具有时间属性(Druid 针对时间做了优化和设计)。
  • 在多表场景下,每次查询仅命中一个大的分布式表,查询又可能命中多个较小的 lookup 表。
  • 场景中包含高基维度数据列(例如 URL,用户 ID 等),并且需要对其进行快速计数和排序。
  • 需要从 Kafka、HDFS、对象存储(如 Amazon S3) 中加载数据。

不适合场景

  • 根据主键对现有数据进行低延迟更新操作,Druid 支持流式插人,但不支持流式更新(更新操作通过后台批处理作业完成)。
  • 延迟不重要的离线数据系统。
  • 场景最中包括大连接(将一个大事实表连接到另一个大事实表),并且可以接受花费很长时间来完成这些查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图文结合带你搞懂MySQL日志之Error Log(错误日志)

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:KAiTO文章来源:社区原创 往期回顾: 图文结合带你搞懂MySQL日志之Redo Log(重做日志)…

[附源码]计算机毕业设计Python的云网盘设计(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

极智AI | 谈谈昇腾CANN量化

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享 大家好,我是极智视界,本文介绍一下 谈谈昇腾CANN量化。 昇腾CANN的量化体现在AMCT工具,也即模型压缩工具,后面再来说AMCT,这篇先聊一下昇腾CANN的量…

SpringBoot学习小结之滑块验证码生成库tianai-captcha

文章目录前言一、后端springboot1.1 yml 配置1.2 跨域配置1.3 资源配置1.4 Controller二、前端jquery2.1 通用代码2.2 滑动验证码2.3 旋转验证码2.4 滑动还原验证码2.5 文字点选验证码三、源码探秘和总结3.1 前端代码3.2 后端代码3.3 总结参考前言 最近发现一个有趣的 Java 验…

Java根据ip地址获取归属地

最近,各大平台都新增了评论区显示发言者ip归属地的功能,例如哔哩哔哩,微博,知乎等等。 下面,我就来讲讲,Java 中是如何获取 IP 属地的,主要分为以下几步 通过 HttpServletRequest 对象&#xf…

JVM监控及诊断工具-GUI

1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1)无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间 等(这对定位应用性能瓶颈至关重要)。 2…

【MybatisPlus】最全面的MybatisPlus通关教程

前言 本文为最全面的MybatisPlus通关教程相关介绍,下边将对MyBatisPlus概述,MyBatisPlus快速入门,CRUD扩展(包括:插入操作、主键生成策略、更新操作,自动填充,乐观锁,查询操作&#…

我学python的那段日子(四)选择结构和循环结构

1.选择结构 总所周知,Java里面也有选择结构,分别是if单分支选择结构、if-else结构多重if结构和switch结构,同样的,Python里也有选择结构,分别是是if单分支选择结构、if-else结构多重if结构。 1.1 if选择结果 ​ if选…

Servlet生命周期和线程安全

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

CANoe-是如何对ECU和网络进行测试的

CANoe工具是汽车仿真测试开发中使用最广泛的工具 Test Module/Test Unit 除了仿真模块和分析模块,CANoe还引入了另一个组件进行测试:Test Module(测试模块)和Test Unit(测试单元) test module调用的是capl脚本、.net脚本或xml文件,而test unit用的是vTESTstudio插件 实…

12.18

一.加强练习promise 1.fs模块 const fs require(fs) const p new Promise((resolve,reject) > {fs.readFile(./resource/context.txt, (err,data) > {if (err) reject(err)resolve(data)}) }) p.then((value) > {console.log(value.toString()) }, (reason) > …

前端炫酷特效合集

我们经常在抖音上看到一些前端很酷的特效,诸如:快叫你学编程的朋友给你写一个圣诞树,看着是不是很酷炫呢?其实只要有源码,你也可以拥有哦! 跟大家分享多款前端特效源码,需要的朋友可以去在这里…

Java : 多态,包装类的面试题:

Java : 多态,包装类的面试题: 每博一文案 有人说:小孩子才会仰天大哭,成年人的世界早就调成了静音模式,连崩溃也很懂事。 一路走来,我们一边受伤,也一边变得更坚强,慢慢…

数据库原理及MySQL应用 | 日志管理

数据库系统管理维护阶段需要通过日志对数据库的性能进行监督、分析和改进。 日志是数据库系统的重要组成部分,记录了数据库的运行状态、数据的变更历史、错误信息及用户操作等信息。在日常管理中,数据库管理员可通过日志监控数据库的运行状态、优化数据库…

国内外文献镜像网站

一、常用的国内外文献镜像网站 维普网:http://lib.cqvip.com/ idata:https://www.cn-ki.net/ 独秀:https://www.duxiu.com/ 中国知网:https://www.cnki.net/ 龙源期刊网:http://www.qikan.com.cn/ 万方数据&#xff1…

计算机毕业设计HTML+CSS+JavaScript仿大型购物商城(1页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

毕业设计 单片机GPS定位位置记录系统 - 物联网 嵌入式 stm32

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计概述硬件模块的连接**AB32VG1主控MCU**5 软件说明6 部分核心代码7 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩…

基于asp.net人力资源管理系统-计算机毕业设计

基于asp.net的人力资源管理的内容和人事管理日常管理所遇到的问题,整个系统可以分为下面几个子模块,分别为员工档案信息管理、工资信息管理、考勤信息管理、消息信息管理、账号信息管理等几个大的功能模块,开发环境:Visual studio,sqlserver数据库.资料有…

非零基础自学Golang 第9章 结构体 9.4 初始化结构体

非零基础自学Golang 文章目录非零基础自学Golang第9章 结构体9.4 初始化结构体9.4.1 键值对格式初始化9.4.2 列表格式初始化第9章 结构体 9.4 初始化结构体 上一小节我们讲解了在结构体实例化后,再使用“.”的方式对成员变量进行赋值。另外,我们还可以…

Junit5 架构、新特性及基本使用(常用注解与套件执行)

什么是 Junit5,在 Junit5 的官方介绍文档中这写到: Junit5 由JUnit Platform JUnit Jupiter JUnit Vintage3部分构成,借用 IBM Developer 的一张图来说明 JUnit 5 的架构: JUnit Platform: JUnit Jupiter: JUnit Vintage: 嵌套单…