mongodb for oracle dba - macleanliu mongodb for oracle dba.pdfmongodb replication vs oracle...

41

Upload: others

Post on 06-Apr-2020

52 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info
Page 2: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB For Oracle DBA

刘相兵 Maclean Liu

Page 3: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

议程

• MongoDB For Oracle DBA

因为是For DBA,所以我们更侧重原理和管理层– MongoDB的历史和特点

– MongoDB与Oracle特性比较

– 学习曲线比较

– 学习方法推荐

Page 4: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

Agenda

{ meetup: “SHOUG Meeting”,

presenters: [“Maclean Liu”],

host: “dbDao”,

location: “Oracle Shanghai Office”,

audience: “You guys”}

Page 5: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB的历史和特点

Page 6: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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

Page 7: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB源代码

• 目前80.9%的源代码是C++

• https://github.com/mongodb/mongo

Page 8: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

NOSQL 与RDBMS最大的区别在于,NOSQL没有固定的行列组织数据结构

Page 9: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB IS A HUMONGOUS

NOSQL DB

Page 10: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB IS A HUMONGOUS

NOSQL DB

Documents 来替代RDBMS中的行

Collections 来替代RDBMS中的表

Page 11: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

一个Document

{

"_id" : ObjectId("5577f3b9e6c761081bbbbee1"), "url" : "http://www.dbDao.com",

"comp" : "dbDao Inc"

}

Page 12: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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对应一个数组

Page 13: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

一个mongodb应用程序http://coenraets.org/blog/2012/10/nodecellar-sample-application-with-backbone-js-twitter-bootstrap-node-js-express-and-mongodb/

Page 14: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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=3906KB=3.8MB

Page 15: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

JSON

• JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式

• Web领域大量使用

• NAME-VALUE 配对,例如:{

vehicle: “car”,

make: “Malibu”,

color: “blue” }

Page 16: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

BSON

• 二进制的JSON,是对JSON文档的二进制编码存储格式

• BSON有JSON没有的Date和BinData

• MongoDB中document以BSON形式存放

• > db.meeting.insert({meeting:"SHOUGJune",Date:"2015-06-15"});

Page 17: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

Collections是啥?

一个或多个Document的集合称为Collections

每一个Document的结构可以不一样

有点像TABLE,但TABLE的结构一般是固定的

Page 18: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB的特性

• 学习周期较短

• 动态查询语言

– 基于字段的搜索,正则表达式

– 用户定义的JAVASCRIPT函数

– 聚集,当然还有MAP/REDUCE

• 简单索引、复合索引、地理索引

• 复制集

• 基于数据分片的横向扩展能力

• 采用GridFS 来存放大文件

Page 19: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB不涉足的领域

• 另类ACID所以无法涉足金融、银行领域核心业务

• 无法满足复杂的结构化查询和JOIN所以无法涉足电信核心领域

Page 20: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB适合的领域

• ACID不十分重要的互联网(借贷或金融类不适合),互联网+发力中!!

• 日志数据和层次聚集

• CMS内容管理系统

• 实时分析系统

Page 21: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB与Oracle特性比较MongoDB VS ORACLE

互联网 VS 企业IT

Page 22: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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后事务将不被故意丢失

Page 23: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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

Page 24: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

内存管理 MongoDB vs Oracle

MongoDB MMAPV1采用OS提供的mmap() VS Oracle 内核一套完整的堆内存管理模块KGH

Page 25: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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:Themaximum size of the cache that WiredTiger will use for all data.

memory_max_target、memory_target、sga_max_size、sga_target、pga_aggregate_target、db_cache_size、shared_pool_size太多了…….

Page 26: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB Replication VS Oracle DataGuard• 易用性上 MongoDB Replication更好• 在数据保护上Oracle最严谨

Page 27: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB Sharding Cluster VS Oracle RAC非Exadata• Share nothing VS Share Disk• MongoDB有更好的扩展性,但当节点数目达到一定量后必须采用自动化管理• ORACLE RAC 一般为2、4、8节点,比较挑应用程序。但2、4节点的RAC一般即能承载大

型电商网站的核心业务

Page 28: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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 Aggregatedb.zipcodes.aggregate( [

{ $group: { _id: "$state", totalPop: { $sum: "$pop" } } },

{ $match: { totalPop: { $gte: 10*1000*1000 } } }

] )

Page 29: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

Oracle INSERT INTO SELECTInsert 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

Page 30: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

Page 31: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

最佳搭档语言 MongoDB VS Oracle

MongoDB Oracle

Javascript:Node.js,mean.js,Ruby,Python,PHP

JAVA,C/C++,PRO*C,.Net

Page 32: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB与Oracle的学习曲线比较

Page 33: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

Oracle学习曲线• Oracle体系架构过于复杂,入门难是学习的难点

• Oracle学习的深度可以很深

• 但Oracle学习多年后也容易陷入瓶颈MongoDB VS Oracle学习曲线比较

MongoDB学习 Oracle学习

Page 34: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB官方文档• MongoDB官方文档的阅读量不及 oracle concept +admin guide2个官方文

• http://docs.mongodb.org/manual/

Page 35: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

MongoDB学习方法推荐

Page 36: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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

Page 37: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

重实践

• 由于测试时需要大量服务器,解决方案:– Docker https://registry.hub.docker.com/_/mongo/

– digitaloceanhttps://www.digitalocean.com/community/tutorials/how-to-set-up-a-scalable-mongodb-database

– Mongodblab https://mongolab.com/

Page 38: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

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/exams/C100DBA/about

• https://university.mongodb.com/exams/C100DEV/about

Page 39: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

shoug.info 上海Oracle用户组

References:

MONGODB WORKSHOP [“KannanSankaran”, “Roman Kubiak”]

Page 40: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info

S H O U G

Let’s Leverage Oracle Together

Using, Learning & Sharing

Page 41: MongoDB For Oracle DBA - macleanliu MongoDB For Oracle DBA.pdfMongoDB Replication VS Oracle DataGuard ... • Oracle体系架构过于复杂,入门难是学习的难点 ... shoug.info