NoSQL全名 Not Only SQL,而非No SQL
NoSQL是伴随着WEB2.0的兴起而迅速发展,它的出现就是为了解决大规模的非结构化数据的存储,所以目前市面上的NoSQL都天生支持【集群】和【数据分片】
这里的天生支持是指使用内部机制实现,而非类似MySql的集群和分片,需要使用插件MySQL Proxy来实现,所以在配置和使用上更加灵活以及稳定。
NoSQL的分类
1. 键值 Key/value (Redis,Membase )
键值数据库为了达到读取的最大效率,所有的数据都是放在内存的,目前键值数数据库多用于分布式缓存的搭建。
这里请注意:键值数据库中的value不仅仅可以存储基本数据类型,也可以存储Collection,二进制文件等。
2. 文档数据库 ( Mongodb)
Mongodb可算是文档数据库中的佼佼者,许多不了解的同学认为NoSQL都很粗糙,其实不然。Mongodb支持对文档的内部属性进行索引,筛选,也支持分页,全文搜索,基本上关系数据库支持的Mongodb都支持,除了关联查询。
Mongodb支持地理位置的记录和筛选,即记录位置数据,可通过位置信息搜索附近的人.....类似微信的摇一摇搜索
3. 列数据库(HBase)
列数据库和传统的关系数据库存储结构很接近,基于行和列可以定位单元格数据。相对于传统数据库的单元格数据,HBase是划分列组,并且每个单元格数据支持历史版本。
不仅仅如此,基于HBase还有Hadoop,MapReduce,Spark等一系列的成熟的大数据解决方案!
4. 图数据库 (Neo4J)
图数据库其实是记录“关系数据”的。类似社交软件的关系图,例如用户A 和 B 是[朋友][亲人]关系,B和C是[恋人][同性]关系,通过Tag方式的关系,图数据库可以绘制出一张关系网,并且可以通过条件进行筛选。
NoSQL和关系数据库(RDBMS)的关系
很多人认为NoSQL和关系数据库是此消彼长的关系,这是错误的概念。关系数据库在存储结构化数据和事务方面是不可替代的。而且关系数据库历史悠久,在很多行业都是稳定可靠的解决方案。
NoSQL处在一个爆发期,稳定性上远远不及RDBMS,而且由于缺乏较好的事务支持,很多行业(比如财务)并不能适用。
NoSQL完全摒弃了数据之间的关系,不支持关联查询,这在一些企业应用中,也是不能忍受的。
目前NoSQL的地位
国内大多数的互联网公司,也只是小范围的试用NoSQL,或者使用NoSQL作为辅助,并没有成为主流。比如,淘宝使用MySQL集群来实现其主业务,只是搭配Memcache作为分布式缓存。
虽然NoSQL一定会成为互联网的主流,但是一定会有一个较长的过渡期。
企业应用和NoSQL
传统的企业应用都有规范的数据结构,更要求有完善的事务支持,而且数据量都不会太大,所以使用NoSQL反而得不偿失。
我上面特别强调“传统的企业应用”,是因为针对企业的数据都不会太大,对性能要求是最低的。但是如果你开发类似于“物联网”这类的企业平台,使用NoSQL是势在必行。
即使你的定位不是物联网级别的平台,也可以搭配键值数据库作为缓存服务器使用,NoSQL天生的集群特性,一旦搭建起来,就不单单是“缓存服务器”了,而是“分布式缓存”!!让你的平台分分钟变得“高大上”!
版权声明:本文为博主原创文章,未经博主允许不得转载。