代码之家  ›  专栏  ›  技术社区  ›  Wayne Conrad

Mongodb:使用前需要知道什么[关闭]

  •  92
  • Wayne Conrad  · 技术社区  · 16 年前

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

    5 回复  |  直到 16 年前
        1
  •  63
  •   Emily    16 年前

    如果您打算将MongoDB与Rails结合使用,我肯定会支持MongoMapper的建议。然而,我要警告你,除了几篇博文之外,没有其他文档(到目前为止)。如果您不喜欢深入研究源代码以了解如何工作,那么它可能还不适合您。

    如果您在Rails之外工作,我建议您远离MongoMapper。因为它将MongoDB转化为类似于我们从SQL支持的ORM中所期望的东西,所以它并不能让您真正了解MongoDB背后的力量和不同的思维方式。花些时间玩转低级ruby驱动程序,甚至在javascript控制台中。

    我推荐的另一件事,尤其是你提到知道如何规范化模式,是

    至于你应该看什么样的链接,我强烈建议你在MongoDB网站上尽可能多地阅读。他们的文档非常好。特别是看看 advanced queries , multikey indexes ,及 MapReduce 了解NoSQL数据库的一些独特优势和优势。

        2
  •  26
  •   Nerian    15 年前

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

    使用Mongoid而不是Mongomapper

    http://mongoid.org/

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

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

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

    用两个词来说:伟大的社区。

    有一个插件使您能够将Machinist与mongo一起使用:

    https://github.com/nmerouze/machinist_mongo

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

    你可以和机械师一起伪造。很棒的组合。

    https://github.com/sevenwire/forgery

    还有一件事我想说。我来自一个关系数据库世界,所以一开始听起来很奇怪:你可以在mongo数据库中保存文件。

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

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

    问我你是否需要更多的信息。

    编辑:

    也: http://railscasts.com/episodes/238-mongoid

        3
  •  8
  •   user956584    10 年前

    情商

    "_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支持限额、冲销、订单

    5.SQL中是SQL注入,MongoDB中是数组注入

    因此,当写入一些数据时,使用(字符串)或检查是_数组

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

    6.硬盘驱动器DOS

    PHP中的默认发布大小为8MB,Mongo中每个文档的大小限制为16MB。因此,想象一下,在分析脚本中有一些用户欺骗eq user_代理字符串,然后每次插入发送16MB。

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

        4
  •  3
  •   Kris Krause    16 年前

    这是一个很棒的初学者/从.NETRocks开始的MongoDb播客介绍-

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

    Mike Dirolf被采访了。。。他从事MongoDb项目。哦,而且音质非常好。

    Mike Dirolf是10gen的软件工程师,他在那里从事MongoDB项目。他主要工作在Python和Ruby的客户驱动程序上,还需要时间来谈论MangGDB——他已经在Eurypython、奇环CONF、RuyEnrRiRS、RuPy和RuyyCONF以及纽约、伦敦、华盛顿哥伦比亚特区和旧金山的MeeTUP小组介绍。

        5
  •  2
  •   t6d    16 年前

    您应该明确了解junemakers mongo mapper: http://github.com/jnunemaker/mongomapper 但我也建议您使用纯Ruby Mongo驱动程序来了解Mongo mapper在引擎盖下是如何工作的。使用Ruby将一些数据放入Mongo数据库并不困难。

    http://www.mongodb.org/display/DOCS/Ruby+Tutorial