NoSQL简述
NoSQL意为 non-relation SQL,或 Not Only SQL
NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库:不保证关系数据的ACID特性
NoSQL分类
分类 | 举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
键值(key-value) | Redis | 内容缓存(处理大量数据的高访问负载);日志系统 | Key-Value键值对 | 查找性能高 | 数据无结构化(通常只被当作字符串或者二进制数据) |
列存储数据库 | HBase | 分布式的文件系统 | 以列簇式存储,将相同列数据存在连续空间 | 查找性能高,可扩展性强,易进行分布式扩展 | 索引存在局限性 |
文档型数据库 | MongoDb | Web应用 | Key-Value键值对,Value为结构化数据(BSON),数据库可获取Value的实际内容 | 数据结构要求不严格,表结构可变(区别于关系型数据库) | 查询性能不高;缺乏统一的查询语法 |
图形(Graph)数据库 | Neo4J | 社交网络;推荐系统 | 图结构 | 利用图结构相关算法 | 有时需对全图做计算才能得出所需信息;不适合分布式的集群方案 |
NoSQL共同特点
NoSQL无明确的范围与定义,但普遍存在一些共同特征:
易扩展
NoSQL型数据库的数据间无关系性
大数据量时的高性能
NoSQL型数据库均有着高读写性能,并在大数据量下同样表现优秀,这得益于数据间的无关系性,以及简单的数据库结构
灵活的数据模型
NoSQL型数据库无需事先创建字段,可随时存储自定义的数据格式;而在关系数据库里,增删大数据量表的字段简直是噩梦
高可用
NoSQL在不怎么影响性能的情况下,就可简单地实现高可用架构