1、NoSQL是什么?
NoSQL(Not only SQL,不仅仅是数据库),泛指非关系型数据库数据库,其数据存储不需要固定的模式,无需多余操作就可以横向扩展。
![f8a344e92061ef39ce07c26a7cd4419f041.jpg](https://oscimg.oschina.net/oscnet/f8a344e92061ef39ce07c26a7cd4419f041.jpg)
2、传统的RDBMS VS NOSQL
![8d272f08bb8349d841469975db0965982fd.jpg](https://oscimg.oschina.net/oscnet/8d272f08bb8349d841469975db0965982fd.jpg)
3、传统的非关系型数据库:Redis、Memcache、MongoDB
- MongoDB是最像关系型数据库的一种非关系型数据库
- 若只想干一件事,比如只干“高速缓存”,就采用Memcache
- 但若想一招多能,数据类型丰富,采用Redis,Redis主要用于:KV+Cache+Persistence+……
4、当下NOSQL的经典应用 【应该将SQL与NOSQL一起使用】
问:阿里巴巴中文站商品信息如何存放?【以女装/女包包为例】
![314a1986980a4f8c4431996b243267ca2d2.jpg](https://oscimg.oschina.net/oscnet/314a1986980a4f8c4431996b243267ca2d2.jpg)
![1bfad8b00349d07d364cd4409eeef86e7ba.jpg](https://oscimg.oschina.net/oscnet/1bfad8b00349d07d364cd4409eeef86e7ba.jpg)
![db66112fe3c355caafb1aa1fc1e58409689.jpg](https://oscimg.oschina.net/oscnet/db66112fe3c355caafb1aa1fc1e58409689.jpg)
5、NOSQL数据模型简介
问题:以一个电商客户、订单、订购、地址模型来对比下关系型数据库和非关系型数据库?
(1)关系型数据库:用户表、订单表、地址表、订单类别、支付、商品 【ER图(1:1、1:N、N:N,主外键等常见)】
【ER图】
(2)非关系型数据库(NOSQL):需要用BSON(类似于Json的存储格式)画出构建的数据模型
非关系型数据库中:customer>orders>orderPayment
![30e5748d018588fa05deb9343907eba5b05.jpg](https://oscimg.oschina.net/oscnet/30e5748d018588fa05deb9343907eba5b05.jpg)
![ea5244cfa6fa670edd38bba72179cc72501.jpg](https://oscimg.oschina.net/oscnet/ea5244cfa6fa670edd38bba72179cc72501.jpg)
(3)总结:NOSQL数据库模型===>聚合模型:包括KV键值、Bson、列族、图形
①KV键值对(典型:新浪(BerkeleyDB+redis);美团(redis+tair);阿里、百度(memcache+redis))
②文档型数据库(bson格式(类似于json串的数据表达和描述)比较多,一般采用MongoDB)
③列存储数据库(按列存储数据,特点:方便存储结构化和半结构化数据、数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。)
④图关系数据库(一般都是存放关系:比如朋友圈社交网络、推荐系统等)![eb786a60eb78e83e5afef5abf772c8cce90.jpg](https://oscimg.oschina.net/oscnet/eb786a60eb78e83e5afef5abf772c8cce90.jpg)
四者比较:![fddf19ef9930107f7060920f456406c11f8.jpg](https://oscimg.oschina.net/oscnet/fddf19ef9930107f7060920f456406c11f8.jpg)
6、在分布式数据库中CAP原理CAP+BASE
(1)传统的关系型数据库需要具备ACID: 【注:ACID必须要全部具备】
原子性(A-Atomicity):整个事务中的所有操作,要么全部完成,要么全部不完成。
一致性(C-Consistency):在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
独立性(I-Isolation):若有两个事务在相同的时间内执行相同的功能,隔离性将确保每一事务在系统中认为只有该事务在使用系统。【串行化】
持久性(D-Durability):在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
(2)NOSQL非关系数据库需要具备CAP:
C(Consistency一致性):所有的节点上的数据时刻保持同步
A(Availability可用性):每个请求都能接受到一个响应,无论响应成功或失败
P(Partition tolerance分区容错):系统应该能持续提供服务,即使系统内部有消息丢失(分区) 【必须实现!】
(3)CAP只能3选2
一般的使用:![f12914433a04101bee408b3266262b63ba9.jpg](https://oscimg.oschina.net/oscnet/f12914433a04101bee408b3266262b63ba9.jpg)
(4)BASE:为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE=Basically Available (基本可用)+Soft state(软状态)+Eventually consistent(最终一致) 【即:相当于牺牲C,完成AP】
(5)分布式+集群简介
①分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。
②集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。
【集群=人多力量大】
③分布式系统:(distributed system):由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正式软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上,如:PC、工作站、局域网和广域网等。
转载于:https://my.oschina.net/pansy0425/blog/3073618
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)