MongoDB For Oracle DBA & Developer


www.dbdao.com 引导式IT在线 教育 www.dbdao.com 引导式IT在线 教育 MongoDB For Oracle DBA & Developer 刘相兵 Maclean Liu www.dbdao.com 引导式IT在线 教育 议程 • MongoDB For Oracle DBA & Developer – MongoDB的历史和特点 – MongoDB与Oracle特性比较 – MongoDB与Oracle学习曲线比较 – MongoDB与Oracle学习方法推荐 www.dbdao.com 引导式IT在线 教育 Agenda { meetup: “SHOUG Meeting”, presenters: [“Maclean Liu”], host: “dbDao”, location: “Oracle Shanghai Office”, audience: “You guys”} www.dbdao.com 引导式IT在线 教育 MongoDB的历史和特点 www.dbdao.com 引导式IT在线 教育 www.dbdao.com 引导式IT在线 教育 大背景:full stack js developer www.dbdao.com 引导式IT在线 教育 MongoDB历史 • MongoDB server和tools 基亍GUN AGPL v3.0 协议 • MongoDB Drivers基亍 Apache License v2.0协议 • 面向文档Document- Oriented的DBMS • 由10gen团队从2007年10 月开始主导开发,2009年2 月首度推出 • Almost x86/64 little endian only www.dbdao.com 引导式IT在线 教育 MongoDB源代码 • 目前80.9%的源代码是C++ • https://github.com/mongodb/mongo www.dbdao.com 引导式IT在线 教育 MongoDB is not yet a in- memory Database www.dbdao.com 引导式IT在线 教育 NOSQL 与RDBMS最大的 区别在亍, NOSQL没有固 定的行列组织数据结构 www.dbdao.com 引导式IT在线 教育 MongoDB IS A HUMONGOUS NOSQL DB www.dbdao.com 引导式IT在线 教育 MongoDB IS A HUMONGOUS NOSQL DB Documents 来替代RDBMS中的行 Collections 来替代RDBMS中的表 www.dbdao.com 引导式IT在线 教育 一个Document { "_id" : ObjectId("5577f3b9e6c761081bbbbee1"), "url" : "http://www.dbDao.com", "comp" : "dbDao Inc" } www.dbdao.com 引导式IT在线 教育 { _id: ObjectID("1"), username: “Maclean Liu”, regDate: “10-10-2015”, scores: { math: "80", english: "200" } } 文档里嵌入了文档 { _id: ObjectID("1"), username: “Maclean Liu”, regDate: “10-10-2015”, scores: { math: "80", english: "200" } Attr:[“a1”,”a2”] } 一个KEY对应一个数组 www.dbdao.com 引导式IT在线 教育 文档里嵌入文档里嵌入文档里嵌入文档。。。 www.dbdao.com 引导式IT在线 教育 一个mongodb应用程序http://coenraets.org/blog/2012/10/nodecellar-sample-application-with- backbone-js-twitter-bootstrap-node-js-express-and-mongodb/ www.dbdao.com 引导式IT在线 教育 一个Document最大为 16MB,大亍16MB 存放 到GridFS中 { _id: ObjectID("1"), username: “Maclean Liu”, regDate: “10-10-2015”, scores: { math: "80", english: "200" } …… …… …… } Oracle中若不考虑 LONG和LOB和12c 32k varchar 那么一个row最多 存放 1000*4000bytes= 3906KB=3.8MB www.dbdao.com 引导式IT在线 教育 JSON • JSON(JavaScript Object Notation) 是一种轻量级的数据 交换格式 • Web领域大量使用 • NAME-VALUE 配对,例如: { vehicle: “car”, make: “Malibu”, color: “blue” } www.dbdao.com 引导式IT在线 教育 BSON • 二进制的JSON,是对JSON文档的二进制编码存储格式 • BSON有JSON没有的Date和BinData • MongoDB中document以BSON形式存放 • > db.meeting.insert({meeting:"SHOUG June",Date:"2015-06-15"}); www.dbdao.com 引导式IT在线 教育 Collections是啥? 一个或多个Document的集合称为Collections 每一个Document的结构可以不一样 有点像TABLE,但TABLE的结构一般是固定的 www.dbdao.com 引导式IT在线 教育 MongoDB Schema Free or Dynamic Schema • MongoDB不需要预定义数据结构 • 一个collection中的每一个Document都可以有不同的数据结构 www.dbdao.com 引导式IT在线 教育 MongoDB的特性 • 学习周期较短 • 动态查询语言 – 基亍字段的搜索,正则表达式 – 用户定义的JAVASCRIPT函数 – 聚集,当然还有MAP/REDUCE • 简单索引、复合索引、地理索引 • 复制集 • 基亍数据分片的横向扩展能力 • 采用GridFS 来存放大文件 www.dbdao.com 引导式IT在线 教育 MongoDB不涉足的领域 • 另类ACID所以无法涉足金融、银行领域核心业务 • 无法满足复杂的结构化查询和JOIN所以无法涉足电信核心 领域 www.dbdao.com 引导式IT在线 教育 MongoDB适合的领域 • ACID不十分重要的互联网(借贷或金融类不适合),互联 网+发力中!! • 日志数据和层次聚集 • CMS内容管理系统 • 实时分析系统 www.dbdao.com 引导式IT在线 教育 MongoDB与Oracle特性比较 MongoDB VS ORACLE 互联网 VS 企业IT www.dbdao.com 引导式IT在线 教育 ACID MongoDB vs Oracle MongoDB Oracle 支持事务 Transaction 不支持,但支持 Two Phase Commits 严重支持! 原子性A 只支持 Document级别 的原子性, Document要么 完整被更新,要 么不被更新 事务要么完全提 交,要么完全回 滚 一致性C 客户端永远不会 看到单个文档被 修改的中间状态 读取到的状态总 是一致的 www.dbdao.com 引导式IT在线 教育 存储引擎 MongoDB vs Oracle MongoDB MMAP1 MongoDB WiredTiger Oracle 存储限制 NO NO NO 事务 Only two-phase commit Only two-phase commit of course 锁级别 V2.8 Collection- level V3 Document-level ROW-level MVCC Snapshot Read NO * NO * of course Geospatial support YES YES YES 压缩支持 NO YES YES MongoDB外部实现MVCC: https://github.com/igd-geo/mongomvcc www.dbdao.com 引导式IT在线 教育 内存管理 MongoDB vs Oracle MongoDB MMAPV1采用OS提供的mmap() VS Oracle 内核一套完整的堆内存管理模块KGH www.dbdao.com 引导式IT在线 教育 内存管理 MongoDB vs Oracle MongoDB MMAPV1内存参数 MongoDB WiredTiger 内存参 数 Oracle 内存参数 没有参数 MongoDB has no configurable cache for MMAPv1 storage engine. MongoDB uses all free memory on the system automatically by way of memory- mapped files. Operating systems use the 几乎只有一个参数 wiredTigerCacheSi zeGB:The maximum size of the cache that WiredTiger will use for all data. memory_max_targ et、 memory_target、 sga_max_size、 sga_target、 pga_aggregate_tar get、db_cache_size、 shared_pool_size 太多了……. www.dbdao.com 引导式IT在线 教育 数据模型 MongoDB vs Oracle { title: ‘MongoDB’, contributors: [ { name: ‘Eliot Horowitz’, email: ‘eliot@10gen.com’ }, { name: ‘Dwight Merriman’, email: ‘dwight@10gen.com’ } ], model: { relational: false, awesome: true } } www.dbdao.com 引导式IT在线 教育 MongoDB Replication VS Oracle DataGuard • 易用性上 MongoDB Replication更好 • 在数据保护上Oracle最严谨 www.dbdao.com 引导式IT在线 教育 MongoDB Sharding Cluster VS Oracle RAC非Exadata • Share nothing VS Share Disk • MongoDB有更好的扩展性,但当节点数目达到一定量后必须采用自动化管理 • ORACLE RAC 一般为2、4、8节点,比较挑应用程序。但2、4节点的RAC一般即能承载大 型电商网站的核心业务 www.dbdao.com 引导式IT在线 教育 不支持JOIN意味 着肆无忌惮的横 向扩展能力 Horizontal Scaling Distributed Architecture Horizontal Scaling Replication /HA www.dbdao.com 引导式IT在线 教育 Oracle Group BY SELECT SELECT state, SUM(pop) AS totalPop FROM zipcodes GROUP BY state HAVING totalPop >= (10*1000*1000) VS MongoDB Aggregate db.zipcodes.aggregate( [ { $group: { _id: "$state", totalPop: { $sum: "$pop" } } }, { $match: { totalPop: { $gte: 10*1000*1000 } } } ] ) www.dbdao.com 引导式IT在线 教育 Oracle Group BY SELECT SELECT state, SUM(pop) AS totalPop FROM zipcodes GROUP BY state HAVING totalPop >= (10*1000*1000) VS MongoDB Aggregate db.zipcodes.aggregate( [ { $group: { _id: "$state", totalPop: { $sum: "$pop" } } }, { $match: { totalPop: { $gte: 10*1000*1000 } } } ] ) www.dbdao.com 引导式IT在线 教育 Oracle INSERT INTO SELECT Insert into zipcodes select * from dbDao.zipcodes1 VS MongoDB INSERT INTO SELECT db.zipcodes1.find().forEach( function(i) { i._id = new ObjectId(); db.zipcodes.insert(i); }); _id字段不得重复, MongoDB中无需CTAS www.dbdao.com 引导式IT在线 教育 www.dbdao.com 引导式IT在线 教育 最佳搭档语言 MongoDB VS Oracle MongoDB Oracle Javascript:Node.js,me an.js,Ruby,Python, PHP 互联网,互联网+, 物联网, 移动互联网 JAVA,C/C++, PRO*C,.Net 企业应用,银行应用, 政府应用 www.dbdao.com 引导式IT在线 教育 速成语言+MongoDB=开发出品速度提升 www.dbdao.com 引导式IT在线 教育 MongoDB与Oracle的学习曲线比较 www.dbdao.com 引导式IT在线 教育 Oracle学习曲线 • Oracle体系架构过亍复杂,入门难是学习的难点 • Oracle学习的深度可以很深 • 但Oracle学习多年后也容易陷入瓶颈 MongoDB VS Oracle学习曲线比较 MongoDB学习 Oracle学习 www.dbdao.com 引导式IT在线 教育 MongoDB官方文档 • MongoDB官方文档的阅读量不及 oracle concept +admin guide2个官方文 档 • http://docs.mongodb.org/manual/ www.dbdao.com 引导式IT在线 教育 MongoDB学习方法推荐 www.dbdao.com 引导式IT在线 教育 必读 • 官方手册http://docs.mongodb.org/manual/ • MongoDB Administration - MongoDB Documentation Project http://docs.mongodb.org/master/MongoDB-administration-guide.pdf • MongoDB Documentation http://docs.mongodb.org/master/MongoDB-manual.pdf • MongoDB Use Cases http://docs.mongodb.org/manual/MongoDB- use-cases-guide.pdf • MongoDB CRUD Operations Introduction http://docs.mongodb.org/v2.2/MongoDB-crud-guide.pdf • MongoDB github https://github.com/mongodb/mongo www.dbdao.com 引导式IT在线 教育 重实践 • 由亍测试时需要大量服务器,解决方案: – Docker https://registry.hub.docker.com/_/mongo/ – digitalocean https://www.digitalocean.com/community/tutorials /how-to-set-up-a-scalable-mongodb-database – Mongodblab https://mongolab.com/ www.dbdao.com 引导式IT在线 教育 MongoDB认证考试 • 参加认证考试,基于考题快速学习 • C100DBA和C100DEV是MongoDB公司 的认证考试 • C100DBA: MongoDB Certified DBA Associate Exam 相当于OCA • C100DEV: MongoDB Certified Developer Associate Exam 相当于开 发的OCA • 考试预约提纲 https://university.mongodb.com/exa ms/C100DBA/about • https://university.mongodb.com/exa ms/C100DEV/about www.dbdao.com 引导式IT在线 教育 References: MONGODB WORKSHOP [“KannanSankaran”, “Roman Kubiak”] D B D A O 引导式IT在线教育 关注大数据科学 使用 学习 分享 www.dbdao.com 引导式IT在线 教育 www.dbdao.com 引导式IT在线 教育
还剩49页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

ncnf

贡献于2015-11-28

下载需要 6 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf