如何对多维查询场景进行技术选型?

参与12

2同行回答

windixwindix联盟成员商业分析师某证券公司
根据不同的业务场景,可以选择使用不同的技术。(1)维度相对固定的离线数据查询,可用Kylin。Kylin支持标准SQL,通过预计算将数据转换成Cube,提供高效的多维查询。然而,预计算需要事先定义好表结构和查询模型,查询灵活性较低。(2)维度更加灵活,并且需要支持实时数据查询是,可用Druid。但...显示全部

根据不同的业务场景,可以选择使用不同的技术。
(1)维度相对固定的离线数据查询,可用Kylin。Kylin支持标准SQL,通过预计算将数据转换成Cube,提供高效的多维查询。然而,预计算需要事先定义好表结构和查询模型,查询灵活性较低。
(2)维度更加灵活,并且需要支持实时数据查询是,可用Druid。但Druid不支持SQL查询,与报表系统对接的难度略高。
(3)如果需要高度灵活的自定义查询,可以用Spark SQL完成数据转换、聚合等计算,再将结果输出到报表系统。

收起
互联网服务 · 2018-10-18
rein07rein07系统架构师某证券
多维查询场景需求越来越多,但合适的查询引擎却不太多,如HBase比较适合特定维度的查询, Hive和Spark比较偏重于离线分析场景,Impala在小数据量下进行多维查询效果还不错,但是在大数据量下效率大打折扣。可选的引擎并不多,经过实践经验,以下几种可以做个参考:1) KylinKylin采用预...显示全部

多维查询场景需求越来越多,但合适的查询引擎却不太多,如HBase比较适合特定维度的查询, Hive和Spark比较偏重于离线分析场景,Impala在小数据量下进行多维查询效果还不错,但是在大数据量下效率大打折扣。可选的引擎并不多,经过实践经验,以下几种可以做个参考:
1) Kylin
Kylin采用预计算的方式实现多个Cube,多维查询语句经过解析后最终会落到某个Cube中查询,是典型的空间换时间的策略。这种方案的好处是基于Kylin的查询效率极高,缺点是需要定期构建,时效性较差。
2) Elasticsearch
Elasticsearch也是列式存储,核心原理是倒排索引,所以查询效率非常高,多维度查询性能损失并不是很大,缺点是SQL支持不好,官方在6.3后开始支持SQL,但是某些查询仍然受限。所以对于简单的多维度查询,使用Elasticsearch比较适合,而复杂的查询(如多表嵌套、字段的各种函数式处理)暂时还不太合适。
3) Druid
Druid的思路有点像Kylin Cube预计算和倒排索引两个思想的结合(Kylin底层使用HBase存储),查询效率也很不错。
以上几种方案不是多维查询中唯一的选择,也不是哪一种方案就一定适合所有的查询场景,最终还是要以数据实际情况选择合适的引擎。

收起
证券 · 2018-10-19
浏览1411

提问者

rein07
系统架构师某证券
擅长领域: 人工智能大数据机器学习

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2018-10-18
  • 关注会员:2 人
  • 问题浏览:2741
  • 最近回答:2018-10-19
  • X社区推广