面向文档的数据库, NOsql数据库 ,非关系型,key-value(键值对) 方式存储的。
一个文档就是一个json对象。使用javascript语言来操作。
最大特点:在超大规模数据的存取数据速度非常快!(几十亿级别)
特点:
在处理大数据和高并发性能非常好。(目的就是为了这两个问题)
易 于扩展,性能非常快,分布式存储和操作。
适合做非事务型以及数据结构比较简单的数据:日志等,以数据存储为主。
缺点:
不支持事务和join连表操作。
安装:
1 创建一个目录和日志文件(放哪个位置都行)
2 以管理员身份 打开cmd,运行mongod.exe,拖到cmd
C:Userseric>E:3916mongodb20151105MongDBmongodb-win32-i386-2.0.3inmongod.exe --dbpath E:3916mongodb20151105MongDBmongodb-win32-i386-2.0.3data --logpath E:3916mongodb20151105MongDBmongodb-win32-i386-2.0.3log.txt --install
all output going to: E:3916mongodb20151105MongDBmongodb-win32-i386-2.0.3log.txt ---->这样就说明安装成功了
要输入三个参数
1 --dpath
2 --logpath
3 --install
--------------
3 打开服务窗口管理:
启动 mongodb服务
启动之后:
A:端口:27017
B:还会开启一个web管理页面,监听的端口号:28017(+1000)。
可以在浏览器这样访问
localost:28017
4 在cmd 窗口连接
mongo.exe 拖到 cmd命令窗口
E:3916mongodb20151105MongDBmongodb-win32-i386-2.0.3inmongo.exe
MongoDB shell version: 2.0.3 --》服务器版本
connecting to: test --》默认数据库
说明这个客户端其实是一个js引擎,可以执行任何js语句。
----------------
5 客户端提供了一套帮助系统,通过帮助就可以完成很多任务
系统级别:help
数据库级别:db.help()
集合级别: db.集合名.help()
方法级别: 查看一个方法有几个参数:db.集合名.方法名,如
db.goods.find
6 面向文档的数据库中的概念:
mysql mongodb
数据库 数据库
表 集合
记录 文档
7 客户端中的db变量代表当前数据库
db 显示当前数据库
切换数据库 use
8 mongodb 是一个 无模式 的数据库【文档模型自由,灵活】 意思就是说:无需创建数据库和表,而且集合中的字段随意加不用提前定义好
扩展:甚至同一个集合中可以不完全不同的文档
但是最好还是:同一种结构的文档放到一个集合中这样性能更好而且便于管理!
使用mongodb完成 CRUB
1 向商品数据库php39插入100件商品
use php39
for(var i=0;i<100,i++){
db.goods.insert('goods_name':'goods_'+i;'shop_price':100xmath.random())
}
会为每条记录增加一个ID,一定是唯一的,是obect_id对象,不是自增的
为了避免分布式存储数据时ID冲突
2 查询
db.goods.count()
db.goods.find()
3 删除一条记录 goods_name=goods_14
db.goods.remove({'goods_name':'goods_14'})
4 修改 goods_name=goods_15 价格为100
var d=db.goods.findOne({'goods_name':'goods_15'})
d.shop_price=100
db.goods.save(d)
--------------------
5 取出所有价格小于50元的商品
db.goods.find({'shop_price':{"$lt":50}})
-------------------
6 数据类型
7 瞬间完成-》执行操作时没有返回值-》有些操作要必须知道返回值-》
需要执行一个执行指令
db.runCommand({getLastError:1})
{
'err':null,
'updateExisting':true,
'n':5,
'ok':true
}
--------------
8 总结:
mongodb拥有的功能:基本的数据存储,索引,复制,分片,备份,还原等基本功能。
没有的功能:事务,视图,存储过程,不支持join连表,触发器。
9 分片:
分布式存储(易于扩展)
健康检查,数据沉余放丢失
扩展:mysql 中有个 ndb 集群也是这个东西(大数据的分布式存储)
扩展:mapReduce 编程模型:快速处理大数据。Map:把一个任何拆分【映射】:reuce:把多个任务的结果汇总统计。
大数据:如何存,如何快速统计。
---------------------
10 mongodb 地理空间索引
-------------
使用php 操作mongodb
1 先安装扩展
下载一个和本地php环境相对应的php_mongodb.dll扩展包
A: php版本,是否TS,VC的版本,在phpinfo里看。
B:D:serverphpext 放到这个目录
C:修改php.ini添加一行
extension=php_mongo.dll
重启apahce,在PHPinfo可以看到.
php操作代码:
<?php
$mongo=new MongoClient();
//取出所有的商品
$mongo->php39->goods->find();
foreach($goods as $k =>$v){
echo $v[$goods_name].'<hr/>';
}
//添加一条记录
$mongo->php39->goods->insert(array(
'goods_name'=>'tom',
'shop_price'=>100,
));
?>