基本含义

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型数据库。

分类 


键值存储数据库 




Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB


内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等



 数据模型:Key 指向 Value 的键值对,通常用hash table来实现


 优点:查找速度快


 缺点:数据无结构化,通常只被当作字符串或者二进制数据




列存储数据库





举例:Cassandra, HBase, Riak



典型应用场景:分布式的文件系统




 数据模型:以列簇式存储,将同一列数据存在一起



 优点:查找速度快,可扩展性强,更容易进行分布式扩展



 缺点: 功能相对局限




文档型数据库





举例:CouchDB, MongoDb



典型应用场景:Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)




 数据模型:Key-Value对应的键值对,Value为结构化数据



 优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构



 缺点:查询性能不高,而且缺乏统一的查询语法。




图形数据库





举例:Neo4J, InfoGrid, Infinite Graph



典型应用场景:社交网络,推荐系统等。专注于构建关系图谱




 数据模型:图结构



 优点:利用图结构相关算法。比如最短路径寻址,N度关系查找等



 缺点:很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。




使用场景


 1、数据模型比较简单;



 2、需要灵活性更强的IT系统;



 3、对数据库性能要求较高;



 4、不需要高度的数据一致性;



 5、对于给定key,比较容易映射复杂值的环境。



附:


建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库,当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB等。关系型数据库遵循ACID原则,即原子性(事务里所有的操作要不全做完,要不都不做)、一致性(a、b为关联的数据,a变b也变)、独立性(一个事务未提交,数据就不会收到影响)、持久性。