在PostreSQL中实现数据版本控制的方法

Pio*_*pla 13 postgresql database-versioning

您能否分享一下您如何在PostgreSQL中实现数据版本控制?(我已经问过关于CassandraMongoDB的类似问题.如果您有任何想法,哪个数据库更好,请分享)

假设我需要在简单的地址簿中对记录进行版本控制.为简单起见,地址簿记录存储在一个表中而没有关系.我期待历史:

  • 将很少使用
  • 将一次性使用以"时间机器"的方式呈现它
  • 单个记录的版本不会超过几百个.
  • 历史不会过期.

我正在考虑以下方法:

  • 创建一个新的对象表来存储记录的历史记录,其中包含地址簿表的模式副本,并将时间戳和外键添加到地址簿表中.

  • 创建一种架构较少的表来存储对通讯录记录的更改.这样的表包括:AddressBookId,TimeStamp,FieldName,Value.这样我只存储记录的更改,我不必保持历史表和地址簿表同步.

  • 创建一个表来存储seralized(JSON)通讯簿记录或更改通讯簿记录.这样的表看起来如下:AddressBookId,TimeStamp,Object(varchar).同样这是架构,所以我不必保持历史表与地址簿表同步.(这是使用CouchDB进行简单文档版本控制后建模的)

kni*_*tti 5

我做了类似于您的第二种方法的操作:拥有包含实际工作集的表和包含更改的历史记录(时间戳、记录 ID、属性 ID、属性值)。这包括创建记录。第三个表描述了属性(id、property_name、property_type),这有助于应用程序中更高层的数据转换。因此您还可以非常轻松地跟踪单个属性的更改。

除了时间戳之外,您还可以使用类似 int 的类型,每个 record_id 的每次更改都会递增,这样您就有了一个实际的version