《nosql-mongodb-盛大.ppt》由会员分享,可在线阅读,更多相关《nosql-mongodb-盛大.ppt(25页珍藏版)》请在三一办公上搜索。
1、盛大网络,成江东snda DBAhttp:/2010-10,NOSQL七种武器之长生剑MongoDB的使用介绍,一条曲线,思考,一并发压力快速提高?二需求变化快?三数据水平拆分?,压力很大,谁来解压,内 容,MongoDB是什么,MongoDB的特性,MongoDB的适用场景,MongoDB的与其它数据库的对比,MongoDB是什么,NOSQL数据库是什么?非关系型的数据库,主要用于社区类WEB2.0网站。主要解决:对数据库高并发的需求对海量数据的高效率存储和访问的需求对数据库的高可扩展性和高可用性的需求,MongoDB是什么,二性能与一致性-鱼与熊掌可兼得?,MongoDB是什么,CAP理论
2、鱼与熊掌不可得兼,一致性(C),可用性(A),分区容忍性(P),一个分布式系统最多只能同时满足两个。CA:传统关系数据库 AP:key-value数据库,MongoDB是什么,所以,MongoDB不能解决:数据库事务一致性需求数据库的写实时性和读实时性需求对复杂的SQL查询,特别是多表关联查询的需求,MongoDB是什么,三MongoDB数据库是什么?取自“humongous”(海量的),是由10gen开发并维护的一种开源,高性能,可扩展,无模式,面向文档(document-oriented)的数据库,其内存储的是一种 JSON-like结构化数据。它介于关系数据库和非关系数据库之间,是非关系
3、数据库中最像关系数据库的。官网:http:/下载:http:/downloads最新版本:1.6.3(2010-09-23)支持操作系统:Os X Linux Windows Solaris,MongoDB的特性,一JSON格式文档数据库,MongoDB的特性,document!=row 文档 _id:ObjectId(4caeb59438336e36fcdb2b59),uid:11909,uname:bird007,address:province:湖北,city:武汉“,_id:ObjectId(4caeb59438336e36fc9306f4),uid:11910,uname:magic
4、man,“sex:0,MongoDB的特性,二自由数据模式支持在对象和数组内嵌入其它的对象和数组Mongo模式设计中的一个关键问题就是“是值得为这个对象新建一个集合呢,还是把这个对象嵌入到其它的集合中”。,MongoDB的特性,三全面索引支持基本索引:db.t_user.ensureIndex(uname:1)唯一索引:db.t_user.ensureIndex(uname:1,unique:true)内嵌文档中的key:db.t_user.ensureIndex(address.city:1)文档本身:db.t_user.ensureIndex(address:1)复合索引:db.t_use
5、r.ensureIndex(address.province:1,address.city:1,address.postcode:1,address.room:1)在线索引:db.t_user.ensureIndex(uname:1,background:true);,MongoDB的特性,四复制和自动分片带来的高可用性,MongoDB的特性,MongoDB 分片集群由2个以上的shards,个以上的config servers,和任意数量的 mongos servers组成,应用程序连接mongos serversmongod数据库服务器进程,类似于mysqldreplica set 是N个
6、一组的 mongod 节点,协同工作可提供自动失效转移,是replica pairs的升级版MongoDB v1.6 开始可以使用于生产环境,MongoDB的特性,测试:Auto sharding:http:/=1015Replica Set:=1040,MongoDB的特性,安装php驱动:pecl install mongo Php测试角本test.phptest;/选择结果集$collection=$db-app;for($i=1;$i$appid,userid=$userid,credate=$credate);$collection-insert($new);?,MongoDB的特性
7、,发现在初期,分布不均匀,第一台DB上有100多万条,而第2,3台上各有30万条,20万条。增加一台服务器测试,继续插入数据到500万条后看发现数据已经变为,MongoDB的特性,五丰富的查询语句,In查询,排序,查询分片,Count,Exists,正则,游标,数组元素个数,类型匹配,Javascript shell,MongoDB的特性,六Map/Reduce是聚合和过滤数据的工具m=function()emit(this.sex,1);r=function(key,value)var count=0;for(i in value)count+=valuei;return count;res
8、=db.t_user.mapReduce(m,r);dbres.result.find();_id:0,value:134211 _id:1,value:323445,MongoDB的特性,七.性能优异并发写的性能有1.5万每秒 无外键约束,无事务异步写磁盘 八其它特性GridFS使用方便,MongoDB 会自动创建数据库(db)和集合(collection),无需显式执行。,MongoDB的适用场景,一适用场景1,结构不固定,有数据嵌套2,要求高并发性3,经常需要做数据水平拆分4,内存大于数据量(推荐)二不足之处1,比较占用硬盘空间,性能受内存影响2,性能依赖内存,同时无法指定内存大小,容易被其它程序占用3,MongonDB不支持事务,不支持join4,每个Document的限制是最大不超过4MB,MongoDB的适用场景,三Why MongoDB性能优异扩展力强面向文档部署简单功能全面易于开发支持全面邮件组:http:/-user豆瓣小组:http:/,MongoDB的与其它数据库的对比,一VS二VS 三VS,