MongoDB 简介

来源:互联网 发布:橡树岛宝藏 知乎 编辑:程序博客网 时间:2024/04/30 19:30

一. What?

MongoDB是面向文档的数据库,不是关系型数据库。放弃关系模型的主要原因就是为了获得更加方便的扩展性,当然还有其他的好处。对于大数据量、高并发、弱事务的互联网应用,MongoDB则是一个如瑞士军刀般的利剑。

文档: {_id:ObjectID(4532234123),name:"weixla",phone:{home:"02886786868",mobile:"13611204527"}}

集合: [文档,文档.......................]

数据库实例:[集合,集合,集合........................]

MongoDB:[数据库实例,数据库实例,数据库实例....................]

二. When?

当SQL满足不了你的需求或者SQL 已经不是必须的或者最佳的选择时,就是你考虑这类NoSQL 的时候了。

当你的内存大于你的数据时,schema也不是太确定时,mongodb在这里静静地等待My SQL转业户为了尝鲜过来看热闹的,不改变设计模式,爽在前面痛在后面;

当你唯一追求的就是速度,又对memcached的过于简单心存芥蒂,刚好内存也比数据多时,redis俏生生站在那里;

大,好大,太大了,我说的是数据,我们128GB内存双路CPU25TB存储只够一星期的时候,估计就没有选择综合症了,HBase成了唯一或者唯二选择了。

所以呢,不严谨地讲,Redis定位在"快",HBase定位于"大",mongodb定位在"灵活"。

NoSQL的优点正好就是SQL的软肋,而其弱点正好也就是SQL的杀手锏

最大区别在于,在一般使用情况下,mongodb可以当作简单场景下的但是性能高数倍的MySQL, Redis基本只会用来做缓存,HBase用来做离线计算

MongoDB 的使用也会有一些限制,例如,它不适合于以下几个地方:

● 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

● 传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

● 需要SQL 的问题。

案例:
Craiglist上使用MongoDB的存档数十亿条记录。
FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。

三. How?

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性。
*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
*文件存储格式为BSON(一种JSON的扩展)。
*可通过网络访问。

Mongodb的集群
Mongodb的集群模式是主从模式的集群,其中主服务器只有一个,支持读写,而从服务器可以有多个只支持读取操作。集群的主要目的是通过数据的冗余实现failover模式,从而提高数据库服务器的可用性。当主服务器断掉后其中的一个从服务器会自动升级为主服务器,其它drive client只要通过failover就可以自动切换到新的主服务器,正常工作。而当原来的主服务器再恢复工作的时候,它将自动转为从服务器。



Mongodb的可扩展性
Mongodb采用了最新的低成本的横向扩展模式,相对于传统的单结点纵向扩展,可以节约成功,而且有更好的可靠性,更好的数据处理性能。


1 0
原创粉丝点击