【问题标题】:Mongodb: What to know before using? [closed]Mongodb:使用前需要了解什么? [关闭]
【发布时间】:2011-01-08 14:50:05
【问题描述】:

我正在使用 Ruby on Rails 开始一个爱好(非收入)项目。我已经使用 Postgresql 在 Rails 中进行了大量开发,并且可以很好地模仿规范化模式。然而,Mongrodb 看起来又亮又新。有什么比业余项目更适合尝试新事物的呢?

回想一下你是从什么时候开始使用 Mongodb 的。你后来学到了什么技巧,让你说,“要是我开始的时候就知道就好了!”如果您知道的话,您发现哪些插件会从一开始就使用?您希望为哪些参考文献添加书签?

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongomapper


    【解决方案1】:

    1。查询不区分大小写

    当量

    "_id": "1da259c70fe3392c3b000002",
    "name": "Dany"
    
    array('name' => 'dany') :: results 0
    array('name' => 'Dany') :: results 1
    

    2。最后插入 ID:

    $coll->insert($user, true);
    echo (string) $user['_id'];
    

    3。 _id 是一个 MongoId 对象

    按 id 查找:

    $p->findOne(array('_id' => new MongoId( $UID  )), array('proj'));
    

    显示_id:

    $coll['_id'] = ( string ) $coll['_id'];
    

    另外 _id 仅在每个集合中是唯一的,在其他服务器上可以不同

    4。 MongoDB 支持 LIMIT,OFFSET,ORDER

    对于一些高级排序,您可以使用聚合框架。

    5。在 SQL 中是 Sql 注入在 MongoDB 中是数组注入

    所以当写一些数据时使用 (string) 或检查 is_array

    $req = (string) $range['name'];
    

    6。硬盘DOS

    在 PHP 中默认 _POST 大小为 8MB,在 Mongo 中,每个文档有 16MB 的限制。所以想象一下,一些用户在你的分析脚本中欺骗 eq USER_AGENT STRING,然后每次插入发送 16MB。

    7. MongoDb 过去存在一些问题,但现在 3.0 非常棒且稳定。

    【讨论】:

      【解决方案2】:

      我和你几乎处于同一阶段。使用 MongoDB 开始一个新项目。我大约有 7 周的经验。这是我发现非常有用的:

      使用 Mongoid 代替 Mongomapper

      http://mongoid.org/

      文档非常好。认真的,优秀的。阅读所有文档大约需要 15 分钟,您将对 Mongoid 可以做什么和不能做什么有一个非常准确的概念。

      明天,mongoid 新的主要版本的候选版本将发布。它会带来很多有用的东西。

      我正在使用 Rails 3。要安装开发版本,请将其添加到您的 gem 文件中:

      gem 'mongoid', "~>2.0.0.beta"

      目前的测试版是 20,但正如我所说,明天会有发布候选版。

      我也建议你加入 google 群组。它的流量很低,人们非常愿意回答任何问题。例如,我向他们展示了我的第一个 DB 模型设计,他们给了我很多改进的方法。 Mongoid 的创造者也回答了你的问题。

      两个词:伟大的社区。​​p>

      有这个插件可以让你使用 Machinist 和 mongo:

      https://github.com/nmerouze/machinist_mongo

      效果很好。

      gem 'machinist_mongo', :require => 'machinist/mongoid', 
      :git => 'http://github.com/nmerouze/machinist_mongo.git',
      :branch => 'machinist2'
      

      您可以对机械师使用 Forgery。很棒的组合。

      https://github.com/sevenwire/forgery

      我想说的另一件事。我来自关系数据库世界,所以一开始这听起来很奇怪:您可以将文件保存在 mongo 数据库中。

      事实上,它可能比我们过去那样管理它们更快。这是因为 mongo 支持分片。分片意味着您可以使用一组计算机来为 Mongo 数据库提供服务。它是无缝的。主从。因此,您可以从多台计算机提供文件,每台计算机发送一个部分。它的扩展性很好:)

      这是使用 GridFS 完成的。 http://www.mongodb.org/display/DOCS/GridFS

      Mongoid 支持主从配置。

      如果您需要更多信息,请询问我。

      编辑:

      还有:http://railscasts.com/episodes/238-mongoid

      【讨论】:

        【解决方案3】:

        这是一个很棒的初学者/来自 .NET Rocks 的 MongoDb 播客介绍 -

        http://www.dotnetrocks.com/default.aspx?ShowNum=507

        Mike Dirolf 接受采访...他从事 MongoDb 项目。哦,音质很棒。

        Mike Dirolf 是 10gen 的一名软件工程师,负责 MongoDB 项目。他主要研究 Python 和 Ruby 的客户端驱动程序,但也抽出时间谈论 MongoDB - 他曾在 EuroPython、Strange Loop Conf、RubyEnRails、RuPy 和 RubyConf 以及纽约市、伦敦、华盛顿的聚会小组中发表演讲华盛顿特区和旧金山。

        【讨论】:

          【解决方案4】:

          如果您打算将 MongoDB 与 Rails 一起使用,我肯定会支持 MongoMapper 的建议。但是,我会警告您,除了几篇博客文章之外,(到目前为止)没有任何文档。如果您不愿意深入研究源代码以了解其工作原理,那么它可能还不适合您。

          如果您在 Rails 之外工作,我建议您远离 MongoMapper。因为它使 MongoDB 成为类似于我们对 SQL 支持的 ORM 所期望的东西,所以它并不能真正让您很好地了解 MongoDB 背后的强大功能和不同的思维方式。花一些时间玩弄低级别的 ruby​​ 驱动程序,甚至在 javascript 控制台中。

          我要推荐的另一件事,尤其是在您提到知道如何规范化架构之后,暂时将 MongoDB 视为数据库。在 MongoDB 中组织数据的方式与使用关系数据库非常不同。尝试将其更多地视为存储和检索 Ruby 哈希的地方。您可以使用 MongoDB 做一些关系性的事情,但我建议您在尝试使用 NoSQL 时只使用自包含文档。

          至于您应该查看哪些链接,我强烈建议您阅读 MongoDB 网站上的所有内容。他们的文档非常好。特别是,请查看 advanced queriesmultikey indexesMapReduce,了解 NoSQL 数据库的一些独特优势和优势。

          【讨论】:

            【解决方案5】:

            你应该明确地看看 junemakers mongo-mapper:http://github.com/jnunemaker/mongomapper 但我也建议你玩一点纯 Ruby Mongo 驱动程序,看看 mongo-mapper 是如何工作的。使用 Ruby 将一些数据放入 Mongo 数据库并不难。

            我猜你已经找到了 Ruby Mongo 教程。以防万一,这里是链接:http://www.mongodb.org/display/DOCS/Ruby+Tutorial

            【讨论】:

            • 信不信由你,这不在我排队阅读的链接中,而且看起来不错。谢谢。
            猜你喜欢
            • 2011-04-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-16
            • 1970-01-01
            • 2011-01-13
            • 2011-04-12
            • 1970-01-01
            相关资源
            最近更新 更多