继续我发布的一个问题,将大容量和高访问量的表移动到单独的数据库是个好主意吗?,正在寻找可用于 PostgreSQL 中的数据库归档的不同技术/解决方案。
我能想到的几个解决方案是:
- 表分区
- 单独的表空间和/或模式
- 将存档的记录/表格移动到不同的硬盘
任何其他建议/指针/解决方案都非常受欢迎和赞赏。
注意:我们在 CentOS5.2 上运行 PostgreSQL v9.1.3
继续我发布的一个问题,将大容量和高访问量的表移动到单独的数据库是个好主意吗?,正在寻找可用于 PostgreSQL 中的数据库归档的不同技术/解决方案。
我能想到的几个解决方案是:
任何其他建议/指针/解决方案都非常受欢迎和赞赏。
注意:我们在 CentOS5.2 上运行 PostgreSQL v9.1.3
我对归档的建议:
archive_tablespace
(如果需要,可以在存档中分离硬件)创建表。例如,我们要归档表格帖子。
之后,我们将有 2 个新表:public.posts_all(与帖子中的列相同)用于查询所有帖子(存档和生产)和 public.posts_archive 用于查询所有存档帖子。Public.posts 将继承自 posts_all。
插入应该以旧方式进行(到表 public.posts),除非您将在 posts_all 上编写触发器以将插入重定向到帖子表。如果你有分区,它会更复杂。对于正在运行的应用程序,在旧数据迁移之前,您无需更改应用程序代码中的任何内容即可使用此方法。
为逻辑分离创建模式存档。如果可能的话,我的建议是按某个时间段(年或月)分隔存档数据(archive_2005)。
在 archive_year 模式中创建归档表
之后,您将在模式archive_2005 中拥有新表posts,并且postgresql planer 将知道那里的数据仅在设计的时间段内。如果您按另一个时间段查询,postgresql 将不会在此表中搜索。
创建函数/过程/触发器以将数据移动到存档表。
如果实施:
archive_tablespace
或只是将其更改为从 posts_archive 继承(我没有测试这个)这是通用技术,您应该根据自己的需要进行调整。有什么建议可以改进吗?
延伸阅读:PostgreSQL 继承、分区