PostgreSQLのパーティションテーブルに毎日何百万もの行を書き込む大規模なWebアプリがあります(つまり、毎日のデータ用に新しいテーブルがあります)。
PostgreSQLのテーブル継承とパーティショニングを使用して、処理を高速化します。
DBには1年分のデータがあるため、挿入トリガーを効果的に使用してコンテンツを正しいテーブルにルーティングすることはできません(関数の長さが非常に長くなっています)。
insert
簡単に言うと、どのテーブルにupdate
データを保存するかを知るにはActiveRecordが必要です。ただし、selectやその他のDBタスクに使用されるテーブルは変更しないでください。
明らかに、モデルのテーブル名を定義するのは簡単ですが、特定のアクションだけのテーブル名をオーバーライドすることは可能ですか?
もう少し詳しく説明します。
データベース:
- テーブル: dashboard.impressions(id、host、data、created_onなど)
- テーブル: data.impressions_20120801(dashboard.impressionsから継承され、created_onの制約はテーブルの日付と同じです)
Impression.create :host=>"localhost", :data=>"{...}", created_on=>DateTime.now
data.impressions_20120801
テーブルに書き込む必要があります。テーブルにはすべてのデータが含まれているためImpression.where(:host=>"localhost")
、テーブルを検索する必要があります。dashboard.impressions
編集:PostgreSQL9.1とRails3.2.6を実行しています