作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9588079.html 转载请注明出处

最近在学习和使用Druid.觉得一些章节有必要按照自己的理解翻译一下并分享出来,翻译不到位的地方欢迎指正.

Druid是什么?

Druid是一个为大规模数据集上进行高性能的交互分析而设计的("OLAP"式)的数据存储引擎.Druid经常用来作为数据存储来驱动基于GUI的分析方面的应用,也可以为需要快速聚合的应用提供高并发的后端API.Druid通常包含以下一些应用:

  • 点击流分析
  • 网络流量分析
  • 服务器指标存储
  • 应用性能指标
  • 数字市场分析
  • 商业智能/OLAP

Druid关键性的功能如下:

  1. 列式存储.Druid使用面向列的存储,这意味着它对一些特殊的查询仅仅需要加载相应的列就可以了.这能带来巨大的性能提升因为它仅仅需要查询很少的列.此外,它的每一列是按照它自己的独有的数据类型而进行过的优化存储,这样可以支持快速的扫描和聚合.
  2. 可扩展的分布式系统.Druid一般部署在成百上千的服务器上,它能够实现每秒百万级别的数据采集速率,以及万亿级别的数据记录存储以及亚秒级别的数据查询延迟
  3. 大规模并行式处理.Druid能够在整个集群上对查询进行并行处理.
  4. 实时的或者批处理的数据摄取.Druid能够实时的摄取数据(摄取的数据能够立刻被用来查询)或者以批处理的方式进行摄取。
  5. 自愈性,自平衡,容易管理.作为一个集群的管理者,很方便可以来扩大或者缩小集群的规模.对于后台来讲,简单的从集群上添加或者删除服务器不用停机集群自己就能够自动实现重新平衡.任意一个druid节点坏掉的话,集群自己就可以绕过坏点直到这些有问题的服务器被替换掉.Druid被设计成一个永不停机7*24小时无间断运行的集群,即使配置改变以及软件升级也不应该做为它停机的理由.
  6. 永远不会丢失数据的容错的云原生架构.一旦Druid已经摄取了数据,那么一个备份就会被拷贝到deep storage(这个存储方式可以是云存储,HDFS或者其他共享文件系统).如果单个Druid服务器失败那么能够从deep storage进行恢复.对于影响一部分druid服务器的有限故障,replication能够确保查询在服务器恢复的时候仍然是可能的
  7. 快速过滤的索引.Druid使用CONCISE或者Roaring压缩的位图索引来创建索引用于控制在多列上进行快速过滤和查询
  8. 近似算法.Druid包含一些近似count-distinct,近似排名,近似直方图和中位数这些近似算法.这些算法使用较少的内存但是通过能够提供比精确计算更快的速度.当然,对于那些要求精确比速度更重要的场景,druid仍然能够提供精确的计算和排名.
  9. 数据摄取预聚合.Druid支持在摄取数据的时候进行预聚合.这种对数据摄取的预聚合能够节省消耗以及提升性能.

何时使用Druid

如果你的case满足下面一些特征那么Druid应该是一个好的选择:

  • 插入数据的频次非常高,但是修改非常少
  • 你的大部分查询时聚合和报表查询(比如"group by"查询).当然你可以还有一些查找和扫描的查询
  • 你的意愿是希望查询延迟在100ms到几秒之间
  • 你的数据有时间的属性(Druid包含一些特殊的设计和优化对于时间序列)
  • 你可能有不止一个表,而且每个查询仅命中一些大的分布式的表.查询可能也会命中不止一个小的lookup表.
  • 你需要在一些高基数的列上面(比如URLS,user IDs)做一些快速的计算和排序
  • 你需要从Kafka,HDFS,flat files或者对象存储比如Amszon S3上加载数据

下面一些情况你可能不太适合用Druid:

  • 你需要对已经存在的记录利用主键进行低延迟的更新操作.Druid支持流式插入,但是不是更新(一般用后台的批处理任务来进行更新)
  • 你正在构建一个线下的报表系统而且对查询延迟不是非常在意
  • 你想做一些大的表的关联(比如连接大的事实表和另外一个大的事实表).

Druid学习之路 (一)Druid初识的更多相关文章

  1. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  2. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  3. Redis——学习之路二(初识redis服务器命令)

    上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息   s ...

  4. Druid学习之路 (三)Druid的数据源和段

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9703204.html 转载请注明出处 Druid的数据源和分段 Druid的数据存储在"Da ...

  5. Druid学习之路 (五)Druid的数据摄取任务类型

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9885534.html 转载请注明出处 Druid的数据摄取任务类型 Druid支持很多种类型的数据摄取 ...

  6. Druid学习之路 (四)Druid的数据采集格式

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9715735.html 转载请注明出处 Druid的数据采集格式 Druid可以采集非标准化的数据诸如J ...

  7. Druid学习之路 (二)Druid架构

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9608812.html 转载请注明出处 Druid架构 Druid原本就设计为一个容易操作的面向云的多进 ...

  8. 我的Python学习之路 Python的初识与准备工作

    注:文笔不好,不喜勿喷,当个段子看看就好 一.初识Python 第一次听到Python是在2016年大概暑假 时候(即将大三),因为对黑客技术的蜜汁热爱(虽然自己并不会),在玄魂大大的公众微信号中看到 ...

  9. Redis——学习之路一(初识redis)

    在接下来的一段时间里面我要将自己学习的redis整理一遍,下面是我整理的一些资料: Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store),所以re ...

随机推荐

  1. LinCode落单的数

    easy 落单的数 查看执行结果 60% 通过 给出2*n + 1 个的数字,除当中一个数字之外其它每一个数字均出现两次.找到这个数字. 您在真实的面试中是否遇到过这个题? Yes 例子 给出 [1, ...

  2. 通过chrome浏览器调试手机页面(IOS和Android)

    开发PC页面的时候使用chrome浏览器的开发者工具,可以很容易的捕获到页面的dom元素,并且可以修改样式,方便调试,但是手机上却很麻烦,因为手机上没有办法直接打开开发者工具查看元素.其实可以通过将设 ...

  3. 类似hibernate实现sql增删改错

    Util package utils; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Ha ...

  4. 03.Curator深入使用

    1.Apache Curator简介     Curator提供了一套Java类库,可以更容易的使用ZooKeeper.ZooKeeper本身提供了Java Client的访问类,但是API太底层,不 ...

  5. Cmake Make makefile GNU autotools

    个人总结 首先makefile是由make来编译,而makefile的生成可以由GUN autotools和CMake来实现,但前者没有CMake的CMakelist.txt直观,所以我们一般用CMa ...

  6. 【Python Programe】使用Python发送语音验证

    使用Python向手机发送语音验证码,需要工具有: virtualenv 创建独立运行环境 Twilio 帐号去调用相应的API Twilio 的python库,5.7.0版本 1.使用 virtua ...

  7. Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F 表情插入mysql 报错

    导致报错的问题是 emoji表情是4位 mysql 5.5.3版本以下数据库(utf8格式为3位),不支持.需要更新mysql5.5.3及以上的版本数据库并设置默认或者表或者字段的格式为 utf8mb ...

  8. 完全用nosql轻松打造千万级数据量的微博系统

    其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量也并不是一千万条微博信息而已,而是千万级订阅关系之间发布.在看 我这篇文章之前,大多数人都看过sina的杨卫华大牛的微 ...

  9. H5开发APP入门

    一.MUI MUI是一个最接近原生APP体验的高性能前端框架.我们用它来排版布局. 官方网站:http://dev.dcloud.net.cn/mui/ 二.HTML5PLUS html5+是HBul ...

  10. NSUserDefaults保存对象数组报错

    在使用NSUserDefaults的时候插入数据有时候会报以下错误:Attempt to set a non-property-list objec 这种错误的原因是插入了不识别的数据类型,NSUse ...