Вставьте вложенный JSON в Кассандру - PullRequest
4 голосов
/ 29 марта 2019

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

Ниже я вставил json, который я пытаюсь вставить.

Есть предложения?

{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {
          "__name__": "up",
          "env": "demosite",
          "instance": "localhost:9100",
          "job": "node"
        },
        "value": [
          1553849977.349,
          "1"
        ]
      },
      {
        "metric": {
          "__name__": "up",
          "instance": "ub-lab-server:9090",
          "job": "prometheus"
        },
        "value": [
          1553849977.349,
          "1"
        ]
      }
    ]
  }
}

1 Ответ

2 голосов
/ 29 марта 2019

Есть несколько способов сделать это.

Если ваш вариант использования просто для сохранения JSON в виде строки, просто сериализуйте весь JSON в виде большого двоичного объекта в один столбец Создать таблицу как:

CREATE TABLE IF NOT EXISTS my_table(
  ID <text/bigint>
  DATA text,
  CREATEDATE timestamp
)

Если вы хотите представить все вложенные атрибуты в виде отдельных столбцов, вы начнете снизу вверх. сначала создайте определяемые пользователем типы для каждого вложенного поля. Что касается вашего JSON, пример будет:

CREATE TYPE metric (
      name text,
      env text,
      instance text,
      job text
);

CREATE TYPE value(
      field1 text,
      field2 text
);

После создания базовых UDT начните с создания составных UDT со ссылками на базовые UDT:

CREATE TYPE result(
  metric metric,
  value value,
);

CREATE TYPE data(
  resultType text,
  result set<result>,
);    

И, наконец, загрузите ваш стол следующим образом:

CREATE TABLE IF NOT EXISTS my_table (
  ID <text/bigint>
  status data
)

Будьте внимательны при выборе первичных ключей / ключей разделов на основе ваших запросов и хранилища. usecases.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...