Home > Database > Mysql Tutorial > body text

使用MongoDB开发实践体会

WBOY
Release: 2016-06-07 17:17:58
Original
932 people have browsed it

年前在项目中使用了NoSQL的代表之一 mdash;mdash; MongoDB,微博上总结了一些心得,在这里和各位分享一下。MongoDB是一个非常适

年前在项目中使用了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使用的体会,你有什么看法呢?欢迎评论留言!

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template