小编ctw*_*els的帖子

如何在 PostgreSQL 中构建仅附加数据库?

前言

多年来,我们一直在使用具有糟糕且低效的数据库结构的单体程序。现在我们终于用我们自己的程序摆脱了它。

我们唯一遇到困难的领域是数据库。我们的数据是财务数据,我们现有的程序主要通过覆盖 ( UPDATE, DELETE)导致数据丢失。我们决定采用仅追加的结构来保存我们积累的所有数据。如果仓库增长超过我们最初的估计,我们可能会考虑使用它,但与此同时,我们预计数据库会在几年内增长到一些较大表的数百万行;在这一点上规模不大。

我们使用PostgreSQL,将被拒绝修改特权,比如UPDATEDELETE用户,以确保数据的一致性历史。


我们的理念

我们认为我们可以将所有当前和历史数据包含在一个表中,以便我们查询timestamp每个记录的最后一条(或最新),id如下表所示。

澄清一下,我们有几十个表;下面代表一个这样的表的简单版本。

????????????????????????????????????????????????????
? key ? id ? field1 ? field2 ? timestamp           ?
????????????????????????????????????????????????????
? 0   ? 0  ? a      ? b      ? 1970-01-01 00:00:01 ?
????????????????????????????????????????????????????
? 1   ? 1  ? x      ? y      ? 1970-01-01 00:00:02 ?
????????????????????????????????????????????????????
? 2   ? 0  ? a      ? c      ? 1970-01-01 00:05:01 ? # new version of id=0 row
????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我们还考虑了 NoSQL …

postgresql database-design

2
推荐指数
2
解决办法
5492
查看次数

标签 统计

database-design ×1

postgresql ×1