关系型数据库:
根据关系模型(“一对一”,“一对多”,“多对多”等,关系模型是二维表的模型),关系型数据库有oracle,mysql ,sql server
非关系型数据库:
根据非关系型模型(键值对:redis,memcache;列模式:hbase,文档模式:MongoDB)
比较:
- 查询速度:非关系性数据库快于关系型
- 安全:关系型安全
- 存储数据格式:关系型数据库是二维表,所以优于非关系型数据库
MongoDB介绍:
是文档型数据库:编码方式:(json,xml)
- 它是一个强大,灵活且易于扩展的通用性数据库,使用文档是一组键值对(key-value)
- 拥有这关系型数据库的关键能力:表达丰富的查询和辅助索引,强有一致性,可扩展性。
- NoSQL数据库技术:灵活的数据模型(与传统关系型数据库相比,现代的Nosql数据库提供了更为灵活的数据模型,可以方便的存储任何结构的数据,并且允许不停机的情况下修改Schema)、可扩展性(Nosql数据库更专注与扩展性,都有某种形式的分片或分区,这就使得Nosql可以再商用硬件上水平扩展,获得更高的吞吐量和低延时)和高性能部署(Nosql设计用于为持续高可用系统,为用户提供高质量的体验)
为什么出现:
MongoDB是属于非关系型数据库的一种,拥有一致性,可扩展型,也拥有固定的文件格式和编码方式的应用
MongoDB的存储引擎
存储引擎:负责处理什么数据结构存储数据2
在MongoDB复制集,可以多种存储并存,可以满足应用更为复杂的需求。
例如:In-memory存储引擎进行低延时的操作,同时使用基于磁盘的存储引擎完成持久化
Mongodb的架构
一主多从:官方建议至少3个节点组成副本集
Mongodb副本集
1、提供数据保护、负载均衡和容灾能力
2、节点心跳的检查,以检测和维护副本集
3、通过选举的机制完成故障切换
mongodb集群架构组成
1、路由服务
- 路由到对应shard服务器上的mongo
- 所有的请求都要通过mongos进行协调
- 去除应用程序的路由选择
- 可以理解成一个请求分发中心
如果路由服务发生故障怎么处理?
如果路由服务发生故障,会出现单点故障,通常要部署多个mongos请求服务
2、分片服务
分片是将一个副本集数据分别存储在不同的shard节点上(通过shard keys来选择不同的shard)
分片的优势:
- 实现负载均衡
- 提高访问效率
- 增强扩展性
3、配置服务
- 存储所有数据库元信息(路由、分片)的配置
- Mongos没有存储分配和路由信息
- 每次启动mongos都会读取配置服务
如果配置服务发生故障怎么处理?
如果配置服务发生故障,会导致元信息丢失,通常要部署多个配置服务器
Mongodb水平扩展
横向水平扩展从服务