请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 5679|回复: 7

使用MongoDB开发实践体会

  [复制链接]
发表于 2012-11-9 09:09:51 | 显示全部楼层 |阅读模式
年前在项目中使用了NoSQL的代表之一 —— MongoDB,微博上总结了一些心得,在这里和各位分享一下。

开发中用MongoDB的爽快之处

MongoDB是一个非常适合PHP开发的#NoSQL# 数据库,尤其支持高并发和schema-free(自由结构)特性,使得PHP开发变得更灵活,更高效。大家都来试试吧!

或许很多时候,记录在mysql里面的自由字段(如序列化后的数组),都很难去回忆或者找到在什么地方。而mongodb却可以让你轻松找到需要的数组,而且很有规律(条件查询)。这种轻松,对比起来就知道了。

mysql在大数据量情况下,orderby和groupby的效率会非常的低。从目前的实践来看,mongodb是很有希望和很有必要替代orderby和groupby,因其有灵活的数据结构模型,可作为一个可查找和排序、归类的数据中间缓存层,而且效率会比通常的mysql查询高很多。

思考MongoDB的使用场景

重要数据:mysql,一般数据:mongodb,临时数据:memcache

对于关系数据表而言,mongodb是提供了一个更快速的视图view;而对于PHP程序而言,mongodb可以作为一个持久化的数组来使用,并且这个持久化的数组还可以支持排序、条件、限制等功能。

将mongodb代替mysql的部分功能,主要一个思考点就是:把mongodb当作mysql的一个view(视图),view是将表数据整合成业务数据的关键。比如说对原始数据进行报表,那么就要先把原始数据统计后生成view,在对view进行查询和报表。从这个意义上,mongodb提供了一个更快速,更使用的view

PHP中使用MongoDB要注意的

Mongodb等noSQL技术,作为memcache和mysql的一个中间view是比较好的选择。而noSQL进行持久化是非常不好的事情,除非有SSD硬盘,否则普通硬盘条件下,持久化会令系统负担极大,并且效率甚至有可能比mysql还要低。

在用 PHP 操作 MongoDB 时,排序字段值需要强制类型。不然排序的时候会有问题。 不强制类型时会 类似以下形式: 1 10 2 3 解决办法就是在写入的时候 加上 (int)$sort 强制一下类型。

MongoDB遇到“Caught exception: non-utf8 string: ”的异常,这是插入非UTF8编码文字的时候就会抛出

以上就是我在微博中总结的一些MongoDB使用的体会,你有什么看法呢?欢迎评论留言!

发表于 2012-11-9 10:42:04 | 显示全部楼层
第一时间学习!
发表于 2012-11-9 16:23:26 | 显示全部楼层
谢谢分享!!!!
发表于 2012-11-14 15:41:53 | 显示全部楼层
我是刚知道这个玩意,楼下,你怎么看?
发表于 2012-12-19 17:19:25 | 显示全部楼层
咱这框架什么时候支持MongoDB
 楼主| 发表于 2012-12-19 21:30:21 | 显示全部楼层
gabacai 发表于 2012-12-19 17:19
咱这框架什么时候支持MongoDB

mongodb的PHP扩展已经做的很完善,没必要进行封装。所以直接可以用。
发表于 2012-12-27 22:25:29 | 显示全部楼层
暂时不打算用新东西,还是踏踏实用mysql
发表于 2012-12-29 11:54:13 | 显示全部楼层
谢谢分享了
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-5-25 11:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表