New PHP Strong |
mongoDB
Write here...
Copyright ©2017 . All Rights Reserved.
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB的优势与劣势
优势
- 快速!基于内存,将热数据存放在物理内存中(不仅仅只是索引和少部分数据),从而提高了整体速度和效率。
- 高扩展性!MongoDB的高可用和集群架构拥有十分高的扩展性。
- 自身的FailOver机制!在副本集中,当主库遇到问题,无法继续提供服务的时候,副本集将选举一个新的主库继续提供服务。
- JSon格式的数据!MongoDB的Bson和JSon格式的数据十分适合文档格式的存储与查询。
劣势
- 应用经验少!由于NoSQL兴起时间短,应用经验相比关系型数据库较少。
- 由于以往用到的都是关系型数据库,可能会造成使用者一开始的不适应。
- 无事务机制!MongoDB本身没有自带事务机制,若需要在MongoDB中实现事务机制,需通过一个额外的表,从逻辑上自行实现事务。
Mongodb的增删改查操作 <?php // 连接到mongodb $mongoClient = new MongoClient(); // 选择一个数据库 $db = $mongoClient->test; //获取集合 $collection=$db->users; //更新文档 $condition=array(); $condition["id"]=1; $data=array(); $data['name']="wangwu"; $data['age']="11"; $collection->update($condition,$data); //插入文档 $data=array(); $data['id']=4; $data['name']="哈哈"; $data['age']="11"; $collection->insert($data); //删除文档 $condition=array(); $condition['id']=2; $collection->remove($condition); //查询文档 $users=$collection->find(); foreach ($users as $k => $v) { print_r($v); } ?>
mongodb与mysql命令对比
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、
集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,
这体现了模式自由的特点。MongoDB的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不
支持的,可以想办法通过数据冗余来解决多表查询的问题。
应用场景
· 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
· 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
· 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
· 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
· 视频直播,使用 MongoDB 存储用户信息、礼物信息等