- 1、本文档共69页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Mongodb分享
李响
2015-07-17
1. 背景
2. MongoDB入门
3. 索引
4. 复制
5. 分片
6. 管理与监控
7. 使用优化案例
主要内容
1.背景
1.1 从集中式到分布式
1.2 从sql到nosql
1.3 分布式一致性问题
1.4 CAP和BASE理论
1.1 从集中式到分布式
集中式的问题:
计算、存储能力瓶颈
单点问题
分布式的问题:
通信异常
网络分区
三态
节点故障
一致性
1.2 从SQL到NoSQL
SQL
建立在严格的关系模型基础之上,通常支持复杂的事务操作,提供严格的数据一致性、完整性约束,并且支持关联查询等。
复杂事务,关联查询等特性影响读写性能,同时限制了关系型数据库的分布式扩展能力。
NoSQL
non-relational
not only sql
是对SQL的补充:
高并发读写
海量数据
高可扩展和高可用性
还无法替代SQL:
复杂事务,严格的一致性
读写实时性
join
与SQL不同,NoSQL没有统一的标准,种类繁多(key-value,列式,文档,图),根据业务选择适合的
1.3 分布式一致性问题
强一致性
弱一致性
…
最终一致性
鱼和熊掌:分布式系统中数据一致性和系统性能之间的关系
1.4 CAP和BASE理论
CAP
C:Consistency
A:Availability
P:Partition?tolerance
分布式系统中,P是基础,所以
一般只能在C、A之间进行取舍。
MongoDB处于哪一部分?
BASE
Basically?Available,Soft?state,Eventually?consistent
2.MongoDB入门
2.1 什么是MongoDB
2.2 存储引擎与版本选择
2.3 mongo shell
2.4 mongodb数据模型
2.5 数据类型
2.6 bson
2.7 GridFS
2.8 模式设计
2.9 CRUD
2.1 什么是MongoDB
MongoDB是面向文档的,无模式(schema-less)的,支持二级索引,支持冗余、自动故障转移,支持数据分片、负载均衡,易扩展,能为海量数据提供支撑的非关系型数据库。
MongoDB不支持跨多个文档的复杂事务,但保证单文档操作原子性。
MongoDB不支持联接(join)。
MongoDB不支持MVCC(3.x wiredTiger引擎支持)。
2.2 存储引擎
版本2.8(3.0)开始支持插件式存储引擎
MMAPv1
WiredTiger(since 3.0)
2.2 存储引擎-MMAPv1(1)
读写锁
不支持MVCC
Version 2.2 :
只支持进程级锁,一个Mongod实例一个锁。
2.2 ≤ Version 2.8 :
支持库级锁,一个db一把锁。
3.0.0 ≤ Version
支持 collection 级别的锁。
内存
内存映射文件
交由操作系统管理,不能
手动配置管理
无强制内存量要求
缓存索引、热数据等
2.2 存储引擎-MMAPv1(2)
Journal日志
Journal日志,是MongoDB的预写日志WAL(类似Mysql的Redo log)。
因为Journal日志文件是磁盘上连续分配的空间,MongoDB在运行时通过顺序追加的方式记录,通过顺序IO来改善写性能。同时,后台会定时刷写Journal日志文件以将写操作持久化到数据文件。通过这种两次写的方式,当Mongodb因为一次非正常退出(比如崩溃),重启mongod进程后会根据journal下的文件来恢复数据以达到数据一致,防止数据丢失。同时,一次正常的退出时MongoDB会刷写并删除journal目录下所有文件。
journal除了故障恢复的作用之外,还可以提高写入的性能,通过批量提交(batch-commit)的方式减少IO次数,一般默认100ms刷新一次到journal,可通过下面参数修改:
mitIntervalMs
值越低,刷新输出频率越高,journal的持久性也就越高(故障意外情况下丢失的数据越少),但同时意味着更多的磁盘IO。
2.0以上版本默认开启的,可以通过nojournal = true 或--nojournal关闭,但建议开启。
Journal文件是以“j._”开头命名的,且是append only的,如果1个journal文件满了1G大小,mongodb就会新创建一个journal文件来使用,一旦某个journal文件所记载的写操作都被使用过了,mongodb就会把这个journal文件删除。通常在journal文件所在的文件夹下,只会存在2~3个journal文件,除非你使用mongodb每秒都写入大量的数据。
使用 smallf
您可能关注的文档
- 船舶与动力装置复习思考题范例.doc
- keyong1汉服研究报告.pptx
- LC-MS定量研究报告.pptx
- 常见压铸件缺陷解决方法范例.doc
- Lect06GDI与图形绘制[V3]研究报告.pptx
- LED屏周边设备及所用软件研究报告.pptx
- 船舶种类的范例.ppt
- 党建工作汇报模板范例.ppt
- 船厂工人实用英语范例.doc
- 船的百科知识范例.ppt
- 2025年中国铸管沥青漆喷涂机市场调查研究报告.docx
- 2025至2031年中国聚四氟乙割管料行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国屏蔽箱行业投资前景及策略咨询研究报告.docx
- 2025年中国B级电源电涌保护器市场调查研究报告.docx
- 2025至2031年中国陶瓷印章行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国保冷材料行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国金彩立雕玻璃行业投资前景及策略咨询研究报告.docx
- 2025至2030年中国机箱螺母柱数据监测研究报告.docx
- 2025至2030年中国小GS管装饰头数据监测研究报告.docx
- 2025至2030年中国气动电阻焊机数据监测研究报告.docx
文档评论(0)