SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Downloaden Sie, um offline zu lesen
 NO sql
 NO relational
 NO joins
 NO ORM
 NO complex transactions
   海量数据
   高并发
   高可用
   复杂度
   非结构化数据
   需求变化
   Data Model
     1,2,3范式
     tree、master/detail、relation…
   Objects != Data
     ORM
     DAL
   Key-value
     Memcached、Redis
   Graph Databases
     Neo4j
   Column Families
     BigTable,HBase,cassandra
   Document
     CouchDB,mongoDB
   酸 ACID
     atomicity, consistency, isolation, durability
   碱 BASE
     Basically Available, Soft-state, Eventually
     Consistent
 Consistency (一致性)
 Availability (可用性)
 Partition tolerance (分区容忍性)

一个分布式系统不可能同时满足这三个需求
   最多只能同时满足两个(AP/CP)
Memory is the new disk,
disk is the new tap
-Jim Gray
function map(fn, a){                 function reduce(fn, a, init){
   for (i = 0; i < a.length; i++){     var s = init;
     a[i] = fn(a[i]);                  for (i = 0; i < a.length; i++)
                                            s = fn( s, a[i] );
    }                                  return s;
}                                    }

(Joel on Software)
   NoSQL Databases: Why, what and when
   NoSQL生态系统
http://www.mongodb.org/
   Document-oriented
   Rich, document-based queries
   Full Index Support
   Replication & High Availability
   Sharding
   GridFS
   Map/Reduce
   BSON everywhere
   Memory Mapped Data Files
   http://try.mongodb.org/
   mongod
     mongodb.conf
   mongo
   mongos
   mongostat
   mongoexportmongoimport
   mongodumpmongorestore
   默认数据存储路径是 /data/db,
   默认端口 27017
   默认 HTTP 端口 28017
   日志
     --logpath、--logappend、--verbose、--cpu
   一个.ns文件和n个数据文件
   数据文件大小2倍倍增
   单数据文件最大2G
   显示创建
   不能删除对象
   方便传输
   高效
   通用




           http://bsonspec.org
   每个BSON对象大小不能超过4MB
   字段名不能以”$”开头;不能包含”.”
   “_id”是系统保留的字段
> help
   4e2647e8 0fe07f 1260 54caf4
     Timestamp + Machineid + Processid + Counter

一个对象被插入到数据库中时,如果它没有ID,会自动生
 成一个”_id”字段,为24位16进制数。
   <, <=, >, >=      Regular Expressions
   $all
   $exists           Embedded Object Search
   $mod              JavaScript Expressions
   $ne               Special operators
   $in
   $nin              Explain()
   $nor
   $or
   $and
   $size
   $type
   Count
     db.characters.find({armor:{$gt:1800}}).count()
   Limit
   Skip ()
     db.characters.find({armor:{$gt:1800}}).skip(10).limit(1)
   Sort
     db.characters.find().sort({armor:-1}).limit(3)
     db.characters.find().sort({$natural:-1}).
   B Tree,支持geospatial index
   影响写速度,占用空间
   默认索引:_id
   索引顺序影响是否用到索引
   索引中缺少的字段为null
   explain()查看执行计划
   索引保存在 system.indexes
   索引大小 db. characters.totalIndexSize()
   创建索引 db.characters.ensureIndex(key_pattern, options)
     选项: unique; dropDups ; background
   查看索引 db.characters.coll.getIndexes()
   删除索引 db.characters.dropIndexes()
   重建索引 db.characters.reIndex()
   Udate(criteria, objNew, upsert, multi)
   Save()
   支持原子操作tomic
   不支持传统事务模型(rollback??)
   findAndModify (<options> } )
     find, modify, and return
   db.colname’.remove({…})
   db.eval(…);
   http://localhost:28017/_commands
   db.runCommand( {
     <commandname>: <value> [, options] } );
   db.commandHelp("datasize")
   Http Console
     http://localhost:28017/
   mongostat
   db.serverStatus()
   db.stats()、db.colname.stats()
   db.colname.validate()
   系统监控
     memory、cpu、IO
   setProfilingLevel(lvl, <ms>)
     0: none
     1: time-based(默认100ms)
     2: all


   db.system.profile.find()
   mongod --repair
   db.repairDatabase();
   mongod --journal
     version 1.9.2+64-bit默认开启
     group commit
   db.colname.validate();
   Master
   Master/slave
     arbiterOnly
   Replica sets
     db.printReplicationInfo()
     db.printSalveReplicationInfo()
     oplog(capped collection,规划大小)
   Params
     w: number of replicas to write to
     wtimeout: time to wait for acknowledgements
     fsync: flush to disk
   Unique Index
   空间成本
   维护
   failover
   Single
   One – Many & Many - Many
     Embedded document(4M的限制)
     Normalized
   Tree
   Javascript执行性能
   db.addUser
    ("username", "password")
   db.system.users.remove
    ({user: username})
   system.namespaces
   system.indexes
   system.profile
   system.users
   local.sources
   --rest选项
   备份
     mongodump、mongorestore
     db.copyDatabase、db.cloneDatabase
   Lock, Snapshot and Unlock
     admin.runCommand({fsync : 1, lock : 1})
     db.$cmd.sys.unlock.findOne()
   缺少传统数据库丰富的还原机制
   队列
   执行计划
     db.colname.find({..}).expliain()
   减小json数据的大小(使用较短的key)
   优化索引、索引全部放入内存
   优化document schema设计
   db.eval() 在服务端执行某些操作
   用BinData存储UUID格式的数据
     36bytes->16bytes
   使用连接池,修改每个连接的stack size
     默认10M
   预分配空间、减少内存和磁盘碎片
     删除数据--不收回碎片
   NoSQL注入
   --auth 启动参数
   --noscripting启动参数
   每个链接一个线程
   单线程执行Map/Reduce
   一个写线程
   磁盘空间
   内存
   维护
   事务
   mongo-csharp-driver (Github)
   CSharp Driver Tutorial
   MongoDB Deployment Strategies
   MongoDB开发应用实践
   Optimizing MongoDB: Lessons Learned at
    Localytics
   Chrome扩展Mongo Live
   MongoDB部署与运维
   10 Key MongoDB Performance Indicators
   MongoDB Administration
Thanks
文中大部分资料来源于网络

Weitere ähnliche Inhalte

Was ist angesagt?

Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1Zianed Hou
 
Oracle Data Buffer Cache
Oracle Data Buffer CacheOracle Data Buffer Cache
Oracle Data Buffer CacheSky Jian
 
几种Nosql介绍
几种Nosql介绍几种Nosql介绍
几种Nosql介绍taotao1240
 
大话redis设计实现
大话redis设计实现大话redis设计实现
大话redis设计实现rfyiamcool
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程Lixun Peng
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redispaitoubing
 
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复Lixun Peng
 
Hadoop基础及hive入门
Hadoop基础及hive入门Hadoop基础及hive入门
Hadoop基础及hive入门haiwang
 
SSDB 入门基础
SSDB 入门基础SSDB 入门基础
SSDB 入门基础ideawu
 
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and TutorialHo Kim
 
主機管理基本指令練習(三)
主機管理基本指令練習(三)主機管理基本指令練習(三)
主機管理基本指令練習(三)K- Peggy
 
mysql总结
mysql总结mysql总结
mysql总结haiwang
 
Introduction to pig&zookeeper
Introduction to pig&zookeeperIntroduction to pig&zookeeper
Introduction to pig&zookeeperGuangyao Cheng
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则wensheng wei
 
Shell奇技淫巧
Shell奇技淫巧Shell奇技淫巧
Shell奇技淫巧David Xie
 
DataNode communicate with NameNode
DataNode communicate with NameNode DataNode communicate with NameNode
DataNode communicate with NameNode Jiang Yu
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220Jinrong Ye
 
主機管理基本指令練習(四)
主機管理基本指令練習(四)主機管理基本指令練習(四)
主機管理基本指令練習(四)K- Peggy
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题WASecurity
 

Was ist angesagt? (20)

Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1
 
Oracle Data Buffer Cache
Oracle Data Buffer CacheOracle Data Buffer Cache
Oracle Data Buffer Cache
 
几种Nosql介绍
几种Nosql介绍几种Nosql介绍
几种Nosql介绍
 
大话redis设计实现
大话redis设计实现大话redis设计实现
大话redis设计实现
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redis
 
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
 
Hadoop基础及hive入门
Hadoop基础及hive入门Hadoop基础及hive入门
Hadoop基础及hive入门
 
SSDB 入门基础
SSDB 入门基础SSDB 入门基础
SSDB 入门基础
 
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and Tutorial
 
主機管理基本指令練習(三)
主機管理基本指令練習(三)主機管理基本指令練習(三)
主機管理基本指令練習(三)
 
mysql总结
mysql总结mysql总结
mysql总结
 
Introduction to pig&zookeeper
Introduction to pig&zookeeperIntroduction to pig&zookeeper
Introduction to pig&zookeeper
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则
 
Shell奇技淫巧
Shell奇技淫巧Shell奇技淫巧
Shell奇技淫巧
 
DataNode communicate with NameNode
DataNode communicate with NameNode DataNode communicate with NameNode
DataNode communicate with NameNode
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220
 
主機管理基本指令練習(四)
主機管理基本指令練習(四)主機管理基本指令練習(四)
主機管理基本指令練習(四)
 
Redis use cases
Redis use casesRedis use cases
Redis use cases
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题
 

Ähnlich wie MongoDB for C# developer

Mongo db技术交流
Mongo db技术交流Mongo db技术交流
Mongo db技术交流liuts
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享晓锋 陈
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsHo Kim
 
Redis 介绍 -田琪
Redis 介绍 -田琪Redis 介绍 -田琪
Redis 介绍 -田琪Shaoning Pan
 
Cassandra简介.ppt
Cassandra简介.pptCassandra简介.ppt
Cassandra简介.pptjames tong
 
20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_ricoRico Chen
 
MongoDB Basic
MongoDB BasicMongoDB Basic
MongoDB Basicsimplels
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南HonestQiao
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010Chuanying Du
 
面向开发的前端性能优化
面向开发的前端性能优化面向开发的前端性能优化
面向开发的前端性能优化li qiang
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步WASecurity
 
Altibase管理培训 安装篇
Altibase管理培训 安装篇Altibase管理培训 安装篇
Altibase管理培训 安装篇小新 制造
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaknuthocean
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務台灣資料科學年會
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Chun-Min Chang
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in RChun-Ming Chang
 

Ähnlich wie MongoDB for C# developer (20)

Mongo db技术交流
Mongo db技术交流Mongo db技术交流
Mongo db技术交流
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 
Glider
GliderGlider
Glider
 
Redis 介绍 -田琪
Redis 介绍 -田琪Redis 介绍 -田琪
Redis 介绍 -田琪
 
Cassandra简介.ppt
Cassandra简介.pptCassandra简介.ppt
Cassandra简介.ppt
 
20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico
 
MongoDB Basic
MongoDB BasicMongoDB Basic
MongoDB Basic
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
 
面向开发的前端性能优化
面向开发的前端性能优化面向开发的前端性能优化
面向开发的前端性能优化
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步
 
Altibase管理培训 安装篇
Altibase管理培训 安装篇Altibase管理培训 安装篇
Altibase管理培训 安装篇
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
 

MongoDB for C# developer

  • 1.
  • 2.  NO sql  NO relational  NO joins  NO ORM  NO complex transactions
  • 3. 海量数据  高并发  高可用  复杂度  非结构化数据  需求变化
  • 4.
  • 5. Data Model  1,2,3范式  tree、master/detail、relation…  Objects != Data  ORM  DAL
  • 6. Key-value  Memcached、Redis  Graph Databases  Neo4j  Column Families  BigTable,HBase,cassandra  Document  CouchDB,mongoDB
  • 7.
  • 8.
  • 9. 酸 ACID  atomicity, consistency, isolation, durability  碱 BASE  Basically Available, Soft-state, Eventually Consistent
  • 10.  Consistency (一致性)  Availability (可用性)  Partition tolerance (分区容忍性) 一个分布式系统不可能同时满足这三个需求 最多只能同时满足两个(AP/CP)
  • 11.
  • 12. Memory is the new disk, disk is the new tap -Jim Gray
  • 13.
  • 14.
  • 15. function map(fn, a){ function reduce(fn, a, init){ for (i = 0; i < a.length; i++){ var s = init; a[i] = fn(a[i]); for (i = 0; i < a.length; i++) s = fn( s, a[i] ); } return s; } } (Joel on Software)
  • 16.
  • 17. NoSQL Databases: Why, what and when  NoSQL生态系统
  • 19. Document-oriented  Rich, document-based queries  Full Index Support  Replication & High Availability  Sharding  GridFS  Map/Reduce  BSON everywhere  Memory Mapped Data Files
  • 20.
  • 21.
  • 22.
  • 23. http://try.mongodb.org/
  • 24. mongod  mongodb.conf  mongo  mongos  mongostat  mongoexportmongoimport  mongodumpmongorestore
  • 25. 默认数据存储路径是 /data/db,  默认端口 27017  默认 HTTP 端口 28017  日志  --logpath、--logappend、--verbose、--cpu
  • 26. 一个.ns文件和n个数据文件  数据文件大小2倍倍增  单数据文件最大2G
  • 27.
  • 28. 显示创建  不能删除对象
  • 29. 方便传输  高效  通用 http://bsonspec.org
  • 30. 每个BSON对象大小不能超过4MB  字段名不能以”$”开头;不能包含”.”  “_id”是系统保留的字段
  • 32.
  • 33. 4e2647e8 0fe07f 1260 54caf4  Timestamp + Machineid + Processid + Counter 一个对象被插入到数据库中时,如果它没有ID,会自动生 成一个”_id”字段,为24位16进制数。
  • 34.
  • 35. <, <=, >, >=  Regular Expressions  $all  $exists  Embedded Object Search  $mod  JavaScript Expressions  $ne  Special operators  $in  $nin  Explain()  $nor  $or  $and  $size  $type
  • 36.
  • 37.
  • 38. Count  db.characters.find({armor:{$gt:1800}}).count()  Limit  Skip ()  db.characters.find({armor:{$gt:1800}}).skip(10).limit(1)  Sort  db.characters.find().sort({armor:-1}).limit(3)  db.characters.find().sort({$natural:-1}).
  • 39. B Tree,支持geospatial index  影响写速度,占用空间  默认索引:_id  索引顺序影响是否用到索引  索引中缺少的字段为null  explain()查看执行计划
  • 40.
  • 41.
  • 42. 索引保存在 system.indexes  索引大小 db. characters.totalIndexSize()  创建索引 db.characters.ensureIndex(key_pattern, options)  选项: unique; dropDups ; background  查看索引 db.characters.coll.getIndexes()  删除索引 db.characters.dropIndexes()  重建索引 db.characters.reIndex()
  • 43.
  • 44. Udate(criteria, objNew, upsert, multi)  Save()  支持原子操作tomic  不支持传统事务模型(rollback??)
  • 45.
  • 46. findAndModify (<options> } )  find, modify, and return
  • 47. db.colname’.remove({…})
  • 48. db.eval(…);
  • 49. http://localhost:28017/_commands  db.runCommand( { <commandname>: <value> [, options] } );  db.commandHelp("datasize")
  • 50.
  • 51. Http Console  http://localhost:28017/  mongostat  db.serverStatus()  db.stats()、db.colname.stats()  db.colname.validate()  系统监控  memory、cpu、IO
  • 52. setProfilingLevel(lvl, <ms>)  0: none  1: time-based(默认100ms)  2: all  db.system.profile.find()
  • 53. mongod --repair  db.repairDatabase();  mongod --journal  version 1.9.2+64-bit默认开启  group commit  db.colname.validate();
  • 54. Master  Master/slave  arbiterOnly  Replica sets  db.printReplicationInfo()  db.printSalveReplicationInfo()  oplog(capped collection,规划大小)
  • 55.
  • 56.
  • 57. Params  w: number of replicas to write to  wtimeout: time to wait for acknowledgements  fsync: flush to disk
  • 58. Unique Index  空间成本  维护  failover
  • 59. Single  One – Many & Many - Many  Embedded document(4M的限制)  Normalized  Tree
  • 60. Javascript执行性能
  • 61.
  • 62. db.addUser ("username", "password")  db.system.users.remove ({user: username})
  • 63. system.namespaces  system.indexes  system.profile  system.users  local.sources
  • 64. --rest选项
  • 65. 备份  mongodump、mongorestore  db.copyDatabase、db.cloneDatabase  Lock, Snapshot and Unlock admin.runCommand({fsync : 1, lock : 1}) db.$cmd.sys.unlock.findOne()  缺少传统数据库丰富的还原机制  队列
  • 66. 执行计划  db.colname.find({..}).expliain()  减小json数据的大小(使用较短的key)  优化索引、索引全部放入内存  优化document schema设计  db.eval() 在服务端执行某些操作  用BinData存储UUID格式的数据  36bytes->16bytes  使用连接池,修改每个连接的stack size  默认10M  预分配空间、减少内存和磁盘碎片  删除数据--不收回碎片
  • 67. NoSQL注入  --auth 启动参数  --noscripting启动参数
  • 68. 每个链接一个线程  单线程执行Map/Reduce  一个写线程
  • 69. 磁盘空间  内存  维护  事务
  • 70. mongo-csharp-driver (Github)  CSharp Driver Tutorial
  • 71. MongoDB Deployment Strategies  MongoDB开发应用实践  Optimizing MongoDB: Lessons Learned at Localytics  Chrome扩展Mongo Live  MongoDB部署与运维  10 Key MongoDB Performance Indicators  MongoDB Administration
  • 72.
  • 73.