Php 锁定MongoDB以创建类似Pintrest的网站

Php 锁定MongoDB以创建类似Pintrest的网站,php,codeigniter,mongodb,mongodb-php,Php,Codeigniter,Mongodb,Mongodb Php,我们的一个客户项目是一个类似Pinterest的网站。一段时间以前,它是用MySQL和CodeIgniter制作的。因为他们最近得到了资金,希望能获得更多的流量。我们正在重建该网站,并正在认真考虑MongoDB,因为它似乎是一个更成熟的NoSQL DB,拥有庞大的用户群 我知道在2.2版发布之前,他们对全局锁定有一些担忧 这是我使用mongodb和NoSQL的第一个项目。我有一个问题: 写锁仍然是我应该担心的事情吗 我在其他几个地方的研究表明,这并不像最初听起来的那样是件坏事 来自10gen的

我们的一个客户项目是一个类似Pinterest的网站。一段时间以前,它是用MySQL和CodeIgniter制作的。因为他们最近得到了资金,希望能获得更多的流量。我们正在重建该网站,并正在认真考虑MongoDB,因为它似乎是一个更成熟的NoSQL DB,拥有庞大的用户群

我知道在2.2版发布之前,他们对全局锁定有一些担忧

这是我使用mongodb和NoSQL的第一个项目。我有一个问题:

  • 写锁仍然是我应该担心的事情吗

    • 我在其他几个地方的研究表明,这并不像最初听起来的那样是件坏事

      来自10gen的关于全局锁的视频: (全局锁定问题跳到55:00)

      mongodb的当前版本:2.4——全局锁移除发生在2.2中 详情:

      通过观看其他几段视频,以下陈述总结了我目前对该问题的理解:
      “10gen代表:全局锁是我们非常重视的问题。服务器范围的锁已经消失,现在它是数据库级别的锁,将来我们计划将其设置为集合级别…”


      “如果您试图更新的记录在RAM中,您将不会注意到更新,因为它太快了。这听起来很可怕,但您不应该因此面临太多问题”

      这是一个非常广泛的问题,关于第二点,您可以为生产中的任何db写一篇关于gotchas的文章,更不用说MongoDB了;然而,谷歌是这里的好朋友,搜索“mongodb gotchas”会带来大量信息链接。至于锁定,它是在数据库级别上,但是MongoDB确实更喜欢并发特性而不是锁定,即当操作的数据不在RAM中时,操作将优先于其他操作,等等,并且操作被设计为尽可能少地保持锁定。谢谢,我很好地参考了gotchas。首先,我要添加两个建议,确保您的数据模型反映了从关系数据库到文档数据库的转变。请参阅,以获取一些指南和到最后示例数据模型的链接。其次,我肯定会使用尽可能接近真实世界的数据和用例对您选择的模型执行负载测试。我会这样做,不管你正在考虑什么数据库。