MongoDB篇

1.什么是MongoDB?
MongoDB是一个文档数据库,提供好的性能,是一个非关系型数据库,采用BSON存储文档数据,BSON是一种类json的二进制的存储格式,简称Binary JSON ,相对于多了date类型和二进制数组;
2.什么是Nosql?什么时候要用Nosql?
Nosql 又称 not only sql ,泛指非关系型数据库,区别于关系型数据库,他们不保证关系型数据库的ACID特性;用访问网站例子来说,当很少人使用时,传统的关系型数据库完全没问题,但是当用户数量大幅增加时,关系型数据库会达到瓶颈状态,这时Nosql可以轻松处理,Nosql的读写速度要比关系型数据库快很多倍;
3.MongoDB有哪些索引?
单键索引 、复合索引 、多键索引 、全文索引 、hash索引 、地理空间索引;
4.MongoDB的存储结构?
MongoDB文档数据库结构分为四个层次,从小到大依次是:键值对,文档(document),集合(collection),数据库(database);
5.MongoDB的优点是什么?缺点是什么?
优点:
1. 业务经常变动,需要不时的添加字段,那么mongodb比较适合,关系型数据库添加字段的复杂度也还好
2. 嵌套文档,业务数据比较复杂,适合嵌套文档式存储,那么mongodb非常合适,这个关系型数据库比较难搞,虽然MySQL和pg也有文档存储,但MySQL的不成熟
3. upsert支持,查询速度也不慢
4. 高可用的副本集支持
5. 查询语法非常丰富,嵌套文档查询功能非常强大,不是重度用户可能不能理解
缺点:
1.不支持reload
2.不支持事务
3.MongoDB没有像mysql一样成熟的维护工具
6.MongoDB和mysql的区别是什么?
1.MongoDB属于非关系型数据库,Mysql属于关系型数据库
2.存储方式:MongoDB使用虚拟内存+持久化的方式,Mysql根据不同的引擎存储方式不同
虚拟内存+存储:使用内存映射文件在内存中创建一个数据文件,把文件映射到一个虚拟内存的区域,虚拟内存是一块抽象的内存地址,操作系统把所需的数据映射到这个地址空间(红栈),再把当前处理的数据映射到物理内存(灰栈),当某个进程访问某个数据时,如果内存不在虚拟内存中,OS从硬盘中把数据加载到虚拟内存和物理内存中
7.MongoDB的cluster的副本集
MongoDB的副本集书又自动故障恢复的主从集群,有一个Primary节点和一个或者多个Secondary节点组成,Primary节点写入数据,Secondary节点读取主机点的oplog复制信息,开始复制数据并且将oplog信息写入自己的oplog,如果某个操作失败,则备份节点停止从当前数据源复制数据,如果某个备份节点由于某些原因挂点了,当重新启动后,就会自动从oplog的最后一个操作开始同步,同步完成后,将信息写入自己的oplog,由于是复制操作是先复制数据,复制完成后再写入oplog,有可能相同的操作会同步两份,不过MongoDB在设计之初就考虑到这个问题,将oplog的同一个操作执行一次或者多次,与执行一次的效果是一样的。
当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步:
1.检查自己local库的oplog.rs集合找出最近的时间戳
2.检查Primary节点local库的oplog.rs集合,找出大于此时间戳的记录
3.将找到的记录插入到自己的oplog.rs集合中,并执行这些操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值