你可以在Rails的多个数据库,每个模型可以有一个单独的连接,如果你想,这是核心功能的一部分,但是这不会是一个非常有效的缩放方式。通过调整设置,集群,复制或在应用程序本身中应用更严格的高速缓存,集中精力调整数据库堆栈通常要好得多。
跨数据库拆分表真的不会给你带来太多的可扩展性。更现代的方法是将每个表分割成不同的实例,但要走这条道路需要有重要的准备工作和对数据库体系结构的非常扎实的理解。由于您可以控制每个分片的大小,因此可以在这方面进行扩展而不受限制。
请记住,用ActiveRecord Rails的船舶作为一个标准的对象关系映射(ORM),但还有另外两个生产就绪型封装它提供不同的功能:DataMapper和Sequel
在我与开发大型体验应用程序,唯一一次你会发现数据库成为瓶颈的时候是当你使用调整不好的配置,设备功耗不足时,或者你的表结构没有足够的索引或去规范化。这对于所有数据库支持的应用程序来说都很常见,并不是Rails或Django所特有的,因此您在这里选择的平台实际上并不相关。
Rails应用程序的大部分性能提升来自正确的数据去规范化,使用由memcache支持的Rails.cache
,并在性能原因需要时从基于模型的负载切换到直接查询。 Rails可以在单个数据库实例上很好地扩展,在技术方面没有什么特别的东西,只是彻底应用了基本的优化原则。