Druid.io系列(五):查询过程
原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52956194
Druid使用JSON over HTTP 作为底层的查询语言,不过强大的社区也为我们提供了多种查询方式,比如Python接口pydruid、R接口RDruid、JavaScript接口plywood、类SQL接口plyql、PHP接口druid-php等。
Druid查询目前只支持单表操作,基本涵盖了ANSISQL中常用的查询语句,包括:
聚合类(Aggregation)查询
时间序列查询
TopN查询
GroupBy
元信息(Metadata)类查询
时间范围查询(数据集最早和最近出现时间点)
Segment元信息
DataSource元信息
搜索类(Search)查询(包括Select查询)
不过Druid目前还不支持JOIN类操作,以上已支持的各类查询的详细说明可以参见:http://druid.io/docs/0.9.1.1/querying/searchquery.html
查询过程
在介绍BrokerNode中已基本概述了Druid是如何查询集群内的数据。BrokerNode作为集群内查询入口,需要了解数据在集群内的分布情况,才能将查询请求发送给对应的数据节点(包括HistoricalNode和Real-TimeNode),BrokerNode会merge每个节点返回的数据,最终返回给用户。
在这里主要说下带有过滤(filter)的查询请求,我们知道Segments内部存在位图索引,所以数据的过滤操作完全可以转换为bitmap的按位逻辑操作,所以无论是HistoricalNodes还是Real-TimeNodes,都不需要去查看原始数据,只需要通过位图索引的按位逻辑操作,获得符合过滤条件的行号,再取出需要的列返回给Broker即可。
Druid.io系列(五):查询过程的更多相关文章
- Sql Server来龙去脉系列之三 查询过程跟踪
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...
- Druid.io系列(一):简介
原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52955676 Druid.io(以下简称Druid)是面向海量数据的.用于实时查询与 ...
- Druid.io系列(九):数据摄入
1. 概述 Druid的数据摄入主要包括两大类: 1. 实时输入摄入:包括Pull,Push两种 - Pull:需要启动一个RealtimeNode节点,通过不同的Firehose摄取不同种类的数据源 ...
- Druid.io系列(六):问题总结
原文地址: https://blog.csdn.net/njpjsoftdev/article/details/52956508 我们在生产环境中使用Druid也遇到了很多问题,通过阅读官网文档.源码 ...
- Druid.io系列(三): Druid集群节点
原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52955937 1 Historical Node Historical Node的职 ...
- Druid.io系列(二):基本概念与架构
原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52955788 在介绍Druid架构之前,我们先结合有关OLAP的基本原理来理解Dr ...
- Druid.io系列(八):部署
介绍 前面几个章节对Druid的整体架构做了简单的说明,本文主要描述如何部署Druid的环境 Imply提供了一套完整的部署方式,包括依赖库,Druid,图形化的数据展示页面,SQL查询组件等.本文将 ...
- Druid.io系列(七):架构剖析
1. 前言 Druid 的目标是提供一个能够在大数据集上做实时数据摄入与查询的平台,然而对于大多数系统而言,提供数据的快速摄入与提供快速查询是难以同时实现的两个指标.例如对于普通的RDBMS,如果想要 ...
- Druid.io系列(四):索引过程分析
原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52956083 Druid底层不保存原始数据,而是借鉴了Apache Lucene.A ...
随机推荐
- angularjs 阻止浏览器自带的回退
$scope.$on('$locationChangeStart', function(e) { if(!tfOrder && comm.getStorage('orederlistL ...
- fedora 27
安装 U盘安装,感谢学长的U盘 配置 安装外来软件的时候,需要输入root密码 软件 软件安装是个麻烦事儿啊 详情 [新手指南: 在 Ubuntu 和 Fedora 上安装软件包] Fedora 中文 ...
- Android学习笔记之Toast详解
1. 贴一段Android API-Toast Toast public class Toast extends Object java.lang.Object ↳ android.widget.T ...
- Encode Adjacent Letters
Encode a string by counting the consecutive letter. (i.e., "aaaabbxxxyyz" might become &qu ...
- Java并发--synchronized
以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解决线程安全问题? 三.synchronized同步方法或者同步块 转载原文链接:http://www.cnblogs.com/dol ...
- AC自动机学习小结
AC自动机 简要说明 \(AC\) 自动机,全称 \(Aho-Corasick\ automaton\) ,是一种有限状态自动机,应用于多模式串匹配.在 \(OI\) 中通常搭配 \(dp\) 食用. ...
- python发送邮件的实例代码(支持html、图片、附件)
转自http://www.jb51.net/article/34498.htm 第一段代码 #!/usr/bin/python# -*- coding: utf-8 -*- import emaili ...
- 常用输入法快速输入自定义格式的时间和日期(搜狗/QQ/微软拼音)
几个主流的输入法输入 rq 或者 sj 都可以得到预定义格式的日期或者时间.然而他们都是预定义的格式:当我们需要一些其他格式的时候该怎么做呢? 本文将介绍几个常用输入法自定义时间和日期格式的方法. 主 ...
- static类和no static类的区别
1.static类,只能有静态成员,不能被实例.静态的东西在内存中只有一份,调用速度会快,但是相对费内存. 2.在另外一个类内部定义的类,此类的实例化不希望依赖外部类的实例化,此时可以定义为静态类(即 ...
- 【jQuery插件分享】Cropper——一个简单方便的图片裁剪插件
原文:https://segmentfault.com/a/1190000012344970 插件介绍 这是一个我在写以前的项目的途中发现的一个国人写的jQuery图像裁剪插件,当时想实现用户资料的头 ...