啊片色播电影,营销管理培训,三度注册送白菜
nosql很火,mongodb做为一款优秀的分布式文件存储的数据库,也得到了不小的关注, 新浪微博中每天现在约有20多条信息。
官网:
下载:
php扩展:
我选择了windows的安装包,下载了windows 32-bit的1.8.2版本,以下是安装记录:
解压到了d:\www\mongodb
cd d:\www
bin\mongod.exe --dbpath=d:/www/mongodb/data
sat jul 09 09:03:28 [initandlisten] db version v1.8.2, pdfile version 4.5
sat jul 09 09:03:28 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf6
00f56501b
sat jul 09 09:03:28 [initandlisten] build sys info: windows (5, 1, 2600, 2, 'ser
vice pack 3') boost_lib_version=1_35
sat jul 09 09:03:28 [initandlisten] waiting for connections on port 27017
sat jul 09 09:03:28 [websvr] web admin interface listening on port 28017
这样mongodb就在运行了,但dos操作还不能关闭,一关闭就停了。因此需要将其设为系统服务:
d:\www\mongodb>bin\mongod.exe --dbpath=d:/www/mongodb/data --logpath=d:/www/mongodb/mongodb.log --install
all output going to: d:/www/mongodb/mongodb.log
creating service mongodb.
service creation successful.
service can be started from the command line via 'net start "mongodb"'.
这样就可以在系统服务(services.msc)里就多了个mongodb的服务,可以设置成 自动 来让windows每次启动时自动启动mongo db。
下面看其自带的客户端,仍然在其bin目录下,文件名为mongo.exe
bin\mongo.exe
mongodb shell version: 1.8.2
connecting to: test
在http://cn.php.net/mongo下载mongodb的php扩展,php 5.2 vc6 thread-safe mongo extension。
5.2版只有5.2.13的mongodb.dll。本地php重装了5.2.13,可以用了。
主要代码:
$m = new mongo(); // 默认连接本机的27017端口
$mdb = $m -> hx; // 选择hx数据库,如果以前没有,则会自动创建,也可以用$m->selectdb("hx");
$collection = $mdb->hx_site; //选择hx里面的hx_site集合,相当于取hx库里的hx_site表,也可以使用$mdb->selectcollection("hx_site");
[html]
批量插入:
[code]
for($i=53;$i<84;$i++){
$start = $i * 10000;
$end = ($i+1) * 10000;
$sql = "select * from hx_site where id > $start and id <= $end";
$tmp = $db->query($sql);
$arrs = array();
while ($arr = $db->fetch_array($tmp)) {
$arrs[] = $arr;
}
$collection->batchinsert($arrs);
}
用php将本地有83.6w条数据的mysql转成mongodb,每次插入1w条,一次需要109~125ms。
/*
mysql语句对应的mongodb语法:
取pagerank=5,按id倒序,取30条
类似于 select * from hx_site where pagerank = 5 order by id desc limit 30
*/
$cursor = $collection->find(array('pagerank'=>'5'))->sort(array('id'=>-1))->limit(30);
foreach ($cursor as $obj) { //遍历所有集合中的文档
echo $obj["id"].' '.$obj["domain"] . "<br>";
}
没索引的情况下取一条记录,656ms,mysql需要0.7s,基本上没区别。
count(*)某条件,800多ms,加索引后100多ms
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!!
点击进行留言回复
相关文章:
-
-
-
-
Redis 字符串 SDS
SDS 简单动态字符串。 SDS的结构: struct sdshdr{ int len;//记录BUF数组中已使用字节的数量 ,等于SDS所八寸字符串的...
[阅读全文]
-
-
Cassandra 简介
Cassandra是云原生和微服务化场景中最好的NoSQL数据库。我信了~ 1. Cassandra是什么 高可用性和可扩展的分布式数据库 Apache...
[阅读全文]
-
-
-
-
-
Redis的消息发布与订阅
Redis 作为一个publish/subscribe server,起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向...
[阅读全文]
网友评论