この構造を持つPostgreSQLデータベースを備えたRubyonRailsアプリがあります。
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が2つしかないので、ActiveRecordクエリにかなり時間がかかることです。Cのテーブルに数千万の行がある場合、クエリは永久にかかります。
データベースを水平方向にスケーリングすることを考えています(つまり、Aごとに1つのテーブル、Bごとに1つのテーブル、Aごとに1つのCのテーブル)。しかし、私はそれを行う方法がわかりません。これは一種のシャーディングだと思いますが、テーブルがどのA imを操作しているかに依存している場合、DBテーブルを動的に作成し、ActiveRecordを使用してデータにアクセスする方法を理解できません。
どうもありがとうございます。