Какое хранилище данных и механизм запросов использовать для хранения и запроса внутри вложенных данных? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь смоделировать серию транзакций, где каждая транзакция состоит из нескольких частей / действий.Я ищу хранилище данных, которое может помочь мне хранить и выполнять запросы к нему (подробности ниже).

Я пытался представить его как серию документов 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"
        ]
      }
    ]
  }
]

Я хотел бы иметь возможность отвечать на запросы, такие как:

  • Найти транзакцию names с quantity = 33 и data has jog в одном и том же действии
  • Найти сумму quantity по всем activities в транзакции, которая удовлетворяетdata has train
  • Показать все data и группы для каждой транзакции, но только из транзакций, которые имеют одно или несколько действий с part has b

Как вы можете видеть, естьнесколько запросов, которые:

  1. Запрос данных внутри одной транзакции
  2. Запрос данных между транзакциями
  3. Запросы включают простые прогнозы, но могут также выполнять агрегирование

Каким будет идеальный механизм хранения и запросов, который может:

  1. Обрабатывать модель данных, описанную выше
  2. Отвечать на запросы, подобные описанным выше вразумный язык, которыйSQL-иш.Я знаю, что некоторые магазины требуют, чтобы пользователи запускали Javascript map-Reduce, но это было бы последним средством
  3. Разрешить постепенное обновление операций внутри каждой транзакции с течением времени - то есть по одной операции за раз на транзакцию, распределенных понесколько минут или часов
  4. Обработка миллиардов таких транзакций, накопленных за сутки
  5. Миллионы новых транзакций в день и сотни запросов в час
...