ElasticSearch MySQL для объединения десятков миллионов очень простых записей - PullRequest
0 голосов
/ 07 февраля 2020

Мне интересно, является ли MySQL или ElasticSearch лучшим инструментом для создания этого проекта?

Учитывая базу данных времени отклика PING в следующий формат:

Timestamp Host Success ResponseTime 2020-02-01 12:00:00 1.1.1.1 1 5.00 2020-02-01 12:00:01 1.1.1.1 1 4.00 2020-02-01 12:00:01 8.8.8.8 1 2.00 2020-02-01 12:00:02 1.1.1.1 1 4.50 2020-02-01 12:00:02 8.8.8.8 1 1.80 2020-02-01 12:00:02 1.1.1.1 0 NULL

Я хотел бы агрегировать эти данные по 1-минутным, 5-минутным, 1-часовым группам, а также по минимальному / среднему времени сбора урожая как подсчет количества ошибок (успех = 0).

Цели просты:

  • запросы быстрого чтения (не беспокойтесь о скорости записи)
  • требуется небольшое пространство для хранения
  • возможно удалить старые записи и восстановить использованное пространство
  • желательно простая настройка (не беспокоясь о ручной настройке индексов,…)

1 Ответ

0 голосов
/ 08 февраля 2020

Я бы использовал MySQL, чтобы построить и постепенно увеличить одну сводную таблицу, разбитую на 1-минутные интервалы. Он также будет включать min, max, count, sum.

Я надеюсь, что он сократится до одной десятой числа строк, таким образом, запросы будут выполняться в десять раз быстрее.

Как только я доволен всем этим, у меня будет основная таблица PARTITION BY RANGE(), чтобы я мог периодически эффективно DROP PARTITION.

Между тем, я бы оставил сводную таблицу "навсегда".

Я сказал COUNT и SUM, а не AVG. AVG может быть получено из (суммы сумм), деленной на (сумму отсчетов).

http://mysql.rjweb.org/doc.php/summarytables
http://mysql.rjweb.org/doc.php/partitionmaint

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