django - PgSQL,Django - 具有许多字段的表的历史记录 - 如何正确组织?
问题描述
我是 Django 新手,对 PgSQL 不是很有经验。我需要创建一个包含大约 10 个字段的表。问题是我不断更改的每个项目,我需要保留每个字段的更改历史记录。目前,我为此目的找到了几种解决方案,但我担心:
1) https://github.com/arkhipov/temporal_tables
数据库和触发器上的继电器。问题是历史记录保存在一个额外的单个表中,因此每次更改 1 个字段时,它将创建一个包含 9 个剩余字段的新历史记录,我打算显示每个字段的历史记录,而不是每个项目,因此数据量将增长 9 倍没有目的的更快。还是DB会优化它?此外,还有图像,自然只有开/关日期时间历史。
2) https://github.com/treyhunner/django-simple-history
比第一个更好,因为它与 Django 集成。还有很多功能,比如自定义历史日期(我在文件中有很多快照)。但还是和1一样的担心
3)手动创建带有ID的主表,并为每个字段制作关系表。看起来像是管理的噩梦。此外,需要执行大量连接才能获得当前的完整记录(Django 可以使用 VIEW 吗?)
那么你能建议更好的解决方案吗?或者也许我对大量剩余数据的想法是错误的,我应该停止打扰?
解决方案
通常PG对性能进行了很好的优化。
这实际上取决于您将存储多少数据。但是,您不能为每行而不是每字段所做的每一次更改制作一个附加表吗?这样做有什么影响?
但是,您也可以使用历史的持久性。例如,仅存储每个字段的最后 3 个版本。这将最小化您的数据,但您需要通过代码来管理它,或者制作一个触发器/程序。除此之外,如果您想在某天检索它,您始终可以在本地/云端进行备份和存储。
如果您坚持使用每个字段的记录的第一个选项,我建议使用 django 集成,但这真的取决于您。
推荐阅读
- npm - 找不到入口模块中的错误:错误:无法解析“./src/modules/readme.md/index.js”
- xml - 为 XML 网络服务创建 wsdl
- sql - 在计算之前过滤 Postgres percent_rank 但显示所有结果?
- python - 无法在 Lazada Marketplace 上抓取数据
- wordpress - 在我的 wordpress 网站上,我正在使用联系表格 7,并在我找不到删除选项的页面上获取他的代码输出
- javascript - Chart.js 结果和数据列表之间的颜色连接
- reactjs - 我是新手,我正在尝试运行一个项目,它抛出错误 static/js/bundle.js failed
- git - 使用 JGit 添加文件路径列表时是否有任何语法错误
- kubernetes-ingress - 如何在 Kubernetes Ingress 中配置路径匹配
- c - &array[i] 总是等价于 (array + i) 吗?