具有并发历史数据更新的时间序列数据库

时间:2016-12-16 11:41:10

标签: database time-series updates atomicity

我需要存储时间序列数据,并有特殊要求。让我们说我想每隔5分钟存储一次我的业务营业额。例如,一个时间序列

Store#1
1/12–2016 10:00–10:05: 100$
1/12–2016 10:05–10:10: 50$
…

另一个时间序列

Store#2
1/12–2016 10:00–10:05: 10$
1/12–2016 10:05–10:10: 30$
…

我得到一个数据源,告诉什么东西被卖了以及在哪个商店里。 E.g

Store#1,10:02:40,5$

对于每个这样的Feed事件,我想更新数据库。对于上面的feed-event示例,它将是

db.series("Store#1").update(1/12–2016 10:00–10:05, add: 5$)

我可能会在1 / 12-2016 10:05之后很久才会收到这个Feed事件,所以我希望能够更新“历史数据”。

有很多TSDB,但我很难找到满足我需求的TSDB。尤其

  • 能够更新历史数据。似乎很多TSDB都非常关注新数据总是基本上:现在,最终价值
  • 能够以原子方式更新或使用某种锁定。两个线程可能会在相同的5分钟间隔内获得有关销售的Feed事件,并且他们需要能够添加到存储的值而不会有覆盖(取消)其他线程添加的内容的风险。

如果可以从java操作TSDB,那将是很好的。

有人能指出支持使用并发控制更新历史数据的TSDB吗?

1 个答案:

答案 0 :(得分:0)

大多数时间序列度量数据库都类似于面向日志,并不适用于事务用法。大多数人都不会提供ACID合规性,因为最好使用MySQL和PostgreSQL之类的数据库。

Sidewinder确实满足您的要求2,即它的线程安全 https://github.com/srotya/sidewinder