我的数据
它主要是监控数据,以时间戳的形式传递:值,对于每个受监控的值,在每个受监控的设备上。它定期收集在许多设备和许多监控值上。
此外,它还有一个古怪的特点,即许多这些数据值是从源头导出的,计算会不时发生变化。这意味着我的数据被有效地版本化,并且我需要能够仅从最新版本的计算中调用数据。 注意:这不是覆盖旧值的版本控制。我只是有时间戳截止,超出了数据会改变它的含义。
我的使用
在下游,我将对数据进行各种未定义的数据挖掘/机器学习用途。目前还不清楚这些用途是什么,但很明显我将用 Python 编写所有下游代码。此外,我们是一家非常小的商店,所以我真的只能处理设置、维护和与下游应用程序接口方面的复杂性。我们只是没有那么多人。
选择
我不允许使用 SQL RDBMS 来存储这些数据,所以我必须找到合适的 NoSQL 解决方案。这是我到目前为止发现的:
- 卡桑德拉
- 在我看来完全没问题,但似乎一些主要用户已经继续前进。这让我想知道它是否不会成为一个充满活力的生态系统。这篇 SE 帖子似乎有好话要说:Cassandra time series data
- 累积
- 同样,这似乎很好,但我担心这不是一个主要的、积极开发的平台。看起来这会让我对工具和文档感到有点饥渴。
- MongoDB
- 我对 Mongo 人群有一种可能是非理性的强烈厌恶,我正在寻找任何理由放弃它作为解决方案。在我看来,Mongo 的数据模型对于具有这种静态、规则结构的事物来说都是错误的。我的数据甚至按顺序排列(并且必须保持不变)。也就是说,每个人和他们的母亲似乎都喜欢这个东西,所以我真的在尝试评估它的适用性。请参阅这篇文章和许多其他 SE 帖子:What NoSQL DB to use for sparse Time Series like data?
- HBase
- 这就是我目前正在倾斜的地方。它似乎是 Cassandra 的继任者,它为我的问题提供了一种完全可用的方法。也就是说,它是一项重要的技术,如果我选择它,我担心真的知道我要注册的是什么。
- 开放TSDB
- 这基本上是一个时间序列特定的数据库,建立在 HBase 之上。完美,对吧?我不知道。我试图弄清楚另一层抽象能给我带来什么。
我的标准
- 开源
- 与 Python 配合得很好
- 适合小团队
- 非常有据可查
- 具有利用有序时间序列数据的特定功能
- 帮助我解决一些我的版本化数据问题
那么,哪个 NoSQL 数据库实际上可以帮助我满足我的需求?它可以是任何东西,无论是否来自我的列表。我只是想了解哪个平台实际上有代码,而不仅仅是使用模式,它们支持我的超级具体、很好理解的需求。我不是在问哪个最好或哪个更酷。我试图了解哪种技术最能原生存储和操作此类数据。
有什么想法吗?