【发布时间】:2020-08-24 16:35:48
【问题描述】:
我正在尝试将来自数据不经常更改的源系统的记录存储在数据库中。只想在数据更改时存储新记录。例如,考虑一个具有整数主键和三个字段的 Postgres 表,a,b,c,
id, a, b, c
-----------
1 foo bar baz
如果我们的源系统提供以下更新
(foo, bar, baz)
(foo, bar, baz)
(foo, bar, bazinga)
那么数据库应该只用改变的记录来更新
id, a, b, c
-----------
1 foo bar baz
2 foo bar bazinga
我很难找到一种直接的方法来执行此操作。 这是数据库可以管理的事情还是应用程序必须这样做?
我的第一个想法是一个 upsert。是否可以在仅指定与更改相关的字段的情况下进行更新插入? upsort 可以忽略 pk/ID 字段吗?
另一种方法是根据某些字段计算传入值的哈希值,然后将其存储为附加列。然后新的写入只需要比较哈希字段。
id, a, b, c, hash
-----------------
1 foo bar baz, jl23l8s
2 foo bar bazinga, xl39la2
如果采用这种方式,应用程序应该负责拥有记录还是 DB 可以以某种方式处理?
【问题讨论】:
标签: python postgresql hash