NoSQL数据模型简介
以一个电商客户、订单、订购、地址模型来对比关系型数据库和非关系型数据库
●传统关系型数据库如何设计
●ER图(1:1、1:N、N:1)主外键等
●NOSQL如何设计
●BSON ()是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象
●两者对比,问题和难点
●问题和难点
●为什么用聚合模型来处理
●高并发的操作是不太建议用关联查询的,互联网公司用冗余数据来避免关联查询
●分布式事务是支持不了太多的并发的
聚合模型
●KV
●BSON
●列族
●顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一 列或者某几列的查询有非常大的IO优势。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/12fff/61b/0cb2868bf9482f95.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU1Njk2OA==,size_16,color_FFFFFF,t_70#pic_center)
●图形
![在这里插入图片描述](https://img8.php1.cn/3cdc5/12fff/61b/a61bef047406b8a9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU1Njk2OA==,size_16,color_FFFFFF,t_70#pic_center)
NoSQL数据库的四大分类
●KV
●新浪:BerkeleyDB + Redis
●美团:Redis + tair
●阿里、百度:memcache + Redis
●文档型数据库(bson格式比较多)
●CouchDB
●MongoDB
●MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
●MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
●列存储数据库
●Cassandra、HBase
●分布式文件系统
●图关系数据库
●它不是放图形的、放的是关系比如:朋友圈社交网络、广告推荐系统
●社交网络、推荐系统。专注于构建关系图谱
●Neo4j、InfoGrid
●四者对比
![在这里插入图片描述](https://img8.php1.cn/3cdc5/12fff/61b/388e2e4668160c47.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU1Njk2OA==,size_16,color_FFFFFF,t_70#pic_center)