heberoxx 发表于 2015-7-7 09:35:25

MongoDB的安装以及PHP扩展

  



mkdir -p /data/db/
mkdir -p /data/logs/
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.6.5.tgz
tar -zxvf mongodb-linux-x86_64-1.6.5.tgz
./bin/mongod --dbpath=/data/db/ --logpath=/data/logs/mongod.log --logappend --port=27017 --fork --rest
  General options:
   -h [ --help ]             show this usage information
   --version               show version information
   -f [ --config ] arg       configuration file specifying additional options
   --port arg                specify port number
   --bind_ip arg             local ip address to bind listener - all local ips bound by default
   -v [ --verbose ]          be more verbose (include multiple times for more verbosity e.g. -vvvvv)
   --dbpath arg (=/data/db/) directory for datafiles    指定数据存放目录
   --quiet                   quieter output   静默模式
   --logpath arg             file to send all output to instead of stdout   指定日志存放目录
   --logappend               appnd to logpath instead of over-writing指定日志是以追加还是以覆盖的方式写入日志文件
   --fork                  fork server process   以创建子进程的方式运行
   --cpu                     periodically show cpu and iowait utilization周期性的显示cpu和io的使用情况
   --noauth                  run without security无认证模式运行
   --auth                  run with security认证模式运行
   --objcheck                inspect client data for validity on receipt检查客户端输入数据的有效性检查
   --quota                   enable db quota management   开始数据库配额的管理
   --quotaFiles arg          number of files allower per db, requires --quota规定每个数据库允许的文件数
   --appsrvpath arg          root directory for the babble app server
   --nocursors               diagnostic/debugging option调试诊断选项
   --nohints               ignore query hints忽略查询命中率
   --nohttpinterface         disable http interface关闭http接口,默认是28017
   --noscripting             disable scripting engine关闭脚本引擎
   --noprealloc            disable data file preallocation关闭数据库文件大小预分配
   --smallfiles            use a smaller default file size使用较小的默认文件大小
   --nssize arg (=16)      .ns file size (in MB) for new databases 新数据库ns文件的默认大小
   --diaglog arg             0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式
   --sysinfo               print some diagnostic system information 打印系统诊断信息
   --upgrade               upgrade db if needed如果需要就更新数据库
   --repair                  run repair on all dbs修复所有的数据库
   --notablescan             do not allow table scans不运行表扫描
   --syncdelay arg (=60)   seconds between disk syncs (0 for never)系统同步刷新磁盘的时间,默认是60s
Replication options:
   --master            master mode 主复制模式
   --slave               slave mode从复制模式
   --source arg          when slave: specify master as当为从时,指定主的地址和端口
   --only arg            when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库
   --pairwith arg      address of server to pair with
   --arbiter arg         address of arbiter server仲裁服务器,在主主中和pair中用到
   --autoresync          automatically resync if slave data is stale 自动同步从的数据
   --oplogSize arg       size limit (in MB) for op log 指定操作日志的大小
   --opIdMem arg         size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小
Sharding options:
   --configsvr         declare this is a config db of a cluster 指定shard中的配置服务器
   --shardsvr            declare this is a shard db of a cluster 指定shard服务器

测试mongoDB
#使用自带客户端连接mongoDB
./bin/mongo
新建集合集
> db.createCollection("user");
{ "ok" : 1 }
> show collections
system.indexes
user
插入数据:
> db.user.insert({uid:1,username:"Falcon.C",age:25});
> db.user.insert({uid:2,username:"aabc",age:24});
查询数据:
> db.user.find();
{ "_id" : ObjectId("4bfcaa62315398de2d288bbd"), "uid" : 1, "username" : "Falcon.C", "age" : 25 }
{ "_id" : ObjectId("4bfcaa6c315398de2d288bbe"), "uid" : 2, "username" : "aabc", "age" : 24 }
查询数据的方式很丰富,有类似于SQL的条件查询,如:我想查询UID为1的用户的数据:
> db.user.find({uid:1});
{ "_id" : ObjectId("4bfcaa62315398de2d288bbd"), "uid" : 1, "username" : "Falcon.C", "age" : 25 }
mongoDB还支持丰富的查询还有limit ,sort ,findOne,distinct等
更新数据
> db.user.find();
{ "_id" : ObjectId("4bfcaa62315398de2d288bbd"), "uid" : 1, "username" : "Falcon.C", "age" : 26 }
{ "_id" : ObjectId("4bfcaa6c315398de2d288bbe"), "uid" : 2, "username" : "aabc", "age" : 24 }
出了以上的2种用法,更新的条件还有$unset、$push 、$pushAll 、$pop 、$pull 、$pullAll

  首先下载最新的php mongodb扩展源码,源码可以在http://pecl.php.net/package/mongo下载到
  



tar zxvf mongodb-mongo-php-driver-1.1.1-17-g889492c.tar
cd mongodb-mongodb-php-driver-1.1.1-17-g889492c
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
  PHP扩展API下载 最后记得修改php.ini,添加 extension = "mongo.so"
  用PHP操作Mongondb
详细见PHP的官方文档,这里我用5个进程测试,同时运行100w条数据,建唯一索引,数据完全没有出错,速度不错
页: [1]
查看完整版本: MongoDB的安装以及PHP扩展