mongodb basic

22
基础篇 基础篇 { "name" : "MongoDB", "type" : "database", "about" : { "create" : 2007, "first_version" : 2010, "current_version" : 2015 }, "features" : ["open-source","document- oriented","sharding"] }

Upload: simplels

Post on 23-Jan-2017

371 views

Category:

Internet


6 download

TRANSCRIPT

Page 1: MongoDB Basic

基础篇基础篇{

"name" : "MongoDB", "type" : "database", "about" : { "create" : 2007, "first_version" : 2010, "current_version" : 2015

},"features" : ["open-source","document-

oriented","sharding"]}

Page 2: MongoDB Basic

• 初识 MongoDB•• 简介,• 术语,• 结构,• 3.0 特性,•

Page 3: MongoDB Basic

•初识 MongoDB•• 简介,• 术语,• 结构,• 3.0 特性,•

Page 4: MongoDB Basic

初识mongoDB

• 面向文档 (binary JSON)• schema free• 易扩展• 自动故障转移• 查询语言丰富 MQL• 使用内存映射文件(memory-mapped files)• -- i.e. read-through write-through memory caching.

• 支持地理空间索引(2d index), TTL索引• 单个文档大小限制 16M (1.8以前为4M)• 不支持事务• 不支持join 操作

Page 5: MongoDB Basic

初识mongoDB

• 锁粒度,<2.2 全局的读写锁, 2.2~2.6 1个DB1个锁, 3.0 MMAPv1 provides collection-level locking

• 对内存要求比较大,至少保证索引、热数据及系统开销都能装进内存;

• -- 如果可以 indexSize + storageSize <= RAM

• 需要较大的硬盘空间,MongoDB会回收被删除的数据块,但不会还给操作系统

• 每个collection都有一个默认的ObjectId;_id 可自定义,值不可变更

• 默认"_id" : ObjectId("513ff10eda6c71894416ad8e")

Page 6: MongoDB Basic

RDBMS MongoDB

Table, View ➜ Collection

Row ➜ Document

Index ➜ Index

Join ➜ Embedded Document

Foreign Key ➜ Reference

Partition ➜ Shard

初识mongoDB

术 语

Page 7: MongoDB Basic

初识mongoDB

1 Doc

Page 8: MongoDB Basic

初识mongoDB

结 构

Page 9: MongoDB Basic

mongoDB 3.0

• 新的用户模块• 新的存储引擎 — WiredTiger

document-Level Lockingcompression更高并发,更高写性能

• 开放插件式存储引擎API

Page 10: MongoDB Basic

• MongoDB Query Language•• insert,• remove,• update,• find,•

Page 11: MongoDB Basic

MongoDB Query Language

• insert• > use cloud• # 如果数据库不存在,则创建DB• > db.contact.insert({name : "小明"})• # 文本集写入记录,不需建表• > db.contact.insert([{_id:1002 ,name : "丽丽"},{name:"Jhon"},{name:"Jack",city:"sz"}])• # 可以一次写入多个文档• # 如果不指定 _id ,则使用默认的 ObjectId

• remove• > db.contact.remove({name:"Jhon"})• > db.contact.remove({})

Page 12: MongoDB Basic

MongoDB Query Language

• update (query,update,options)• > db.contact.update({_id:1001},{$set$set:{name:"王小明"}})• # $set 将字段值设定为指定值• > db.ids.update({_id:"contact"},{$inc$inc:{seq:1}})• # $inc 对数字的增减操作• > db.contact.update({_id:1001},{$rename$rename:{"uid":"uuid"}})• # $rename 字段重命名• > db.contact.update({},{$unset$unset:{test:""}}, {multi : true} )• # $unset 删除符合条件的test 字段• • SQL : MQL :

Page 13: MongoDB Basic

MongoDB Query Language

• find • > db.contact.find()• # 返回文本集contact 的所有文档及字段• > db.contact.find({uid:"b2cf"},{name:1})• # 返回 uid="b2cf" 的name 值• # SQL: select name from contact where uid = 'b2cf' ;• > db.contact.find({ts:{$gte:Timestamp(1429027200,0),$lt : Timestamp(1429100395,233)}}).limit(10)• # 返回unixtime时间范围内的10 个文档 • > db.contact.find({name : /^王/}).sort({ts:-1})• # 返回王姓的文档并按时间倒序 ~ like '王%';• > db.contact.find({name:{$in:["Jack","小明"]}})• # 返回name为"Jack" 和 "小明" 的文档

Page 14: MongoDB Basic

• Replica sets•• 什么是replica sets,• 结构,• Read preference modes,••

Page 15: MongoDB Basic

Replica sets

What's Replica Sets ?

• 多个mongod 实例组成的集群• 集群只有一个primary 节点• 所有写操作在primary 进行• 读可以在集群的任何数据节点• 数据通过replication同步到各个secondary 节点• 自动故障转移• 一个集群支持节点多达50个

Page 16: MongoDB Basic

Replica sets

结 构

Page 17: MongoDB Basic

Replica sets

Read Preference Modes

• 5 modes• -- primary [only, default]

• -- primaryPreferred

• -- secondary

• -- secondaryPreferred

• -- Nearest

Page 18: MongoDB Basic

••

• 数据集接近单个节点硬盘存储容量?

• 单台服务器内存不够用?

• 写操作频繁,磁盘IO达到极限?

Page 19: MongoDB Basic

Sharding

Page 20: MongoDB Basic

Sharding

• shard 保存了sharding集群的数据分片,通常是一个replica sets,数据分片以collection为单位.

• shard key collection数据分片的键值.

• chunks mongodb根据shard key将数据分成块,按照rang、hash或tag-aware规则将数据块储存到各个shard. 默认块大小为64M.

Page 21: MongoDB Basic

Sharding

• config server 保存了sharding集群元数据,如:分片的位置. 通常设置三个config server.

• mongoS • query router• 让sharding集群像一个整体• 缓存config server元数据

• auto-balancing ?

Page 22: MongoDB Basic

Thank you ~

http://weibo.com/tzhijunhttp://weibo.com/tzhijun