ElasticSearch在2016年快速增长,从去年13名前进到第11名。ElasticSearch今年发布了5.0版本,这个版本号跳跃得比较大,主要是因为elastic公司考虑到与自己旗下的Kibana等产品版本号统一,解决用户搭建ELK或ElasticStack日志分析架构选择组件版本的困扰。
八、Neo4j(最好的图)
图一直是NoSQL领域非常重要的分支,Neo4j可以说是图的绝对领导者,虽然这个名字很土(很容易联想到log4j、dom4j这些通用java组件)
neo4j
图虽然现在流行度并不算太高,主要原因是目前大部份问题可以采用关系型或大数据方案解决,图更擅长描述基于关联关系的场景应用,可以用来解决一些特殊的场景,如人员关联关系、事务关联关系等等,比如社交关系计算、物流路径计算等等。但是由于图整个理论不像关系型那么扎实,大家也没有总结出太多的实践经验,再加上性能与扩展性上并不是很突出,所以影响力还不大。
从我个人认为图是非常有前景的,因为当前关系型对于傻瓜计算是比较擅长,但对于人工智能方面非常无力,而图的结构更像人的大脑信息保存模式,不擅长搞大数据运算,但是可以很容易发现两个相隔十万八千里的对像关系。关系型擅长把一类东西模式化存储,比如有汽车、衣服、家具、食物、照片、朋友等很多信息,RDBMS可以设计为按每种类别用一张表格存储,这样可以很方便回答类型下面的问题:
1. 总共保存了多少件衣服
2. 红色的汽车有哪些
但是要回答下面两个问题会相对困难:
1. 找出所有是长方型白色的东西

2. 找出附近有宝马汽车的朋友或(朋友的朋友)照片
如果要回答上面问题,RDBMS需要再增加维护各种属性与物品的关系。但是像上面这种关联性问题会有很多组合,所以通过RDBMS来维护并不轻松。
图的存储格式更适合解决这类问题,因为它更擅长关联查找计算。图更像人脑计算,如果未来机器学习大量应用,或许是图普及的时刻。
Neo4j提供了类似SQL的图查询语言Cypher,Cypher语言的描述能力非常强大,甚至已经成为图查询语言的通用标准。一个简单的图Cypher查询语言如下:
Cypher
下图是Neo4j官网列出的典型客户:
Neo4j典型客户
九、Cassandra(最好的列式)
cassandra
现在把Cassandra说为列式完全是不太恰当的归类,最初的Cassandra确实是有列式的概念,但是实际上现在已经完全看不到列式的东西,可以说完全是一个标准分布式。Cassandra除了具备表、字段、二级索引这些概念外,还支持触发器、物化视图,你敢信吗,但他真的支持。Cassandra的接口语言是CQL,CQL查询数据用select,支持insert、update、delete,创建表也是用create table,创建索引也是用create index,语法与SQL基本一模一样,但是功能方面有一些限制,比如不支持多表关联,对where条件也有许多严格的限制等等。高性能计算机系统另外增加支持了list、set、map、tuple等高级数据类型支持,可以说是SQL的一种扩展。
Cassandra与HBase起步与实现原理很像,但是应用的场景却差别很大。Cassandra在国外非常流行,但是国内基本没有用户,而HBase在国内非常流行。这是为什么呢?我个人理解是:在Facebook推出Cassandra的时候,国内各大互联网公司也是研究得热火朝天,但是因为Cassandra产品并不太成熟,另外原厂Facebook不久后又放弃了这个产品,加上国内除了BAT以外的厂商并没有太多分布式的压力,所以并没有快速流行。当时的 Cassandra也不能解决BAT的分布式需求, 而同时像阿里巴巴等公司大量宣传用MySQL去IOE的经验,采用了Cobar与TDDL这样类似的中间件架构,很多公司都开始朝这个方向走,因为对系统相对改造成本更小,所以大家也不关心Cassandra的后来发展。而HBase是基于Hadoop体系产生的数据存储产品,这个领域MySQL也没有优势,国内大数据也发展地非常火热,加上BAT、小米大量宣传HBase成功案例,所以HBase快速流行起来。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-60377-6.html
晚安好梦小王子
呵呵