【发布时间】:2021-03-26 20:12:18
【问题描述】:
我知道这是一个广泛的问题,所以我会尝试为这个问题的领域设置一些界限:
- 让我们假设数据可以随时从源到达,并且数据采集之间的时间段不固定。
- 使用通用索引(基于时间、基于长度或基于索引)表示数据
- 数据负载可能会丢失一些“列”(如果我们将数据块想象成一个表)
这种情况的一个例子如下:
{ │ {
"timestamp": t3, │ "timestamp": t1, # t1 < t3
"temperature": 40, │ "temperature": 40,
┌───────────┐ "pressure": 1220 │ "color": "ffffff" ┌───────────┐
│ │ } │ } │ │
│ │ │ │
│ Source 1 ├─────────────────────────────────────────────────────────►│ │
│ │ │ │
│ │ │ │
└───────────┘ │ │
│ │ │
{ │ { │ │
"length_meters": l1,│ "length_meters": l2, │ │
┌───────────┐ "resistivity": 40 │ "resistivity": 40 │ │
│ │ } │ } │ │
│ │ │ MongoDB │
│ Source 2 ├─────────────────────────────────────────────────────────►│ │
│ │ │ │
│ │ │ │
└───────────┘ │ │
│ │
│ │
{ │ │
"index": 1, │ │
┌───────────┐ "description: "lorem" │ │
│ │ } │ │
│ │ │ │
│ Source 3 ├─────────────────────────────────────────────────────────►│ │
│ │ │ │
│ │ └───────────┘
└───────────┘
我已阅读Bucket pattern 上的官方文档,他们在其中描述了这种技术,在我看来,这与现实相去甚远,因为在示例中他们假设存储单个传感器数据(在这种情况下为温度) .此外,我不喜欢该解决方案,因为它为每个传感器样本重复列(温度)。
有没有更好和通用的方法来设计集合来解决使用包含存储大小并可以在数据查询方面实现良好性能的要求? 示例查询可能如下:
- 在 tx 和 ty 之间返回压力和温度。
- 返回 tx 和 ty 之间的最高温度。
- 返回 lx 和 ly 之间的电阻率最小值。
【问题讨论】:
-
请提供一些示例数据。 Mongodb 是面向文档的,因此每个文档都会包含字段名称。
-
“数据使用通用索引表示”是什么意思?
-
收到的每个数据点都有一个索引(例如时间戳),它不需要大于收到的前一个(单调递增的索引)
标签: database mongodb database-performance sensors