Моделирование данных Cassandra для метрик временных рядов сервера - PullRequest
0 голосов
/ 06 января 2020

Я собираю показатели сервера, такие как показатели ОС, Java информация о процессах и т. Д. c, каждую секунду.

Например, JSON:

{
  "localhost": {
    "os": {
      "cpu": 4,
      "memory": 16
    },
    "java": {
      "jvm": {
        "vendor": "Oracle"
      },
      "heap": 4,
      "version": 1.8
    }
  }
}

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

1 Ответ

1 голос
/ 06 января 2020

Один из вариантов - перевести каждый отдельный показатель c в пунктирную строку, чтобы ваш JSON:

{
  "localhost": {
    "os": {
      "cpu": 4,
      "memory": 16
    },
    "java": {
      "jvm": {
        "vendor": "Oracle"
      },
      "heap": 4,
      "version": 1.8
    }
  }
}

превратился в следующее:

Host        Key               Value
localhost   os.cpu            4
localhost   os.memory         16
localhost   java.jvm.vendor   Oracle
localhost   java.heap         4
localhost   java.version      1.8 

Не показанный выше столбец отметки времени. Первичным ключом будет хост + ключ + метка времени. Если вам не нужно иметь возможность запрашивать данные по отдельному хосту, вы можете ввести имя хоста в ключ, то есть key = localhost.os.cpu.

Точные детали ваших запросов сильно влияют на это правильный выбор.

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