基本含义
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也变)、独立性(一个事务未提交,数据就不会收到影响)、持久性。