2

如果我想通过根据授权规则(位置和用户角色)将其数据库分布在不同的机器上来扩展 Rails 应用程序。因此,归属于该位置的任何资源都将位于专用于该位置的数据库中。

我应该开始编写基本的 SQL,使用 Sequel gem 之类的东西还是保持ActiveRecord的优点和魔力?

4

2 回答 2

3

确实,原始 SQL 的执行速度超过了 ActiveRecord 的神奇查询的执行速度。但是,如果您谈论扩展,那么就会出现这样一个问题,即当应用程序真正变大时,查询的可管理性如何。

到目前为止,许多复杂的数据库操作都可以通过缓存、适当的索引和适当的预加载来很好地管理。在某些情况下,MySQL 视图也有助于提高性能,Rails 公平地对待 MySQL 视图。在此之后,如果能够排除非常慢的查询,那么将它们转换为原始 SQL 并节省一些时间可能是值得的。此外,Rails 还提供数据库查询的缓存。MySQL 也有缓存机制。在直接执行原始 SQL 之前,我会确保这些选项(实际上更像是避免不必要的连接,因为连接操作是资源密集型的)不能给我我正在寻找的东西。希望这可以帮助。

于 2011-10-27T06:29:02.590 回答
3

听起来您正在对数据库进行分区,Sequel 内置了对 (http://sequel.rubyforge.org/rdoc/files/doc/sharding_rdoc.html) 的支持。我建议使用 Sequel,但作为首席开发人员,我有偏见。

于 2011-10-27T16:21:10.663 回答