我正在使用 Ruby on Rails 开始一个爱好(非收入)项目。我已经使用 Postgresql 在 Rails 中进行了大量开发,并且可以很好地模仿规范化模式。然而,Mongrodb 看起来又亮又新。有什么比业余项目更适合尝试新事物的呢?
回想一下你开始使用 Mongodb 的时候。你后来学到了什么技巧,让你说,“要是我开始的时候就知道就好了!” 如果您知道的话,您发现哪些插件会从一开始就使用?您希望为哪些参考文献添加书签?
我正在使用 Ruby on Rails 开始一个爱好(非收入)项目。我已经使用 Postgresql 在 Rails 中进行了大量开发,并且可以很好地模仿规范化模式。然而,Mongrodb 看起来又亮又新。有什么比业余项目更适合尝试新事物的呢?
回想一下你开始使用 Mongodb 的时候。你后来学到了什么技巧,让你说,“要是我开始的时候就知道就好了!” 如果您知道的话,您发现哪些插件会从一开始就使用?您希望为哪些参考文献添加书签?
如果您打算将 MongoDB 与 Rails 一起使用,我肯定会支持 MongoMapper 的建议。但是,我会警告您,除了几篇博客文章之外,(到目前为止)没有任何文档。如果您不愿意深入研究源代码以了解其工作原理,那么它可能还不适合您。
如果您在 Rails 之外工作,我建议您远离 MongoMapper。因为它使 MongoDB 成为类似于我们对 SQL 支持的 ORM 所期望的东西,所以它并不能真正让您很好地了解 MongoDB 的强大功能和不同的思维方式。花一些时间玩弄低级别的 ruby 驱动程序,甚至在 javascript 控制台中。
我建议的另一件事,特别是因为您提到知道如何规范化模式,现在不要将 MongoDB 视为数据库。在 MongoDB 中组织数据的方式与使用关系数据库非常不同。尝试将其更多地视为存储和检索 Ruby 哈希的地方。您可以使用 MongoDB 做一些关系性的事情,但我建议您在尝试使用 NoSQL 时只坚持使用自包含文档。
至于您应该查看哪些链接,我强烈建议您阅读 MongoDB 站点上的所有内容。他们的文档非常好。特别是,看看高级查询、多键索引和MapReduce,以了解 NoSQL 数据库的一些独特优势和优势。
我和你几乎处于同一阶段。使用 MongoDB 开始一个新项目。我大约有 7 周的经验。这是我发现非常有用的:
使用 Mongoid 而不是 Mongomapper
文档非常好。认真的,优秀的。阅读所有文档大约需要 15 分钟,您将对 Mongoid 可以做什么和不能做什么有一个非常准确的概念。
明天,将发布新的主要版本 mongoid 的候选版本。它会带来很多有用的东西。
我正在使用 Rails 3。要安装开发版本,请将其添加到您的 gem 文件中:
gem 'mongoid', "~>2.0.0.beta"
当前的 beta 版本是 20,但正如我所说,明天会有发布候选版本。
另外,我建议您也加入 google 组。它的流量很低,人们非常愿意回答任何问题。例如,我向他们展示了我的第一个 DB 模型设计,他们给了我很多改进的方法。Mongoid 的创建者也回答了您的问题。
用两个词:伟大的社区。
有这个插件可以让你在 mongo 中使用 Machinist:
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 支持主从配置。
问我是否需要更多信息。
编辑:
情商
"_id": "1da259c70fe3392c3b000002",
"name": "Dany"
array('name' => 'dany') :: results 0
array('name' => 'Dany') :: results 1
$coll->insert($user, true);
echo (string) $user['_id'];
按 id 查找:
$p->findOne(array('_id' => new MongoId( $UID )), array('proj'));
显示_id:
$coll['_id'] = ( string ) $coll['_id'];
此外 _id 仅在每个集合中是唯一的,在其他服务器上可能不同
对于一些高级排序,您可以使用聚合框架。
所以当写一些数据时使用(字符串)或检查 is_array
$req = (string) $range['name'];
PHP 中的默认 _POST 大小为 8MB,在 Mongo 中,每个文档有 16MB 的限制。所以想象一些用户在你的分析脚本中欺骗 eq USER_AGENT STRING,然后每次插入发送 16MB。
这是来自 .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 以及纽约市、伦敦、华盛顿的聚会小组中发表演讲华盛顿特区和旧金山。
你应该明确地看看 junemakers mongo-mapper: http: //github.com/jnunemaker/mongomapper但我也建议你玩一点纯 Ruby Mongo 驱动程序,看看 mongo-mapper 是如何工作的。使用 Ruby 将一些数据放入 Mongo 数据库并不难。
我猜你已经找到了 Ruby Mongo 教程。以防万一你没有,这里是链接:http ://www.mongodb.org/display/DOCS/Ruby+Tutorial