我有一个大型 Web 应用程序,它每天将数百万行写入 PostgreSQL 中的分区表(这意味着每天的数据都有一个新表)。
我们正在使用PostgreSQL 的表继承和分区来加快速度:
由于我们的数据库中有一年的数据,我们无法有效地使用插入触发器将内容路由到正确的表(函数的长度变得非常非常长)。
长话短说,我们需要 ActiveRecord 来知道哪个表insert
和update
数据。但是,不要更改用于选择和其他数据库任务的表。
显然,为模型定义表名很简单,但是是否可以仅针对特定操作覆盖表名?
这里有更多细节:
数据库:
- 表: dashboard.impressions(id、主机、数据、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
表,因为它包含所有数据。
编辑:我正在运行 PostgreSQL 9.1 和 Rails 3.2.6