文档介绍:superwen
MongoDB培训
第一部分 MongoDB简介
2
3
MongoDB特性
MongoDB是一个可扩展、高性能的下一代数据库,它的特点是高性能、易部署、易使用、存储数据非常方便,主要特性有:
1、面向文档存储,json格式的文档易读,高效。
2、模式自由,支持动态查询、完全索引,无模式。
3、高效的数据存储,效率提高。
4、支持复制和故障恢复。
5、以支持云级别的伸缩性,支持水平的数据库集群,可动态添加额外的服务器
4
MongoDB工作方式
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB同样也是由数据库(database) 、集合(collection)、文档对象(document)三个层次组成。
文档类似于json的键值对。{“name”: ”jone”,”age”: 13}
集合一组文档的集合。一个集合下的稳定无模式限制。
提问:既然是这样为什么还会有多个集合?
注意:集合命名不能为空,\0,,不能含有$
数据库命名小写不能含有空格,$ \ / \0等
5
在32位系统上,。
单个文档大小限制为 16 M
锁粒度太粗,MongoDB使用的是一把全局的读写锁,详见这里
不支持join操作和事务机制,这个确实是非MongoDB要做的领域
对内存要求比较大,至少要保证热数据(索引,数据及系统其它开销)都能装进内存
用户权限方面比较弱,将机器部署在安全的内网环境中,尽量不要用权限
MapReduce在单个实例上无法并行,可用Auto-Sharding实现。是由JS引擎的限制造成的。
MapReduce的结果无法写入到一个被Sharding的Collection中,
对于数组型的数据操作不够丰富
MongoDB的局限与不足
6
MongoDB 支持的语言
7
谁在使用MongoDB
8
null
布尔 ture|false
整数 123
浮点
字符串“hello world”
对象ID 用 new ObjectId()来申明。
日期用 new Date()来申明
时间戳
数组[“apple”,”blanan”,”pear”]
内嵌文档{“username”: “jone”, “age”: 13, “contact”: {“home”:”123”,”moblie”:”456”}}
RegExp 正则表达式/[a-z]/
MongoDB数据类型
9
MongoDB的ObjectId
不同的机器都能用全局唯一的同种方法方便的生成它。
ObjectId使用12字节的存储空间,其生成方式如下:
4e931cb6edcd881e1900017f
时间戳机器ID PID 计数器
时间戳保证秒级唯一,机器ID保证设计时考虑分布式,避免时钟同步,PID保证同一台服务器运行多个mongod实例时的唯一性,最后的计数器保证同一秒内的唯一性。
第二部分 MongoDB安装
10