MongoDB 简介 [email_address] weibo.com/wuda0112 [email_address]
MongoDB <ul><li>面向文档存储 </li></ul><ul><li>完整的索引支持  </li></ul><ul><li>复制 </li></ul><ul><li>自动分片 </li></ul><ul><li>丰富的基于文档的查询...
与 SQL 对比 RDBMS Document DBs Table Collection View / Row(s) JSON Document Index Index Join Embedding & Linking across docum...
与 mysql 数据库对比
与 mysql 数据库对比
MongoDB 存储 <ul><li>1. 模式自由 </li></ul><ul><li>2.bson 格式 </li></ul><ul><li>3. 支持的数据类型: </li></ul><ul><li>a.  字符串 </li></ul><...
索引 <ul><li>1. 基本索引 </li></ul><ul><li>db.collection.ensureIndex({j:1}   </li></ul><ul><li>2._id 索引 </li></ul><ul><li>3.  嵌入...
查询  query <ul><li>1. 基本查询 </li></ul><ul><li>db.users.find({'last_name': 'Smith'})   </li></ul><ul><li>2. 正则表达式查询 </li></ul...
查询 query <ul><li>5. 游标的一些方法 </li></ul><ul><ul><li>count() , limit() , skip() , snapshot() , sort() </li></ul></ul><ul><li>...
Map/Reduce <ul><li>1.MongoDB 的聚合工具。 </li></ul><ul><li>2.Mongodb 使用一个单独的进程来跑,这主要是因为 JavaScript  引擎的限制  </li></ul><ul><li>3....
副本 Replication
主从复制 <ul><li>1.Master/slave </li></ul><ul><li>主服务器配置: $ bin/mongod --master [--dbpath /data/masterdb/] </li></ul><ul><li>从...
副本集 Replica Sets <ul><li>1.  副本集就是有自动故障恢复功能的主从集群。 </li></ul><ul><li>2.  副本集的设置: </li></ul><ul><li>a  ./mongod --bpath=/nod...
副本集 <ul><li>3. 副本集中的节点 </li></ul><ul><li>1. 常规节点 </li></ul><ul><li>2. 被动节点 </li></ul><ul><li>3. 仲裁者节点 </li></ul><ul><li>4....
自动分片 <ul><li>1.MongoD 分片的基本思想是将集合切分成小块。 </li></ul><ul><li>2.mongos 进程 </li></ul><ul><li>3. 何时分片 </li></ul><ul><li>1. 机器磁盘不...
健壮的分片
GridFS <ul><li>1.GridFS 是一种在 MongoDB 中存储大二进制文件的机制。 </li></ul><ul><li>2. 为什么使用 GridFS? </li></ul><ul><ul><li>1. 利用 GridFS 可...
GridFS <ul><ul><li>2.List </li></ul></ul><ul><ul><li>$ ./mongofiles list </li></ul></ul><ul><ul><li>connected to: 127.0.0....
GridFS
GridFS
日志策略 <ul><li>1. 预分配日志文件 </li></ul><ul><li>2. 故障恢复 </li></ul><ul><li>3. 通过合并写操作提高吞吐性能 </li></ul>
Upcoming SlideShare
Loading in …5
×

Mongo简介

920 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
920
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 1.BSON 格式的三个主要目标: a. 效率 ,BSON 设计用来更有效的表示数据,占用更少的空间 b. 可遍历性,有些时候 BSON 牺牲了空间效率,换却更容易遍历的更是。利润,在字符串前加入其长度 c.BSON 的编码和解码速度非常快
  • 1.count,distinct,sum,groupby
  • 1. 1.6.x 版本不支持单机持久性,所以强烈建议使用复制功能 2. 复制可以做故障切换,数据集成,读扩展,热备份或者离线批处理数据源 3. 主从复制中,一个主节点可以对应至少一个从节点 4. 所有从节点都从主节点复制数据,目前还没有从从节点复制内容的机制(菊花链),原因是从节点不保存自己的 oplog
  • 1. 主从集群和副本集最大的区别就是副本集没有固定的“主节点” 2. 副本集与主从集群的异同: a. 副本集没有固定的主节点 b. 他们都有一个活跃节点和一个或多个备份节点
  • 1.Grid :电网,格子
  • Mongo简介

    1. 1. MongoDB 简介 [email_address] weibo.com/wuda0112 [email_address]
    2. 2. MongoDB <ul><li>面向文档存储 </li></ul><ul><li>完整的索引支持 </li></ul><ul><li>复制 </li></ul><ul><li>自动分片 </li></ul><ul><li>丰富的基于文档的查询 </li></ul><ul><li>Map/Reduce </li></ul><ul><li>GridFS </li></ul>
    3. 3. 与 SQL 对比 RDBMS Document DBs Table Collection View / Row(s) JSON Document Index Index Join Embedding & Linking across documents Partition Shard Partition Key Shard Key
    4. 4. 与 mysql 数据库对比
    5. 5. 与 mysql 数据库对比
    6. 6. MongoDB 存储 <ul><li>1. 模式自由 </li></ul><ul><li>2.bson 格式 </li></ul><ul><li>3. 支持的数据类型: </li></ul><ul><li>a. 字符串 </li></ul><ul><li>b. 数字 </li></ul><ul><li>c. 日期 </li></ul><ul><li>d. 数组 </li></ul><ul><li>e. 内嵌文档 </li></ul><ul><li>f. 二进制数据 </li></ul><ul><li>g.ObjectId </li></ul>
    7. 7. 索引 <ul><li>1. 基本索引 </li></ul><ul><li>db.collection.ensureIndex({j:1} </li></ul><ul><li>2._id 索引 </li></ul><ul><li>3. 嵌入式文档索引 </li></ul><ul><li>db.things.ensureIndex({&quot;address.city&quot;: 1}) </li></ul><ul><li>4. 复合索引 </li></ul><ul><li>db.things.ensureIndex({j:1, name:-1}); </li></ul><ul><li>5. 对数组索引 </li></ul><ul><li>6. 地理空间索引 </li></ul><ul><li>db.places.ensureIndex( { loc : &quot;2d&quot; } ) </li></ul>
    8. 8. 查询 query <ul><li>1. 基本查询 </li></ul><ul><li>db.users.find({'last_name': 'Smith'}) </li></ul><ul><li>2. 正则表达式查询 </li></ul><ul><li>db.customers.find( { name : { $regex : 'acme.*corp', $options: 'i' } } ) </li></ul><ul><li>3. 数组的查询 </li></ul><ul><li>db.things.find( { colors : “red” } ) </li></ul><ul><li>4. 嵌入式文档查询 </li></ul><ul><li>db.postings.find( { &quot;author.name&quot; : &quot;joe&quot; } ); </li></ul>
    9. 9. 查询 query <ul><li>5. 游标的一些方法 </li></ul><ul><ul><li>count() , limit() , skip() , snapshot() , sort() </li></ul></ul><ul><li>6. group(),distinct(),count() </li></ul><ul><li>7. 查询操作符 </li></ul><ul><li>$gt , $lt , $gte , $lte , $ne , $exists , $in , $nin , $or , $nor , $and …… </li></ul><ul><li>举例: </li></ul><ul><li>db.users.find({“userName”:{“$exists”:true}}) </li></ul>
    10. 10. Map/Reduce <ul><li>1.MongoDB 的聚合工具。 </li></ul><ul><li>2.Mongodb 使用一个单独的进程来跑,这主要是因为 JavaScript 引擎的限制 </li></ul><ul><li>3. 使用 Map/Reduce 的代价是速度。 </li></ul>
    11. 11. 副本 Replication
    12. 12. 主从复制 <ul><li>1.Master/slave </li></ul><ul><li>主服务器配置: $ bin/mongod --master [--dbpath /data/masterdb/] </li></ul><ul><li>从服务器配置: $ bin/mongod --slave --source <masterhostname>[:<port>] [--dbpath /data/slavedb/] </li></ul><ul><li>2. 配置项 </li></ul><ul><li>--only, --slavedelay, --fastsync, --autoresync, --oplogSize </li></ul>
    13. 13. 副本集 Replica Sets <ul><li>1. 副本集就是有自动故障恢复功能的主从集群。 </li></ul><ul><li>2. 副本集的设置: </li></ul><ul><li>a ./mongod --bpath=/node1 --port 10001 --replSet wuda/host_name:10002 </li></ul><ul><li> ./mongod --bpath=/node2 --port 10001 --replSet wuda/host_name:10001 </li></ul><ul><li>b. db.runCommand({“replSetInitiate”:{ </li></ul><ul><li>“ _id” : ”wuda”, </li></ul><ul><li>“ members”:[ </li></ul><ul><li>{ “_id” : 1, </li></ul><ul><li> “ host” :host_name:10001” </li></ul><ul><li>}, </li></ul><ul><li>{ “_id” : 1, </li></ul><ul><li> “ host” :host_name:10001” </li></ul><ul><li>}, </li></ul><ul><li>]}}) </li></ul>
    14. 14. 副本集 <ul><li>3. 副本集中的节点 </li></ul><ul><li>1. 常规节点 </li></ul><ul><li>2. 被动节点 </li></ul><ul><li>3. 仲裁者节点 </li></ul><ul><li>4. 故障切换和活跃节点选举 </li></ul><ul><li>优先级最高并且数据最新的服务器被选为活跃节点 </li></ul>
    15. 15. 自动分片 <ul><li>1.MongoD 分片的基本思想是将集合切分成小块。 </li></ul><ul><li>2.mongos 进程 </li></ul><ul><li>3. 何时分片 </li></ul><ul><li>1. 机器磁盘不够用 </li></ul><ul><li>2. 单个 mongod 进程已经不能满足写数据的性能需求了 </li></ul><ul><li>3. 想将大量的数据房子内存中提高性能 </li></ul><ul><li>4. 片键 </li></ul><ul><li>1. 递增片键还是随机片键? </li></ul><ul><li>2. 片键对操作的影响 </li></ul>
    16. 16. 健壮的分片
    17. 17. GridFS <ul><li>1.GridFS 是一种在 MongoDB 中存储大二进制文件的机制。 </li></ul><ul><li>2. 为什么使用 GridFS? </li></ul><ul><ul><li>1. 利用 GridFS 可以简化需求。因为如果已经用了 MongoDB , GridFS 就可以不需要使用独立的文件存储架构。 </li></ul></ul><ul><ul><li>2.GridFS 会直接利用已经建立的复制或分片机制。 </li></ul></ul><ul><ul><li>3.GridFS 可以避免用于存储用户上传内容的文件系统出现的某些问题,比如, GridFS 在同一个目录下放置大量文件是没有任何问题的。 </li></ul></ul><ul><ul><li>4.GridFS 不产生磁盘碎片。 </li></ul></ul><ul><li>3. 基本操作 </li></ul><ul><li>1.put </li></ul><ul><li>$ ./mongofiles put libmongoclient.a </li></ul><ul><li>connected to: 127.0.0.1 </li></ul><ul><li>done! </li></ul>
    18. 18. GridFS <ul><ul><li>2.List </li></ul></ul><ul><ul><li>$ ./mongofiles list </li></ul></ul><ul><ul><li>connected to: 127.0.0.1 </li></ul></ul><ul><ul><li>libmongoclient.a 12000964 </li></ul></ul><ul><ul><li>3.get,search,delete </li></ul></ul><ul><li>4. 内部原理 </li></ul><ul><li>GridFS 的一个基本思想就是可以讲大文件分成很多块,每块昨晚一个单独的文档存储,这样就能存储大文件了。 </li></ul>
    19. 19. GridFS
    20. 20. GridFS
    21. 21. 日志策略 <ul><li>1. 预分配日志文件 </li></ul><ul><li>2. 故障恢复 </li></ul><ul><li>3. 通过合并写操作提高吞吐性能 </li></ul>

    ×