我有一个带有 PostgreSQL 数据库的 Ruby on Rails 应用程序,它具有以下结构:
class A < ActiveRecord::Base
has_many :B
end
class B < ActiveRecord::Base
has_many :C
end
class C < ActiveRecord::Base
attr_accessible :x, :y :z
end
只有几个 A,而且增长缓慢(比如一个月 5 个)。每个 A 有数千个 B,每个 B 有数万个 C(因此每个 A 有数百万个 C)。
A 是独立的,来自不同 A 的 B 和 C 永远不需要在一起(即在同一个查询中)。
我的问题是,现在我只有几个 A,ActiveRecord 查询需要很长时间。当 C 的表有数千万行时,查询将永远持续下去。
我正在考虑水平扩展数据库(即A 的一个表,B 的一个表和每个A 的一个C 的表)。但我不知道该怎么做。我猜这是一种分片,但我不知道如何动态创建数据库表并使用 ActiveRecord 访问数据,如果表依赖于我正在使用的 A。
非常感谢。