NOSQL Mongo DB snda DBA http www goziwa
盛大网络 NOSQL七种武器之长生剑 Mongo. DB的使用介绍 成江东@snda DBA http: //www. goziwa. com QQ: 1913908 2010 -10
Mongo. DB的特性 document!=row 文档 { "_id" : Object. Id("4 caeb 59438336 e 36 fcdb 2 b 59"), "uid" : 11909, "uname " : " bird 007 " , "address" : { "province" : "湖北", "city" : "武汉“, … } { "_id" : Object. Id("4 caeb 59438336 e 36 fc 9306 f 4"), "uid" : 11910, "uname " : " magicman " , “sex " : 0 … }
Mongo. DB的特性 三.全面索引支持 Ø 基本索引:db. t_user. ensure. Index({uname: 1}) Ø 唯一索引:db. t_user. ensure. Index({uname: 1}, {unique: true}) Ø 内嵌文档中的key:db. t_user. ensure. Index({"address. city": 1}) Ø 文档本身:db. t_user. ensure. Index({"address": 1}) Ø 复合索引: db. t_user. ensure. Index({"address. province": 1, "address. city": 1, "address. postcode": 1, "address. room ": 1}) Ø 在线索引:db. t_user. ensure. Index({uname: 1}, {background: true});
Mongo. DB的特性 测试: Auto sharding: http: //www. goziwa. com/? p=1015 Replica Set: http: //www. goziwa. com/? p=1040 3 shards: 192. 168. 0. 15 , 192. 168. 0. 16, 192. 168. 0. 17 1 config: 192. 168. 0. 14 1 mongos: 192. 168. 0. 13
Mongo. DB的特性 安装php驱动:pecl install mongo Php测试角本test. php <? php //连接localhost: 27017 $conn = new Mongo(); //选择数据库test $db = $conn->test; //选择结果集 $collection = $db->app; for($i=1; $i<10000000; $i++){ $data 1 = mktime(0, 0, 0, 1, 1, 1950); $data 2 = mktime(0, 0, 0, 1, 1, 2000); $rand_time = rand($data 1, $data 2); $credate=date(“Y-m-d H: i: s”, $rand_time); $userid= rand(10000, 90000); $appid= rand(1, 50); $new = array(‘appid’ => $appid, ‘userid’ => $userid, ‘credate’ => $credate); $collection->insert($new); } ? >
Mongo. DB的特性 六.Map/Reduce 是聚合和过滤数据的 具 m=function(){emit(this. sex, 1); } r=function(key, value){ var count=0; for(i in value){ count+=value[i]; } return count; } res=db. t_user. map. Reduce(m, r); db[res. result]. find(); { "_id" : 0, "value" : 134211 } { "_id" : 1, "value" : 323445 }
- Slides: 25