有没有必要完全运行两个应用程序只是为了有两种类型的数据库的过度复杂的事情。这听起来像你需要DataMapper。它将完全满足您开箱即用的需求。获得dm-rails gem将其与Rails集成。
在DataMapper中,与ActiveRecord不同,您必须提供有关底层数据存储的所有详细信息:它具有哪些字段,它们如何映射模型中的属性,表名称是什么(如果在数据库中),后端它使用等等。
阅读文档...有一桶代码给你一个想法。
每个模型只是一个普通的旧Ruby对象。类定义只是混入DataMapper::Resource
,这使您可以访问所有的DataMapper的功能:但是
class User
include DataMapper::Resource
property :id, Serial
property :username, String
property :password_hash, String
property :created_at, DateTime
end
你有大量的控制。例如,我可以指定此模型不存储在我的默认数据存储库(存储库)中,并且存储在其他配置的数据存储区之一(如果您喜欢,可以是NoSQL存储区)。
class User
include DataMapper::Resource
storage_names[:some_other_repo] = 'whatever'
# ... SNIP ...
end
大多数DM在类固醇上的行为与ActiveRecord类似。你得到所有的基本知识,如发现记录(除非你永远不必使用原始字段名,如果你的模型抽象他们离开):
new_users = User.all(:created_at.gte => 1.week.ago)
你得到验证,你观察,你会得到总处理...然后获得一堆其他的东西,如战略性的急切加载(解决n + 1查询问题),延迟加载大型文本/ blob字段,以及多个存储库支持。在我看来,查询逻辑比AR好得多。只需阅读文档。他们是人性化的。不只是一个API参考。
缺点是什么?那么,许多宝石并没有考虑到你可能没有使用ActiveRecord,所以当你需要一些宝石时,有更多的搜索要做。不过随着时间的推移,这会变得更好,因为在Rails 3.x将DM与Rails无缝集成之前并不那么容易。
...你能更具体吗?我的意思是,我真的很舒服,mongoid,从Rails的角度来看也是如此。无论如何,我们还需要管理MySQL数据库,以响应相同的应用程序。提前致谢。 – 2011-05-29 11:57:09
看到我的更新,并阅读文档...它都在那里。内置多个数据库/无SQL /无论你如何支持。 – d11wtq 2011-05-29 12:14:30
这里是DataMapper的MongoDB适配器:https://github.com/solnic/dm-mongo-adapter – d11wtq 2011-05-29 12:18:25