什么是 NoSQL?
关系型数据库代表 MySQL.
非关系型数据库就是 NoSQL.
对于关系型数据库来说, 是需要把数据存储到库, 表, 行, 字段里, 查询的时候根据条件一行一行地去匹配, 当量非常大的时候就很耗费时间和资源, 尤其是数据是需要从磁盘里去检索.
NoSQL 存储原理非常简单 (典型的数据类型为 k-v)(key-value), 不存在繁杂的关系链, 比如 mysql 查询的时候, 需要找到对应的库, 表(通常是多个表) 以及字段.
NoSQL 数据可以存储在内存里, 查询速度非常快.
NoSQL 在性能表现上虽然能优于关系型数据库, 但是它并不能完全替代关系型数据库.
NoSQL 因为没有复杂的数据结构, 扩展非常容易, 支持分布式.
数据库类型
关系型数据库: 数据库中的各个表是有关系的.
非关系型数据库: 独立的, 一个 key 对应一个 value.
NoSQL 因为没有复杂的数据结构, 扩展非常容易, 支持分布式. 所以扩展也比较容易. 如果你的 A 服务器受到瓶颈, 增加服务器让让其继续缓存呗, 因为不像关系型数据库需要互相关联, NoSQL 直接横向扩展即可!
mysql 只有通过主主, 主从, 多主多从针对从进行负载均衡. 或者就是分库分表, 前提是关联的数据库不可以分开, 不关联的数据库可以分开.
常见 NoSQL 数据库
k-v 形式的: memcached,redis 适合储存用户信息, 比如会话, 配置文件, 参数, 购物车等等. 这些信息一般都和 ID(键)挂钩, 这种情景下键值数据库是个很好的选择.
文档数据库: mongodb 将数据以文档的形式储存. 每个文档都是一系列数据项的集合. 每个数据项都有一个名称与对应的值, 值既可以是简单的数据类型, 如字符串, 数字和日期等; 也可以是复杂的类型, 如有序列表和关联对象. 数据存储的最小单位是文档, 同一个表中存储的文档属性可以是不同的, 数据可以使用 XML,JSON 或者 JSONB 等多种形式存储.
列存储 Hbase
图 Neo4J,Infinite Graph,OrientDB
来源: http://www.bubuko.com/infodetail-2482761.html