三种技术的融合

标签: 大数据 数据库 | 发表时间:2015-07-07 15:46 | 作者:taowen
出处:http://segmentfault.com/blogs

图片描述

搜索引擎技术,分析数据库技术,分布式计算引擎技术这三股力量正在快速地彼此融合。举例证如下

Hive

Hive一开始只是用sql的方式描述map/reduce的逻辑,是一个典型的分布式计算引擎。这是分布式计算引擎向OLAP方向靠拢的第一步。

Hive+Index

Hive推出不久就被发现,虽然用的SQL但是性能离数据库还差很远。很快就有人提出是不是要给Hive加上数据库一样的索引。这明显就是分布式计算引擎向分析数据库的方向靠拢。

Parquet

Parquet是一种列式文件,用于加速hive/impala这样的分布式计算引擎的查询速度。使用 parquet 加上了索引的 hive/impala/spark 这些已经很难说与 OLAP 数据库的差别是什么了。

Kylin/Presto

这些Hive的衍生物直接上来就是瞄着OLAP去的。各种sql on hadoop的方案。

Elasticsearch

另外一个方向的融合是搜索引擎技术快速地向OLAP融合。Elasticsearch公司更名为了Elastic,因为越来越多的人开始用Elasticsearch不是search,而是analytics,也就是跑SQL。
Elasticsearch底层的Lucene引入了DocValues之后,数据可以按列存储(和parquet一样),使得Elasticsearch几乎可以当成一个列式数据库来使用了。
另外Elasticsearch在Lucene的基础上大幅加强了Aggregation的功能,利用其冗长但是强大的aggregation dsl可以表达出比SQL还要复杂的聚合逻辑。
腾讯的Hermes数据库( http://data.qq.com/article?id=817)就是基于Lucene/Solr实现的分析型数据库

Crate.io

因为Elasticsearch性能实在太出众了,但是dsl接口不好使。有人拿Elasticsearch做为底层,上层封装了一个SQL接口,从何正式变成了一种数据库,叫 http://crate.io

Groonga

http://groonga.org/docs/characteristic.html
日本人写了一个搜索引擎,而这个搜索引擎同时还可以作为mysql可插拔的存储引擎使用,从而把mysql变成一种支持全文检索的列式数据库。

Spark on Elasticsearch/RDBMS

一个更加有趣的方向是Spark开始和OLAP数据库和Elasticsearch勾搭在一起。利用把Elasticsearch查询映射成Spark的RDD,可以把一条SQL的where部分放在Elasticsearch里分布式执行(所谓filter push down优化),然后把分布式的group by 和 projection 由Spark来完成。

融合

这三个技术各自有独自看重的内在实现方式
* 搜索引擎:重点是inverted index,索引的压缩存储和高效检索
* 分析数据库:重点是column oriented storage,利用列式存储快速地在查询时暴力扫描
* 分布式计算引擎:从一开始就是map reduce,关注的是分区和分布式执行

实际上三家是从不同的角度切入了同一个问题。不过这已经不是一招鲜的时代了。一个好的搜索引擎需要inverted index/column oriented storage/map reduce,三者都要。一个好的OLAP也是inverted index/column oriented storage/map reduce三个都要的。
目前从趋势上来看风头最火的是 Elasticsearch,最佳的组合是 Spark + Elasticsearch。
最科幻的未来组合是把Spark + Elasticsearch 做深度的整合,去掉 Elasticsearch 自己的分布式层,完全靠 Spark 做分布式计算。要是能再配备一个实时计算管道作为灵活的入库渠道和物化视图就更牛x了。

相关 [技术] 推荐:

前端技术

- - CSDN博客综合推荐文章
随着互联网产业的爆炸式增长,与之伴生的Web前端技术也在历经洗礼和蜕变. 尤其是近几年随着移动终端的发展,越来越多的人开始投身或转行至新领域,这更为当今的IT产业注入了新的活力. 尽管Web前端技术诞生至今时日并不长,但随着Web技术的逐渐深入,今后将会在以下几方面发力. JavaScript的兄弟们.

SSI技术

- - 开源软件 - ITeye博客
1.       SSI,通常称为“服务器端包含”技术. 使用了SSI技术的文件默认的后缀名为.shtml,SSI技术通过在html文件中加入SSI指令让web服务器在输出标准HTML代码之前先解释SSI指令,并把解释完后的输出结果和HTML代码一起返回给客户端. 2.       SSI技术的优点:SSI技术是通用技术,它不受限于运行环境,在java、dotnet、CGI、ASP、PHP下都可以使用SSI技术;解释SSI的效率比解释JSP的效率快很多,因为JSP规范提供了太多的功能,这些功能都需要servlet引擎一一进行解释,所以效率比较低.

技术选型

- - 企业架构 - ITeye博客
MVC Framwork: SpringMVC3.0 Restful的风格终于回归了MVC框架的简单本质,对比之下Struts2概念太复杂更新又太懒了. Template:JSP2.0且尽量使用JSP EL而不是taglib,万一要写taglib也用纯JSP来编写,一向是SpringSide的推荐,Freemarker们始终有点小众, 而Thymeleaf与美工配合度非常高,可惜也是太少用户了.

技术 in Netflix

- - 后端技术杂谈 | 飒然Hang
综合市面上的公开资料总结了Netflix在技术上面的一些实践和创新,从中能够得到不少启发和提示.

技术的异化:读《技术垄断》

- Dynamic - It Talks--上海魏武挥的博客
事实上,我认为国内对马克思或神圣化或妖魔化,都是要不得的. 我们应该还马克思一个伟大的社会学(当然还有哲学、经济学之类)学者的本来面目,而不是把他的话当成教义. 异化就是一个相当精到的学术词语,它所描述的是人们创造发明某物本来为了让人们自己更好地工作生活,结果该物却成了人的主宰. 在很多领域,都有异化的影子,比如宗教,比如官僚体系,当然,也包括技术.

HBase技术介绍

- 三十不归 - 搜索技术博客-淘宝
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. 上图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制.

Web技术整理

- Gabriel - 博客园-首页原创精华区
  Web技术或许是将来最为热门的技术之一. 这里略作一些总结,以及对各种Web技术作一些概要性介绍. (以下内容建立在我的粗略理解之上,欢迎指正).   推荐个学习Web技术比较好的网站,介绍的比较全面.   页面的展示使用超文本标记语言(HTML)来表示. 这是一种标签语言,本身不具有执行能力,只是结构化页面内容.

Hadoop相关技术

- - CSDN博客云计算推荐文章
Apache的Hadoop是什么. Apache的Hadoop项目™®开发出可靠的,可扩展的,分布式计算的开源软件. Apache的Hadoop的软件库是一个框架,允许大型数据集通过计算机集群使用简单的编程模型,进行分布式处理. 它的设计规模从单一服务器到数千台计算机,每个提供本地计算和存储. 软件库是用来检测和处理应用层失败的,而不是依靠硬件提供高的有效度,因此在计算机集群上提供高度可用性服务,其中每个都有可能会有失败.

MySQL分区技术

- - 数据库 - ITeye博客
mysql分区技术是mysql5.1以后出现的新技术,能替代分库分表技术,它的优势在于只在物理层面来降低数据库压力. 常用的MySQL分区类型:. 1.RANGE分区:基于属于一个给定的连续区间的列值,把多行分配给分区(基于列). 2.LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合的某个值来进行选择(基于列值是固定值的).

zookeeper技术浅析

- - CSDN博客云计算推荐文章
 Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多. 今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用.