--------------------------------------------------------------------------
NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式,而在关系数据库里,增删字段是一件非常麻烦的事情,如果是非常大数据量的表,增加字段简直是一个噩梦!!!
--------------------------------------------------------------------------
NoSQL:①易扩展 ②大数据量高性能 ③多样灵活的数据模型 ④传统RDBMS VS NoSQL
RDBMS VS NoSQL
RDBMS
-高度组织化结构化数据
-结构化查询语言(SQL)
-数据和关系都存储在单独的表中
-数据操纵语言,数据定义语言
-基础事务
NoSQL
-代表着不仅仅是SQL
-没有声明性查询语言
-没有预定义的模式
-键-值对存储,列存储,文档存储,图形数据库
-最终一致性,而非ACID属性
-非结构化和不可预知的数据
-CAP定理
-高性能、高可用和可伸缩性
--------------------------------------------------------------------------
特性:
KV Cache Persistence
大数据时代的3V:海量Volume、多样Variety、实时Velocity
互联网需求的3高:高并发、高可扩、高性能。
BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样。支持内联的文档对象和数组对象
--------------------------------------------------------------------------
高并发的操作是不太建议有关联查询的,互联网公司用冗余数据类避免关联查询,分布式事务支持不了太多的并发
--------------------------------------------------------------------------
NoSQL数据模型简介:KV键值,Bson,列族(纵性),图形
--------------------------------------------------------------------------
NoSQL数据库的四大分类:
KV简直;文档型数据库(bson)格式比较多;列存储数据库;图关系数据库;
--------------------------------------------------------------------------
MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,只在为WEB应用提供可扩展的高性能数据存储解决方案,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。
--------------------------------------------------------------------------
在分布式数据库中CAP原理CAP+BASE
传统的ACID分别是:A(Atomicity)原子性 C(Consistency)一致性 I(Isolation)独立性 D(Durability)持久性
CAP:C(Consistency)强一致性 A(Availability)可用性 P(Partition tolerance)分区容错性
CAP的3进2
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求。最多只能同时较好的满足两个。
因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类。
CA- 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大
CP- 满足一致性,分区容忍必的系统,通常性能不是特别高
AP- 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些
--------------------------------------------------------------------------
CAP理论就是说在分布式存储系统中,最多只能实现两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容错性是必须需要实现的。
所在只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。
--------------------------------------------------------------------------
C:强一致性 A:高可用性P:分布式容忍性
CA传统的Oracle数据库
AP大多数网站架构的选择
CP Redis、MongoDB
注意:分布式架构的时候必须做出取舍
--------------------------------------------------------------------------
BASE为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE:基本可用(Basically Available) 软状态(Soft state) 最终一直(Eventually consistent)
--------------------------------------------------------------------------
分布式系统:
分布式系统(distributed system):由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成,分布式系统是建立在网络之上的软件系统,正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上,如:PC、工作站、局域网和广域网。
①分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作
②集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。
--------------------------------------------------------------------------
Redis:REmote DIctionary Server(远程字典服务器)
特点:
①Redis支持数据的持久化,可以将内存中的数据保存在磁盘上,重启的时候可以再次加载进行使用。
②Redis不仅仅支持简单的key-value类型的数据, 同时还提供list,set,zset,hash等数据结构的存储
③Redis支持数据的备份,即master-slave模式的数据备份
--------------------------------------------------------------------------