Организация экспериментальных данных - будет ли работать Elastic Search?

Извините, если это немного абстрактный вопрос, я постараюсь предоставить более подробную информацию.

Я запускаю "эксперименты" (например, тестовые прогоны различного программного обеспечения), каждый эксперимент имеет свой собственный набор метаданных (в основном пары ключ / значение, такие как время начала, время окончания, имя, количество ресурсов, тип системы и т. Д.) И один или несколько данные временных рядов, относящиеся к различным показателям производительности (например, использование ЦП и памяти от начала до конца с интервалами в 10 секунд). Количество данных не будет огромным; максимум несколько гигабайт в месяц.

Я хотел бы хранить эти данные в одной системе (например, не метаданные в MySQL и данные о производительности в некоторой специализированной базе данных временных рядов). Будет ли эластичный поиск подходить для этого? Как бы я лучше всего индексировать данные?

РЕДАКТИРОВАТЬ: чтобы быть более ясным, вот некоторые мысли о том, как организовать данные. Для метаданных используйте metadata Индекс, например, так для эксперимента aa_12:

{
  "_id": "aa_12",
  "_source": {
    "name": "aa_12",
    "start": 1420070400001,
    "end": 1420097400001,
    "system": "cluster-1",
    "nodes": 6,
    ...
  }
}

Наличие имени эксперимента в качестве _id облегчает случайные обновления (я полагаю).

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

{
  "_source": {
    "host": "cluster-1-1",
    "experiment": "aa_12",
    "cpu1": 44,
    "cpu5": 40,
    "cpu15": 41,
    "memtot": 16384,
    "memused": 5025,
    ... rest of metrics
    "time": 1420070410001
  }
}

так что я мог бы запросить, например, "дать мне метрику X для хоста Y на время эксперимента Z" и получить метрические графики, используя kibana/timelion. На данный момент меня беспокоит то, что perfdata Индекс может расти, чтобы содержать много записей (не очень большой по размеру, но все же несколько сотен тысяч / миллион записей). Имеет ли вышесказанное смысл?

1 ответ

Насколько мне известно,

  • InfluxDB, Cassandra - хороший выбор для данных временных рядов
  • Elasticsearch - хороший выбор для метаданных

ELasticsearch предназначен для поиска, хотя многие люди могут использовать его как постоянное хранилище данных, уменьшая проблемы с отказоустойчивостью в Elastic с помощью функций моментальных снимков и восстановления. Вот ссылка на упругость ElasticSearch

Кроме того, если ваш вариант использования аналогичен приведенным ниже вопросам, то ES - это путь.

  • Вы собираетесь использовать ES для поиска? да
  • Агрегации, полнотекстовый поиск? да
  • Вы заботитесь об устойчивости данных? нет

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

Другие вопросы по тегам