mongodb使用场景
MongoDB的运用场景:
1.Web运用程序。文档能表明丰厚的数据结构,建模相同数据库所需的调集数量一般会比运用完全正规化联系型数据库的数据表数量要少。动态查询和二级索引能让你轻松的完成SQL开发者所了解的大多数查询。作为一个成长中的Web运用程序,MongoDB供给了清晰的扩展路线。
2.敏捷开发。MongoDB没有固定的Schema,一切花在提交、交流和施行Schema变更的时间都生下来了。
3.剖析和日志。MongoDB的方针原子更新和固定调集。
4.缓存
5.可变Schema
MongoDB提示与局限:大多数是因为MongoDB运用内存映射文件导致的。
1.MongoDB应该运转于64位机器上。32为体系只能对4GB内存做寻址。
2.数据占用的内存会主动按需分配。这样一来在共享环境中运转数据库会变得愈加麻烦。所以最好能让MongoDB运转在一台专门的服务器上。
3.运转带仿制功能的MongoDB是十分重要的,特别是没有开启Journaling日志的时分。
1.mongodb介绍
MongoDB(名称来自”humongous”)是一个可扩展的高性能,开源,模式自在,面向文档的数据库。它运用C++编写。MongoDB特点:
a.面向调集的存储:适宜存储方针及JSON方法的数据。
b.动态查询:mongo支撑丰厚的查询表达方法,查询指令运用JSON方法的标记,可轻易查询文档中的内嵌的方针及数组。
c.完好的索引支撑:包括文档内嵌方针及数组。mongo的查询优化器会剖析查询表达式,并生成一个高效的查询计划。
d.查询监督:mongo包括一个监督东西用于剖析数据库操作性能。
e.仿制及主动毛病搬运:mongo数据库支撑服务器之间的数据仿制,支撑主-从模式及服务器之间的相互仿制。仿制的首要目的是供给冗余及主动毛病搬运。
f.高效的传统存储方法:支撑二进制数据及大型方针(如照片或图片)。
g.主动分片以支撑云等级的伸缩性:主动分片功能支撑水平的数据库集群,可动态添加额外的机器。
2.mongo运用场合
mongodb的首要方针是在键/值存储方法(供给了高性能和高度伸缩性)以及传统的RDBMS体系(丰厚的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:
a.网站数据:mongo十分适宜实时的刺进,更新与查询,并具备网站实时数据存储所需的仿制及高度伸缩性。
b.缓存:因为性能很高,mongo也适宜作为信息基础设施的缓存层。在体系重启之后,由mongo搭建的耐久化缓存能够防止下层的数据源过载。
c.大尺寸、低价值的数据:运用传统的联系数据库存储一些数据时或许会比较贵,在此之前,许多程序员往往会挑选传统的文件进行存储。
d.高伸缩性的场景:mongo十分适宜由数十或许数百台服务器组成的数据库。
e.用于方针及JSON数据的存储:mongo的BSON数据格式十分适宜文档格式化的存储及查询。
不适宜的场景:
a.高度事物性的体系:例如银行或会计体系。传统的联系型数据库目前还是更适用于需求许多原子性复杂事务的运用程序。
b.传统的商业智能运用:针对特定问题的BI数据库会对产生高度优化的查询方法。对于此类运用,数据仓库或许是更适宜的挑选。
c.需求SQL的问题。
开发顶用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时,排序字段值需求强制类型。不然排序的时分会有问题。不强制类型时会相似以下方法:11023解决办法就是在写入的时分加上(int)$sort强制一下类型。
MongoDB遇到“Caughtexception:non-utf8string:”的异常,这是刺进非UTF8编码文字的时分就会抛出。
评论前必须登录!
注册