druid

阅读 / 问答 / 标签

Druid查询语法

本文的demo示例均来源于官网。 Druid的查询是使用Rest风格的http请求查询服务节点,客户端通过发送Json对象请求查询接口。可以使用shell脚本查询或通过Google的ARC插件构造Post请求进行查询。 Shell脚本 其中<queryable_host>:<port>为broker、historical或realtime进程所在机器的ip和提供服务的端口,query_json_file为json配置文件路径。 ARC插件 [图片上传失败...(image-5a63a0-1626656067202)] 不同的查询场景使用不同的查询方式。Druid有很多查询类型,对于各种类型的查询类型的配置可以通过配置不同的Query实现。Druid的查询类型,概括为以下3类: 1.聚合查询:时间序列查询(Timeseroes),Top查询(TopN),GroupBy查询(GroupBy) 2.元数据查询:时间范围(Time Boundary),段元数据(Segment Metadata),数据源(DataSource) 2.Search查询(Search) 一般聚合查询使用的较多,其他类型的查询方式使用场景较少且较简单,可直接参考官网给出的demo即可查询;本文主要介绍聚合查询。一般情况下,Timeseries和TopN查询性能优于GroupBy,GroupBy查询方式最灵活但是最耗性能。Timeseries查询性能明显优于GroupBy,因为聚合不需要其他GroupBy其他维度;对于Groupby和排序在一个单一维度的场景,TopN优于GroupBy。 一条Druid query中主要包含以下几种属性: 2.1 granularity简介 2.1.1 简单的聚合粒度 简单的聚合粒度有:all、none、second、minute、fifteen_minute、thirty_minute、hour、day、week、month、quarter、year;简单聚合粒度的查询取决于druid存储数据的最小粒度,如果构建数据的最小粒度是小时,使用minute粒度去查询,结果数据也是小时粒度的数据。 假设存储在Druid中的数据使用毫秒粒度构建,数据格式如下: 提交一个小时粒度的groupBy查询,查询query如下: 提交一个小时粒度的groupBy查询,查询query如下: 按小时粒度进行的groupby查询结果中timestamp值精确到小时,比小时粒度更小粒度值自动补填零,以此类推按天查询,则小时及小粒度补零。timestamp值为UTC。查询结果如下: 如若指定聚合粒度为day,则按照天为单位对数据进行聚合,查询结果如下: 如若聚合粒度设置为none,则按照druid中build数据的最小粒度查询数据,即不进行聚合,如bulid数据的粒度是ms,则聚合出来的结果也是毫秒: 如若将聚合粒度设置为all,则返回数据的长度为1,即把查询时间段的数据做一个汇总: 可指定一定的时间段进行聚合,返回UTC时间;支持可选属性origin;不指定时间,默认的开始时间=1970-01-01T00:00:00Z; 持续时间段2小时,从1970-01-01T00:00:00开始: 时间聚合粒度的特例,方便使用,如年、月、日、小时等,日期标准是ISO 8601。无特别指定的情况下,year从1月份开始,month从1号开始,week从周一开始。 一般的格式为:其中timeZone可选,默认值是UTC;origin可选,默认1970-01-01T00:00:00; period的一般写法为: 如提交一个1d作为聚合粒度的groupby查询的query: 查询得到的结果为: 官网给出的例子是以美国洛杉矶的时区为准,一般中国的时区这样使用,更多时区可移步该链接查询: 一个filter即一个json对象,代表一个过滤条件,等价于mysql中的一个where条件;过滤器的类型主要有:Selector filter,Regular expression filter(正则表达式过滤)、Logical expression filters(AND、OR、NOT)、In filter、Bound filter、Search filter、JavaScript filter、Extraction filter; 等价于 WHERE <dimension_string> = "<dimension_value_string>" json格式: 类似Selector过滤器,只不过过滤使用的是正则表达式;正则表达式为标准的java正则表达式规范; aggregations即汇总数据记性druid之前提供的一个数据采集一种聚合方式。常用的聚合类型主要有:count,sum,min/max,approximate,miscellaneous; 2.3.1 Count aggregator 符合查询条件的行数,类似mysql中的count计算: Note: Druid进行Count查询的数据量并不一定等于数据采集时导入的数据量,因为Druid在采集数据查询时已经按照相应的聚合方式对数据进行了聚合。 2.3.2 Sum aggregator 与底层druid表中的字段类型一致。 longSum 2.4 聚合查询 2.4.1 Timeseries query query 2.4.2 TopN query TopN查询根据规范返回给定维度的有序的结果集,从概念上来讲,TopN查询被认为单维度、有序的类似分组查询。在某些情况下,TopN查询比分组查询(groupby query)快。TopN查询结果返回Json数组对象。TopN在每个节点将顶上K个结果排名,在Druid默认情况下最大值为1000。在实践中,如果你要求前1000个项顺序排名,那么从第1-999个项的顺序正确性是100%,其后项的结果顺序没有保证。你可以通过增加threshold值来保证顺序准确。

为什么说Druid是“最好的数据库连接池”

1、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。2、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。3、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。4、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

druid是什么意思

druid 英["dru:u026ad] 美["dru:u026ad] [词典] 棉帆布;

Druid的释义

“Druid”一词分两部分理解:前半部很大程度上和希腊文的“drus”相关,是橡树的意思;而后半部与印欧语系的词尾「-wid」相似。而德鲁依教又以橡果为圣果,更证明其名字的古意是熟悉橡树之人 。同时Druid也是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。德鲁依教德鲁依教的仪式和教义都是非常神秘的,而且只依惯例口头传授。所以,虽然经过历代研究和探索,依然所知甚少。多数有关他们的资料是来源于古希腊和古罗马的文献。除此之外,考古学家只能从森林、神坛、庙宇的遗迹中偶然寻得一些如图画、记号等的微小线索而已。在史书上最早有关于德鲁依教团的记载主要是见于朱理亚·凯撒和古罗马最伟大的史学家塔西佗斯的著作中。在这些著作中,多是描述德鲁依教的野蛮和恐怖!凯撒远征高卢时曾向元老院报告说:「德鲁依教教士在当地有仲裁和主祭等重要地位和权力,而且该教教士精通物理、化学;在树林中居住,用金镰刀砍伐神圣的橡树果,甚至用活人献祭!」但在大多数情况之下,德鲁依教士是公认的古代智能的守护者,有着崇高的道德修养,并对自然科学和神学有很深的造诣。
 首页 上一页  1 2