MongoDB For Oracle DBA


shoug.info 上海Oracle用户组 MongoDB For Oracle DBA 刘相兵 Maclean Liu shoug.info 上海Oracle用户组 议程 • MongoDB For Oracle DBA 因为是For DBA,所以我们更侧重原理和管理层 – MongoDB的历史和特点 – MongoDB与Oracle特性比较 – 学习曲线比较 – 学习方法推荐 shoug.info 上海Oracle用户组 Agenda { meetup: “SHOUG Meeting”, presenters: [“Maclean Liu”], host: “dbDao”, location: “Oracle Shanghai Office”, audience: “You guys”} shoug.info 上海Oracle用户组 MongoDB的历史和特点 shoug.info 上海Oracle用户组 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 shoug.info 上海Oracle用户组 MongoDB源代码 • 目前80.9%的源代码是C++ • https://github.com/mongodb/mongo shoug.info 上海Oracle用户组 NOSQL 与RDBMS最大的 区别在于,NOSQL没有固 定的行列组织数据结构 shoug.info 上海Oracle用户组 MongoDB IS A HUMONGOUS NOSQL DB shoug.info 上海Oracle用户组 MongoDB IS A HUMONGOUS NOSQL DB Documents 来替代RDBMS中的行 Collections 来替代RDBMS中的表 shoug.info 上海Oracle用户组 一个Document { "_id" : ObjectId("5577f3b9e6c761081bbbbee1"), "url" : "http://www.dbDao.com", "comp" : "dbDao Inc" } shoug.info 上海Oracle用户组 { _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对应一个数组 shoug.info 上海Oracle用户组 一个mongodb应用程序http://coenraets.org/blog/2012/10/nodecellar-sample-application-with- backbone-js-twitter-bootstrap-node-js-express-and-mongodb/ shoug.info 上海Oracle用户组 一个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=3 906KB=3.8MB shoug.info 上海Oracle用户组 JSON • JSON(JavaScript Object Notation) 是一种 轻量级的数据交换格式 • Web领域大量使用 • NAME-VALUE 配对,例如: { vehicle: “car”, make: “Malibu”, color: “blue” } shoug.info 上海Oracle用户组 BSON • 二进制的JSON,是对JSON文档的二进制编 码存储格式 • BSON有JSON没有的Date和BinData • MongoDB中document以BSON形式存放 • > db.meeting.insert({meeting:"SHOUG June",Date:"2015-06-15"}); shoug.info 上海Oracle用户组 Collections是啥? 一个或多个Document的集合称为Collections 每一个Document的结构可以不一样 有点像TABLE,但TABLE的结构一般是固定的 shoug.info 上海Oracle用户组 MongoDB的特性 • 学习周期较短 • 动态查询语言 – 基于字段的搜索,正则表达式 – 用户定义的JAVASCRIPT函数 – 聚集,当然还有MAP/REDUCE • 简单索引、复合索引、地理索引 • 复制集 • 基于数据分片的横向扩展能力 • 采用GridFS 来存放大文件 shoug.info 上海Oracle用户组 MongoDB不涉足的领域 • 另类ACID所以无法涉足金融、银行领域核 心业务 • 无法满足复杂的结构化查询和JOIN所以无法 涉足电信核心领域 shoug.info 上海Oracle用户组 MongoDB适合的领域 • ACID不十分重要的互联网(借贷或金融类 不适合),互联网+发力中!! • 日志数据和层次聚集 • CMS内容管理系统 • 实时分析系统 shoug.info 上海Oracle用户组 MongoDB与Oracle特性比较 MongoDB VS ORACLE 互联网 VS 企业IT shoug.info 上海Oracle用户组 ACID MongoDB vs Oracle MongoDB Oracle 支持事务Transaction 不支持,但支持Two Phase Commits 严重支持! 原子性A 只支持Document级别 的原子性,Document 要么完整被更新,要 么不被更新 事务要么完全提交, 要么完全回滚 一致性C 客户端永远不会看到 单个文档被修改的中 间状态 读取到的状态总是一 致的 隔离性I 不会读取到未被完整 更新的单个Document, 但会read uncommitted 不会读取到未提交的 事务 read committed 持久性D 写关注write concern Commit后事务将不被 故意丢失 shoug.info 上海Oracle用户组 存储引擎 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 Replication支持 YES YES YES 自动数据分片 YES YES NO 二级索引 YES YES YES 文本搜索 YES YES YES 外键支持 NO NO YES 高可用集群 YES YES YES MongoDB外部实现MVCC: https://github.com/igd- geo/mongomvcc shoug.info 上海Oracle用户组 内存管理 MongoDB vs Oracle MongoDB MMAPV1采用OS提供的mmap() VS Oracle 内核一套完整的堆内存管理模块KGH shoug.info 上海Oracle用户组 内存管理 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 same approach with their file system caches. 几乎只有一个参数 wiredTigerCacheSizeGB:The maximum size of the cache that WiredTiger will use for all data. memory_max_target、 memory_target、 sga_max_size、 sga_target、 pga_aggregate_targe t、db_cache_size、 shared_pool_size 太多了……. shoug.info 上海Oracle用户组 MongoDB Replication VS Oracle DataGuard • 易用性上 MongoDB Replication更好 • 在数据保护上Oracle最严谨 shoug.info 上海Oracle用户组 MongoDB Sharding Cluster VS Oracle RAC非Exadata • Share nothing VS Share Disk • MongoDB有更好的扩展性,但当节点数目达到一定量后必须采用自动化管理 • ORACLE RAC 一般为2、4、8节点,比较挑应用程序。但2、4节点的RAC一般即能承载大 型电商网站的核心业务 shoug.info 上海Oracle用户组 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 } } } ] ) shoug.info 上海Oracle用户组 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 shoug.info 上海Oracle用户组 shoug.info 上海Oracle用户组 最佳搭档语言 MongoDB VS Oracle MongoDB Oracle Javascript:Node.js,mean.js, Ruby,Python,PHP JAVA,C/C++,PRO*C,.Net shoug.info 上海Oracle用户组 MongoDB与Oracle的学习曲线比较 shoug.info 上海Oracle用户组 Oracle学习曲线 • Oracle体系架构过于复杂,入门难是学习的难点 • Oracle学习的深度可以很深 • 但Oracle学习多年后也容易陷入瓶颈 MongoDB VS Oracle学习曲线比较 MongoDB学习 Oracle学习 shoug.info 上海Oracle用户组 MongoDB官方文档 • MongoDB官方文档的阅读量不及 oracle concept +admin guide2个官方文 档 • http://docs.mongodb.org/manual/ shoug.info 上海Oracle用户组 MongoDB学习方法推荐 shoug.info 上海Oracle用户组 必读 • 官方手册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 shoug.info 上海Oracle用户组 重实践 • 由于测试时需要大量服务器,解决方案: – Docker https://registry.hub.docker.com/_/mongo/ – digitalocean https://www.digitalocean.com/community/tutorials/h ow-to-set-up-a-scalable-mongodb-database – Mongodblab https://mongolab.com/ shoug.info 上海Oracle用户组 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 shoug.info 上海Oracle用户组 References: MONGODB WORKSHOP [“KannanSankaran”, “Roman Kubiak”] S H O U G Let’s Leverage Oracle Together Using, Learning & Sharing
还剩40页未读

继续阅读

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

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

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

下载pdf

pdf贡献者

6d6d

贡献于2015-07-14

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