关于nosql
nosql:not only sql,也指非关系型数据库。
关系型数据模型被提出后就得到广泛的使用和认可,目前它是结构化数据存储在网络和服务器中的主导技术。
nosql运动提倡的是非关系型数据库的运用。
关系型和非关系型的区别:
1、非关系型数据以键值对的方式存储,性能较好。
2、非关系型可扩展能力强,因为没有表的概念,也就没有结构的概念,新增字段或减少字段只需要直接修改业务代码即可完成。
3、关系型数据库对复杂查询有更好的支持。
4、关系型数据库支持事务,能够更好保证数据的一致性和安全性。
nosql的优缺点:
优点:
1、高可扩展性
2、分布式计算
3、半结构化数据
缺点:
1、不支持事务
2、不支持复杂查询
CAP理论是针对分布式系统而言。
BASE理论,对nosql数据库可用性及一致性的弱要求:
basically availble 基本可用
soft state 柔性事务
eventual consistency 最终一致性
Nosql数据库分类:
KV型nosql数据库:最著名的如Redis,直接通过key值查询得到对应的数据,当业务需求就是可以直接通过key值完成查询需求时,它是较好的选择,内存型数据库,数据量不能过大,读写效率非常高,但是如果对value有查询筛选需求,那么它效率会很低下。
文档型nosql数据库:如mongodb,它每一条记录就是一个类json对象,有人会疑问,我们同样可以通过kv数据库来存储json格式的数据,它们的区别在于,mongo是支持索引的,在索引的帮助下,它能够很好的支持筛选和查询操作,相比于关系型数据库,它对于复杂关联查询以及事务是不支持的。
列存储nosql数据库:关系型数据库中所记录的数据通常是按照行来组织的,每一行包含了标识不同意义的多个列,并被顺序记录在持久化文件中。sql中大量通过列进行筛选查询操作,由于关系型数据库按顺序存储每一行,执行按列筛选语句时没法按顺序连续的操作文件中所记录的数据,
列存储nosql数据库的核心思想:按照列在数据文件中记录数据,以获得更好的请求和遍历效率。
数据示例:
关系型数据库:
列存储nosql数据库:
对于kv,文档型都没有太多数据模型的设计工作,