Организация экспериментальных данных - будет ли работать 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 для поддержания устойчивости.