我正在寻找如何为我正在工作的应用程序最好地进行数据版本控制的输入。
总结
我有基于行的数据,一秒钟会更改多次。有些数据是静态的,有些是高度可变的,有些介于两者之间。我想存储所有的delta,这样我就可以返回到任何时间点并捕获值。每个州都同等重要。我希望能够搜索和评估状态,例如“给我所有x有值y的时间”。
类比:汽车
我将用一辆汽车来比喻我的问题:
我想保存汽车的所有可能属性
汽车可以是静态的(=很少更新),也可以是移动的(=很多更新)
汽车可能会重新喷漆(有些值看起来是静态的,但实际上不是)
我不在乎这辆车从哪里开过去
我想检查它在哪里停止(=按属性请求状态)
我想计算各州之间的行驶距离(=询问和比较各州)
如果有人偷了车,我想马上知道
我们讨论的是每辆车的数据量,以及成吨的不同的车。我还想在以后的某个时候比较一下汽车(例如,粉色的汽车被盗少吗?),所以更多的汽车=更多的数据。
拍摄时间
我画了一个快速的图表来可视化更新:图片。我会嵌入它一旦我得到10代表。
问题
保存数据的最佳方法是什么?我正在考虑一种稀疏的数据库解决方案,对于重复值的开销很低。我对任何数据库引擎或解决方案都持开放态度。
1条答案
按热度按时间kuuvgm7e1#
存储到达的事实的最好方法是完全。你只需要看一眼数据,它们到达的速度越快,就越需要快速地保护它们。
半个世纪以来,华尔街一直在做这种事情。把移动缓慢的东西——姓名、地址——放在一个表中,把短暂的东西——通常是价格——放在另一个表中。不要太担心“重复”;先应用接吻原则。在管理delta时,很容易把事情搞砸,更容易用delta簿记开销来淹没你的“积蓄”。另外,如果您将所有内容保持在整齐的行中,那么任何sqldbms都将以高度的置信度回答时间点查询。