哪些数据存储和查询引擎可用于在嵌套数据内存储和查询?

时间:2019-07-02 18:18:54

标签: json nested datastore

我正在尝试对一系列交易建模,其中每个交易都由多个部分/活动组成。我正在寻找一个可以帮助我存储和执行查询的数据存储(详细信息如下)。

我尝试将其表示为一系列JSON文档,以帮助说明数据的嵌套性质。在所有活动完成之后,每笔交易都是这样的:

{
  "name": "abc",
  "activity": [
    {
      "part": "a",
      "quantity": 100,
      "data": [
        "car",
        "bike"
      ]
    },
    {
      "part": "b",
      "quantity": 20,
      "data": [
        "scooter"
      ]
    },
    {
      "part": "c",
      "quantity": 49,
      "data": [
        "train"
      ]
    }
  ]
}

多个交易将显示为一个数组:

[
  {
    "name": "abc",
    "activity": [
      {
        "part": "a",
        "quantity": 100,
        "data": [
          "car",
          "bike"
        ]
      },
      {
        "part": "b",
        "quantity": 20,
        "data": [
          "scooter"
        ]
      },
      {
        "part": "c",
        "quantity": 49,
        "data": [
          "train"
        ]
      }
    ]
  },
  {
    "name": "def",
    "activity": [
      {
        "part": "a",
        "quantity": 2,
        "data": [
          "train"
        ]
      },
      {
        "part": "b",
        "quantity": 33,
        "data": [
          "walk",
          "run"
        ]
      },
      {
        "part": "d",
        "quantity": 23,
        "data": [
          "train"
        ]
      }
    ]
  },
  {
    "name": "ghi",
    "activity": [
      {
        "part": "b",
        "quantity": 33,
        "data": [
          "jog",
          "run"
        ]
      },
      {
        "part": "d",
        "quantity": 300,
        "data": [
          "train"
        ]
      }
    ]
  }
]

我希望能够回答以下查询:

  • 查找在同一活动中具有namesquantity = 33的交易data has jog
  • 在满足quantity的交易中查找所有activities的{​​{1}}的总和
  • 显示每笔交易的所有data has train和组,但仅显示与data有一项或多项活动的交易中的数据

如您所见,有一些查询:

  1. 在单笔交易中查询数据
  2. 跨事务查询数据
  3. 查询包括简单的预测,但也可以进行汇总

什么是理想的存储和查询引擎,它可以:

  1. 处理上述数据模型
  2. 使用SQL形式的合理语言来回答上述查询。我知道有些商店要求用户运行Javascript map-reduce,但这将是最后的选择
  3. 允许每笔交易中的活动随时间逐步更新-即每笔交易一次进行一次活动,持续几分钟或几小时
  4. 处理几天累积的数十亿笔此类交易
  5. 每天有数百万个新交易,每小时有数百个查询

0 个答案:

没有答案