arc*_*ane 7 django postgresql partitioning
我有一个使用Postgres 9.3的Django 1.7项目.我有一张会有相当高音量的桌子.该表每月将有1300万到4000万新行.
我想知道将Postgres表分区与Django合并的最佳方法是什么?
ram*_*sus 14
您可以将Architect应用程序用于Postgresql表分区Django项目
PostgreSQL在Architect中的分区实现完全在数据库级别完成.这意味着Architect会创建多个触发器和函数并将它们直接插入到数据库中,因此即使您从数据库控制台而不是从ORM发出直接insert语句,一切都将按预期工作,并且记录将插入到正确的分区中,如果分区不存在,它将自动为您创建.也可以按任何顺序创建分区,而不仅仅是从低到高.
它是旧版Django DB Parti应用程序的新版本
只要你使用继承,然后只将父表连接到你的Django模型,分区应该对Django完全透明.也就是说SELECT,除非ONLY明确使用关键字(如果适用),否则父表上的a 将级联到分区.
请注意,分区确实增加了复杂性,需要实现确定何时需要创建新分区的编程方法,然后创建它们 - 或者以特定间隔手动执行此操作.根据您的确切数据和业务逻辑,您很可能还需要实现触发器和规则来确定将INSERT某个分区放入(因为您不希望INSERT进入父表).但是,这些也应该从Django中提取出来.
我发现,根据具体情况,可能需要关闭主应用程序,以免新分区创建导致死锁.
也是值得考虑的是,是否需要它随着时间的推移产生真正的分区,或者如果,一个继承模型说,表格foo和foo_archive就足够了,其中foo_archive来自继承foo,并定期的东西(如脚本)较旧的数据移动到foo_archive保持foo较小.
| 归档时间: |
|
| 查看次数: |
4307 次 |
| 最近记录: |