sql - 实时对大量数据进行版本控制

标签 sql database hadoop versioning bigdata

我正在寻找关于如何最好地处理我正在处理的应用程序的数据版本控制的意见。

总结

我有每秒更改多次的基于行的数据。有些数据是静态的,有些是高度可变的,有些介于两者之间。我想存储所有增量,以便我可以返回到任何时间点并捕获值。 每个状态都同样重要。我希望能够搜索和评估状态,例如“给我 X 值 Y 的所有时间”。

类比:汽车

我将以汽车为例来解释我的问题:

  • 我想保存汽车的所有可能属性(=大量数据)
  • 汽车可以是静止的(= 很少更新),也可以是移动的(= 很多更新)
  • 汽车可能会重新喷漆(= 某些值可能看起来是静态的,但实际上并非如此)
  • 我不在乎汽车要去哪里或从哪里来(=所有州都同样重要)
  • 我想检查它在哪里停止(= 按属性询问状态)
  • 我想计算状态之间的行驶距离(=询问和比较状态)
  • 如果有人偷车,我想马上知道(=大量实时更新)

我们谈论的是每辆汽车的大量数据,以及大量不同的汽车。 我还想在稍后的指针上将汽车相互比较(例如,粉红色的汽车被盗的次数少吗?),所以更多的汽车 = 更多的数据。

图片时间

我画了一个快速图表来可视化更新:Picture .一旦获得 10 个代表,我将嵌入它。

问题

保存数据的最佳方式是什么?我正在考虑某种稀疏数据库解决方案,它对重复值的开销很低。 我对任何数据库引擎或解决方案都持开放态度。

最佳答案

存储到达事实的最佳方式是完全。您只能第一眼看到数据,而且它们到达的速度越快,快速保护它们且不被篡改就越重要。

华尔街在半个世纪的大部分时间里一直在做这种事情。将流动缓慢的内容(姓名、地址)保存在一张表中,将临时性内容(通常是价格)保存在另一张表中。不要太担心“重复”;首先应用 KISS 原则。在管理 delta 时,很容易把事情搞砸,而且更容易用 delta 簿记开销来淹没你的“储蓄”。此外,如果您将所有内容保持整齐,任何 SQL DBMS 都将高度自信地回答时间点查询。

关于sql - 实时对大量数据进行版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35698131/

相关文章:

hadoop - 将当前日期添加到s3表位置

apache-spark - 排除CDH对spark-core的依赖

python - 嵌套 SELECT 查询有时会停止

mysql - 将两个SQL结果组合成一行不同列名的结果集

database - SQLite 是否支持跨多个数据库的事务?

c# - 存储过程之争

sql - IntelliJ IDEA自动完成小写SQL

python - 带有嵌套选择的 SQL Delete 语句

database - SQL Server 2005 以不同的顺序索引相同的列

hadoop - 格式错误的 ORC 文件错误