MongoDB入门到精通-PPT版.pdf
文本预览下载声明
MongoDB技术分享
@zhangyu
什么是MongoDB?
为什么我会使⽤它?
MongoDB是什么?
{name:’mongo’,type:’DB’}
MongoDB (from “humongous”)
MongoDB是⼀个开源、可扩展、⾼性能、⾯
向⽂档⽂的数据库,⽤C++编写。
浅探原理
内存映射存储引擎
MongoDB采⽤内存⽂件映射引擎(MMAP)将⽂件映射
到进程空间,当查询某块数据时操作系统会以Page⽅式
把这块数据加⼊物理内存。写⼊数据时,会先把数据保存
到内存中,然后Flush⼀次进⾏持久化存储。MongoDB中
默认每分钟Flush⼀次。这部分的管理⼯作由操作系统完
成。
客户端 内存 硬盘
浅探原理
数据⽂件 DBname.0, DBname.1, DBname.2 …
DBname.0
DBname.1
DBname.2
DBname.3
⺫录:
1. ⾯向⽂档存储(Document-Oriented Storage)
2. 全索引⽀持(Full Index Support)
3. 复制⾼可⽤性(Replication High Availability )
4. ⾃动分⽚(Auto-Sharding)
5. 查询(Querying)
6. Map / Reduce
7. GridFS
⾯向⽂档存储 (Document-Oriented Storage)
⽂档是什么?
{name:’zhangyu’, email:’zhangyuu@gall.me’}
看起来是JSON 其实是BSON
⼆进制编码序列化的JSON扩展
{hello: world}
\x16\x00\x00\x00\x02hello\x00
\x06\x00\x00\x00world\x00\x00
优点:轻巧、⾼效、灵活
缺点:BSON的开销在序列化上
BSON是JSON扩展
JSON表现⼒有限,因为只有类型:
null 、布尔、数字、字符串、数组、对象
BSON扩展了类型:
时间、正则表达式、函数…
BSON是JSON扩展
⽇期:{ “time” : new Date() }
正则表达式:{“regex” : /test/ }
函数:{“function” : function(){/**/} }
……
/manual/reference/bson-types/
{
//传统
“Status”:0,
//数组,包含2个元素
“Messages”:[
“0”,
“1”
],
// 内嵌⽂档
“ResponseBody”:{
“name”:“zhangyu” ,
“email” :[
“zhangyuu@gall.me” ,
“uuzhangyu@”
]
}
//Java newDate()
“Date”:ISODate(2013-11-25T17:32:45.427+-800)
}
BSON是JSON扩展
NULL 没有值
Boolean true、false
数字 仅⽀持64位浮点数,其他类型的数字会⾃动转化为此格式
字符串 ⽀持UTF-8字符集
⽇期 存储标准纪元开始的毫秒数,不含时区 new Date();
显示全部