You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
6.2 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 094 | Imply基于Druid的大数据分析公司
在今天的大数据创业领域每个有相当数量受众的开源项目它的背后都会有一个创业公司在支持。今天我们就来聊聊开源项目Druid以及它背后的创业公司Imply。
Druid起始于2011年。它最初的开发商叫做Metamarkets是一个籍籍无名的广告公司。这个项目于2012年8月份基于GPL版权开源这一点和Hadoop生态圈里基于Apache版权开源的项目都不太一样。
Druid一开始并不是很有名不过随着Airbnb的加入和推广这个项目也逐渐在社区成名起来但是GPL的开源方式始终不是社区开源的主体。
于是在2015年2月项目的开源方式转向了Apache版权正式投奔了Hadoop生态圈。这算得上是Druid发展历程里最为重要的一步。
## Druid的优与劣
介绍完了Druid整个项目历程接下来我就来聊聊这个项目的特点。
在诸多数据分析开源项目里Druid有两个独具特色的优点。具体来讲**Druid的第一个优点是它的整个系统同时提供了对离线数据分析和在线实时数据分析的支持。**
它是通过冷热数据分离的方式做到这一点的。冷数据是已经写入到Druid存储的数据这一类数据存在Druid的某个节点的硬盘上。
热数据是等待写入的数据,这类数据在内存里。 Druid对冷数据和热数据分别进行查询分析再把查询分析的结果结合起来作为最终结果返回给用户。这种数据一经导入就立刻能被查询的特性让Druid在很多企业里都十分受欢迎。
**Druid的第二个优点是它是一个可插拔的查询系统。**
通常来说一个查询系统需要实现存储和执行两个模块。而存储则依赖特定的存储系统比如说内存、本地磁盘、网盘、Hadoop文件系统和云盘等等。
市面上大部分的查询系统是和特定的一个或者有限个存储系统绑定的而Druid本身并不绑定特定的存储系统。它可以支持所有流行的存储系统不论是本地磁盘、网盘、Hadoop文件系统或者是常见的云盘比如亚马逊的S3都可以成为其存储系统。
当然Druid作为一个查询引擎也有着两个非常显著的缺点。
第一个缺点是它不支持Join。或者我们可以这样说Druid只支持单表查询。也正因为这个原因Druid可以在本地就处理掉本地存储的数据无论是冷数据还是热数据然后再把数据整合在一起给出结果。如果Druid支持Join的话这种方式就不切实际。
Druid这个设计很像谷歌的BigTable。这说明在互联网公司确实有很多业务可以只需要单表。但是谷歌的BigTable下一代产品Spanner已经过渡到了一个完整的关系数据库也开始支持Join。所以我们可以认为Druid更像是一个过渡产品。
第二个缺点是Druid不支持SQL只类似BigTable那样的API。这导致了Druid这个开源项目身上互联网公司的气味很重。而传统一些的需要SQL支持的公司并不愿意用不支持SQL的Druid。
## Imply公司与系统
说完了Druid我们来看看它背后的公司。2015年8月Druid最初的那些创始人离开了Metamarkets去创业成立了Imply公司。这是诸多大数据创业公司里又一家提供在线分析报表服务的公司这样类型的公司我们一路走来也已经讲过很多。
Imply公司主要为Druid提供企业级应用的支持。它的产品也叫Imply。Imply公司的这套系统主要有两个版本。第一个版本是一套离线可以下载本地部署的系统企业可以部署在自己的企业内部叫Imply On-Premise。另外一个版本是基于亚马逊的云计算架构AWS的云版本叫Imply Cloud。
Imply这套系统在Druid的基础上进行了两个方面的优化。
第一方面它解决了开源的Druid为人诟病的问题不支持SQL。Imply实现了一个新的、不开源组件这个组件叫做SQL层。它的主要作用是允许外部系统通过ODBC或者JDBC连接进来系统同时具备了把SQL翻译成Druid查询语言API的能力。
所以这样一来外部系统通过标准的ODBC/JDBC连接发送SQL语句而这个SQL层则完成从SQL到Druid自己查询语言API的转换从而连通内外系统。不过这种连接方式依然不支持Join。
第二方面Imply还增加了一个可视化查询模块。这是在用户本身没有Tableau或者Power BI等类似的可视化工具外部连接的情况下系统本身提供一些简单的可视化操作和支持。
除去做可视化以外这一层还提供了通过对数据的预先计算和处理并存储中间结果的方式来加速查询。这一点和我在前面文章提到的Dremio的做法很像。
Imply公司的主要盈利模式还是通过出售他们的系统以及为他们的系统提供支持来赚钱。鉴于开源版的Druid不支持SQL所以传统企业如果想要使用Druid的整个技术栈的话买Imply的版本比用开源的Druid会更方面好用。后者提供了SQL的支持可以降低企业内部员工迁移的学习成本。
Imply的赚钱模式并没有和其他基于开源大数据的创业公司的赚钱模式有特别大的区别区别的地方只是底层的产品换成了Druid。我个人并不看好这个公司主要有两方面的原因。
第一是Druid的产品虽然比较适合互联网公司但它不是一个通用的系统。互联网公司的自我开发能力强用开源的Druid足够了不会花钱去买Imply的增强版所以Imply很难赚到互联网公司的钱。
第二是Druid本身不支持Join这让它非常高效可以同时提供离线和在线分析但是也让它对传统企业来说变得非常不实用。不支持Join的数据查询引擎在传统企业里要怎么用起来是一个巨大的挑战所以我觉得Imply也很难赚到传统企业的钱。
总而言之我觉得不管在什么情况下因为Druid的特殊性Imply很难赚到任何一个企业的钱。我有理由相信这个公司是诸多开源项目背后的创业公司里最早倒下的那一批所以Imply的前途在我看来并不乐观。