Not Only Sql 非关系型数据库
关系型数据库在超大规模数据、高并发环境中性能低、数据表扩展难。
关系型数据库和非关系型数据库
(1)存储
关系型数据库,表中的行和列,满足范式,表之间的关系明确,表结构事先定义、修改表结构困难
NoSQL,以键值对存储数据、图;动态结构,很容易适应表结构的变化
(2)事务
关系型:ACID(原子性、一致性、隔离性、持久性)、事务回滚
NoSQL:BASE(基本可用+柔性事务+最终一致性);ACP中的两个(可用性、一致性、分区容忍性)
(3)性能
NoSQL存取快
NoSQL
1.容易扩展
数据之间无关系,容易扩展,这样,在架构层面上带来了可扩展的能力。
2.大数据量、高性能
数据库的结构简单,非常高的读写性能(一秒钟写8万次,读10万次)
NoSQL的cache是记录级的,是一种细粒度的cache,而MySQL使用query cache,每次表的更新cache就会失效,是一种大粒度的cache。
3.多样灵活的数据模型
传统的关系型数据库:事先为要存储的数据建立字段,增删字段非常麻烦
NoSQL:不需要事先建立字段,随时存储自定义的数据格式,增删字段容易
1.Redis
支持多种数据结构(String List Set Sortset hash),但是在处理String类型的数据会耗费较多内存
支持持久化(aof、rdb)将内存中的数据保存在磁盘中,重启可再次加载使用
支持数据备份(主从配置)
单线程,所有命令串行执行,在并发情况下不用考虑一致性问题,但是单线程对CPU的性能要求高
对事务的支持不成熟
支持持久化(aof、rdb)将内存中的数据保存在磁盘中,重启可再次加载使用
支持数据备份(主从配置)
单线程,所有命令串行执行,在并发情况下不用考虑一致性问题,但是单线程对CPU的性能要求高
对事务的支持不成熟
2.Memcache
支持的数据类型少
无法持久化、不能数据备份、只能用作缓存、重启后数据丢失
3.MongDb
更高的插入优势
当数据表的规模较大时,可以很容易分割表
可以快速、安全、自动地实现节点故障转移
不支持事务