【NoSQL】NoSQL入门和概述 - 笔记
NoSQL入门和概述
BSON
BSON 是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式,能用来表示简单数据结构、关联数组(MongoDB中称为“对象”或“文档”)以及MongoDB中的各种数据类型。BSON之名缘于JSON,含义为Binary JSON(二进制JSON)。
优点:高并发的操作是不太建议有JOIN关联查询的,互联网公司用冗余数据来避免关联查询。分布式事务有多个库,是支持不了太多的并发的。使用NoSQL可以避开大量的JOIN关联查询。
聚合模型(区分于关系型数据库的int, varchar, …)
- KV键值对
- BSON
- 列族
- 图形
NoSQL数据库的四大分类
现在一些小公司的互联网技术,是一线互联网员工跳槽带出来的熟练技术,成为小公司的技术核心骨干,因为小公司试错成本较低,希望直接使用成熟可靠的技术/团队。大公司有比较大的试错空间,自己研究新技术。所以如果大公司用什么技术,慢慢地,这些技术就会流行起来。
KV键值:典型介绍
- 新浪:BerkeleyDB+redis
- 美团:redis+tair
- 阿里、百度:memcache+redis
文档型数据库(bson格式比较多)
- CouchDB
- MongoDB:是一个基于分布式文件存储的数据库,C++编写,是一个介于关系型数据库与非关系型数据库之间的产品。可以看做是MySQL++
列存储数据库
- Cassandra,Hbase:Hadoop使用
- 分布式文件系统
图关系数据库:不是存放图片的,放的是关系。比如:朋友圈社交网络、广告推荐系统等。专注于构建关系图谱
- Neo4J,Infogrid
四者对比
在分布式数据库中 CAP 原理 CAP+BASE
新技术都是在老技术上继承下来的
传统的ACID分别是什么?原子性、一执行、独立性、持久性
CAP:强一致性、可用性、分区容错性
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。
而由于当前的网络硬件肯定会出现延迟丢包等问题,所以:P - 分区容忍性 是我们必须要实现的
所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点
- C:强一致性(例如,点赞数、评论数是否准确)
- A:高可用性(例如,网站不能挂)
- P:分布式容忍性(必须要有)
CA:传统Oracle数据库
AP:大多数网站架构的选择(弱一致性+AP)
CP:Redis、MongoDB
Redis的作用是帮MySQL,Oracle减负
一致性与可用性的抉择
比如,发一条微博之后,过几秒粉丝才能看到;但是自己能看到自己的(首先保证:读己之所写),但是别的小伙伴要等数据库传一下,实现强一致。
BASE
为了取得最终的一致性(双十一当天可能统计不准,但过几天一定要达到最终准确。)
分布式 + 集群简介
负载均衡:比如有多个tomcat,不同的请求分发给不同的tomcat处理