1 关于NOsql的介绍
问:什么是NOsql ?
NOsql ,全称为Not Only sql,不仅仅是sql,并不是反对sql的意思(No sql)。它是针对传统的关系型数据库(RDMB)的不足,提出了全新的数据库管理架构理念。
问:为什么会有NOsql?
随着数据规模的不断增长,许多企业需要的数据库架构业务面临以下挑战:
(1) 支持大量用户同时在线高并发访问;
(2) 在分布式服务架构下能够得到低延迟的访问响应;
(3) 需要存储大量非结构化数据;
(4) 能够完成快递的更替,能够扩充属性。
传统的结构化数据库难以上述的需求,在数据的处理和存储遇到了巨大的瓶颈。需要有新一代的数据变革。
问:NOsql与sql,哪个会更好?
NOsql与sql没有绝对的优劣之分,需要结合具体的场景分析。目前来说,还是以sql为主,NOsql为辅的数据架构。
2 NOsql的四大家族
键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。如Redis。
Redis:Redis缓存是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。
例子:利用redis分布式缓存机制搭建分布式爬虫架构
列存储数据库
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:HBase(Hadoop、spark家族)
文档型数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
优点:数据存储的灵活性高
缺点:数据处理的时间复杂度与空间复杂度增高
图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的sql数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。Nosql数据库没有标准的查询语言(sql),因此进行数据库查询需要制定数据模型。许多Nosql数据库都有REST式的数据接口或者查询API。 如:Neo4J
Neo4j是一个高性能的,NOsql图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。
因此,总结Nosql数据库在以下的这几种情况下比较适用: 1、数据模型比较简单; 2、需要灵活性更强的IT系统; 3、对数据库性能要求较高; 4、不需要高度的数据一致性; 5、对于给定key,比较容易映射复杂值的环境。