`

PHP程序员应了解MongoDB的五件事

 
阅读更多

2010年应该被人们记住,因为SQL将在这一年死去。这一年关系数据库行将就木,这一年开发者发现他们再不需要长时间辛苦的构造列或者表格来存放数据。

  2010年将是文档型数据库的起始年。尽管这样的势头已经持续多年,现在才是一个更多,更广泛的文档型数据库出现的年代。从基于云计算的Amazon到Google,大量开源工具,以及随之诞生的CouchDB和MongoDB。

  那么什么是MongoDB?下面有五件事是PHP开发者应该了解的:

  1. MongoDB是一个单独的服务器;

  2. MongoDB是基于文档,而不是基于表;

  3. MongoDB中较少的Schema;

  4. 你不需要学习另外的语言;

  5. MongoDB有良好的PHP支持。

  1. MongoDB是一个单独的服务器

  就像MySQL和PostgreSQL一样,MongoDB将监听接入的链接。它提供的工具作用包括询问,创建,更新和删除。理论上,你将跟在MySQL和PostgreSQL一样的进行工作:链接,处理,然后再关闭链接。

  2. 向行和表说再见,欢迎文档和收集器

  代替储存数据的表和行,MongoDB将数据储存在文档中。假如我们有一篇带标题的“文章”,它有多个作者,一个主题和标签。所有这些看起来就像下面:

  

  array(

  'title'=>'Hello World',

  'authors'=>array('John','Sally','Jim'),

  'body'=>'Hello world',

  'tags'=>array('tag1','tag2','tag3')

  );

  ?>

  上面的例子中最关键的就是那一条记录——这篇文档——是的,确实存储起来就像是一篇文档,支持复合形式的值存储在同一区域。不再需要结构化,不需要将数据按照表来区分。因此,表已经不存在了。

  3. MongoDB包含较少的schema

  MongoDB没有schema语言。如果你想新建一种文档类型,你不需要告诉数据库任何事情。尽管将新的数据放到数据库中就行了。

  在第二点中,我模拟了一个文档。现在我想为所有区域定义一个文章类型,所有我需要做的就是将这些数据写到数据库中。如果我决定延缓写入呢?我只需要拉出这部分数据,然后加上日期字段,最后保存就行。

  那么数据类型怎么办?简单的回答就是MongoDB运用一种强制系统,类似JavaScript或者PHP。如此这样,数据库极好的弱化了类型的作用。

  这有一些漏洞(超大量的数据需要一些明确的定义),不过多数情况下,你写你的MongoDB代码就像在PHP上编程一样。

  4. 你不需要学习另外的语言

  回忆一下其他你曾写过的数据库抽象层。回忆所有你曾使用过的ORM层。那么你现在可以抛弃他们的,在MongoDB上你用不着他们了。

  MongoDB(包含它的PHP驱动)不需要询问语言。在大多数案例中,你只需要简单的给定一个指针具体制定你需要的,然后返回你一个文档指向。

  如果你运行一些高阶函数(比如Map-Reduce),你可以通过JavaScript应用加入到MongoDB中去,并且在JavaScript内部引擎中运行这些脚本。

  5. PHP和MongoDB是天生一对?

  PHP已经对MongoDB具备很好的支持。Mongo驱动可以作为一个PECL加载项加入到PHP,这意味着安装起来就像运行PECL一样安装Mongo。

  看到这里,你可以开始编写Mongo的API了。更广一些说,它和PDO排在一起。不是简单的消亡,但是绝对不同于我们之前开发过的数据库。

  API的说明文档将包括一个引导和许多例子,这样你就可以在短时间内自举。下面将是对你十分有用的提示。

  MongoDB发展非常快。

  开发时间非常短,没有过多的模式来管理,很少(如果有的话)的数据映射。

  因为没有新的查询语言要学习,代码的调整很小。毕竟,你不需要另外的ORM,封包也非常轻。

  你的代码是未来的保证,可以更轻松的为你的对象增加更多的领域,甚至是更复杂的领域。因此你的代码可以很轻松的适应需求的变化。

  延伸阅读

  Mongo是一个高性能,开源,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发,提供了以下功能:

  ◆ 面向集合的存储:适合存储对象及JSON形式的数据。

  ◆ 动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

  ◆ 完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。

  ◆ 查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。

  ◆ 复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。

  ◆ 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。

  ◆ 自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。

  MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。根据官方网站的描述,Mongo适合用于以下场景:

  ◆ 网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

  ◆ 缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。

  ◆ 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

  ◆ 高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。

  ◆ 用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。

  自然,MongoDB的使用也会有一些限制,例如它不适合:

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

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

  ◆ 需要SQL的问题。

  MongoDB支持OS X、Linux及Windows等操作系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。

分享到:
评论

相关推荐

    作为PHP程序员应该了解MongoDB的五件事

    作为程序员,了解MongoDB的以下五个方面将对数据库操作和应用开发大有裨益。 首先,MongoDB是一个独立的服务器。它不依赖于其他数据库管理系统的功能,而是提供了完整的数据存储解决方案,包括了查询、创建、更新、...

    MongoDB程序员认证: MongoDB Certified Developer Study Guide

    MongoDB程序员认证: MongoDB Certified Developer Study Guide - Study Guide - Exam Preparation - Practise Questions

    php windows下安装mongodb服务

    在`php5.3(ts+vc9)+mongodb.zip`这个压缩包中,应包含扩展文件`php_mongodb.dll`。 - 将`php_mongodb.dll`复制到PHP的`ext`目录下,例如`C:\wamp\bin\php\php5.3.x\ext`。 - 修改`php.ini`配置文件,找到`...

    php_mongodb-1.2.9-7.1-nts-vc14-x86

    这个扩展让PHP程序员能够与MongoDB数据库进行交互。 描述中提到“php7.0以上配置MongoDB环境”,意味着你需要确保你的PHP环境至少是7.0版本,因为此扩展不支持更低版本。同时,“phpx86结构环境”指的是该扩展是为...

    php Mongodb 操作类

    在PHP开发中,MongoDB是一个广泛使用的文档型数据库系统,尤其适合处理大量非结构化数据。这个"php Mongodb操作类"是专为在PHP环境中与MongoDB数据库进行交互而设计的工具,允许开发者轻松地执行创建(Create)、...

    mongodb 副本集php文件样例,php连接mongodb

    mongodb 副本集php文件样例,php连接mongodb

    mongodb-1.6.0.tgz php扩展

    PHP扩展是为了让PHP程序员能够方便地与MongoDB数据库进行交互而设计的。这里提到的是"mongodb-1.6.0.tgz",这是一个针对PHP的MongoDB扩展的特定版本,封装了与MongoDB服务器通信所需的功能。 MongoDB PHP扩展的核心...

    mongodb + php扩展文件

    MongoDB是一种分布式文档数据库,它在处理大量数据时提供了高性能、高可用性和可扩展性。PHP是广泛用于Web开发的脚本语言,它有一个专门的MongoDB扩展,允许开发者直接在PHP中操作MongoDB数据库。这个压缩包包含了...

    php封装的mongodb操作类.zip

    首先,这个“php封装的mongodb操作类”是为了解决PHP与MongoDB之间的交互问题,提供一套便捷的API,使得开发人员无需深入了解MongoDB的底层细节,就能完成诸如连接数据库、创建集合、插入文档、查询数据、更新和删除...

    php+mongodb小型留言板

    在本项目中,“php+mongodb小型留言板”是一个适合初学者的...通过这个项目,你可以进一步了解PHP与MongoDB之间的交互方式,以及如何将它们整合到实际应用中。同时,它也可以作为提升编程技能和实践数据库操作的起点。

    PHP 连接mongodb 类

    PHP 连接mongodb完整类,PHP调用类中函数轻松完成开发

    mysql+mongodb+redis.rar

    了解这些数据库的基本特性后,开发者可以根据项目需求选择合适的数据存储方案。例如,对于需要快速读写和处理动态数据的社交应用,可以使用Redis作为缓存,MongoDB处理用户资料和交互数据,而MySQL则用于存储稳定的...

    很全的_Mongodb数据库学习文档_与_php操作mongodb

    通过上述详尽的介绍,我们不仅了解了MongoDB的基本概念和安装流程,还深入探讨了如何在不同操作系统环境下启动数据库服务,以及如何使用PHP语言进行数据库操作。这对于初学者和有一定经验的开发者而言,都是极其宝贵...

    PHP如何连接mongo,PHP连接mongodb

    PHP如何连接mongo,PHP连接mongodb的方法,和查询,update、insert、find

    PHP操作MONGODB详细文档

    PHP 操作 MongoDB 详细文档 本文档详细介绍了 PHP 操作 MongoDB 的方法,包括 MongoDB 的启动、关闭、添加用户和权限验证等内容。...通过本文档,读者可以了解 MongoDB 的基本操作和 PHP 操作 MongoDB 的方法。

    php MongoDB for CI

    在本文中,我们将深入探讨如何在CodeIgniter(CI)框架中使用PHP与MongoDB进行集成,以便在Web开发项目中充分利用NoSQL数据库的优势。"php MongoDB for CI" 是一个针对CI框架的MongoDB扩展,它提供了一种简单且高效...

    php_mongoDB的拓展dll文件v5.2-5.3

    MongoDB是一种分布式文档型数据库,广泛用于Web开发,因为它提供了灵活的数据模型和高可用性。在PHP环境中,为了能够操作MongoDB,我们需要安装一个特定的扩展——PHP MongoDB Extension。这个扩展使得PHP代码能够与...

    php_mongodb.dll php 7.0下载

    **PHP与MongoDB驱动介绍** MongoDB是一款高性能、无模式的文档型数据库,它在处理大量数据时表现出色,尤其适合大数据应用场景。PHP是广泛使用的服务器端...了解并掌握其用法对于进行PHP与MongoDB的数据交互至关重要。

    php7简单链接mongodb类

    php7简单链接mongodb类

Global site tag (gtag.js) - Google Analytics