如何在arangodb中处理带有时间戳的大量数据?

时间:2018-02-19 14:10:02

标签: bigdata data-science arangodb data-science-experience

我是处理大量数据的新手。

每100毫秒,我实际上将4个json块写入集合中的arangodb。

json的内容就是这样的:

{
  "maintenence": {
    "holder_1": 1,
    "holder_2": 0,
    "holder_3": 0,
    "holder_4": 0,
    "holder_5": 0,
    "holder_6": 0
  },
  "error": 274,
  "pos": {
    "left": [
      21.45, // changing every 100ms
      38.36, // changing every 100ms
      10.53 // changing every 100ms
    ],
    "center": [
      0.25, // changing every 100ms
      0, // changing every 100ms
      2.42 // changing every 100ms
    ],
    "right": [
      0, // changing every 100ms
      0, // changing every 100ms
      0 // changing every 100ms
    ]
  },
  "sub": [
    {
      "type": 23,
      "name": "plate 01",
      "sensors": [
        {
          "type": 45,
          "name": "sensor 01",
          "state": {
            "open": 1,
            "close": 0,
            "middle": 0
          }
        },
        {
          "type": 34,
          "name": "sensor 02",
          "state": {
            "on": 1
          }
        }
      ]
    }
  ],
  "timestamp": "2018-02-18 01:56:08.423",
  "device": "12227225"
}

每个块都是另一个设备

仅在2天内,该集合中就有大约600万个数据集。

如果我想获取数据从"设备1位置左侧绘制线图[0]"

使用:

FOR d IN device
FILTER d.timestamp >= "2018-02-18 04:30:00.000" && d.timestamp <= "2018-02-18 04:35:00.000"
RESULT d.pos.left[0]

这需要花费很长时间才能在这个约600万个数据集中进行搜索。

我的问题是:这是正常的,只有机器电源可以解决这个问题,还是我处理这组数据错误的方法?

我认为~6百万个数据集不是大数据,但我想如果我失败了,如果我再添加50个设备,我怎么能处理它,而不是2天而是30天。

1 个答案:

答案 0 :(得分:1)

将timstamps转换为unix时间戳(数字)会有很多帮助。

我在时间戳和时间戳上添加了一个跳过列表索引。设备

现在,有1300万个数据集,我的查询运行920毫秒。

谢谢你!