多年来,我们一直在使用具有糟糕且低效的数据库结构的单体程序。现在我们终于用我们自己的程序摆脱了它。
我们唯一遇到困难的领域是数据库。我们的数据是财务数据,我们现有的程序主要通过覆盖 ( UPDATE, DELETE)导致数据丢失。我们决定采用仅追加的结构来保存我们积累的所有数据。如果仓库增长超过我们最初的估计,我们可能会考虑使用它,但与此同时,我们预计数据库会在几年内增长到一些较大表的数百万行;在这一点上规模不大。
我们使用PostgreSQL,将被拒绝修改特权,比如UPDATE与DELETE用户,以确保数据的一致性历史。
我们认为我们可以将所有当前和历史数据包含在一个表中,以便我们查询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 …