В какой БД лучше хранить ежеминутные значения криптовалют (+1500 записей в минуту)?

Система собирает данные из CoinMarketCap API для дальнейшего анализа. Пока просто собор данных и отображение графиков.
Что выбрать в качестве хранилища, если каждую минуту добавляется 1500 записей, то есть за сутки больше 2 млн.?
Планируем хранить в MySQL, но я уверен что есть решение более подходящее под эти задачи.
Так что мне нужен совет опытного в БД и в BigData человека.
Спасибо!
  • Вопрос задан
  • 2575 просмотров
Решения вопроса 1
@Barhis
Например, influxDB. Или любая другая time series DB. Она чаще для всяких метрик и мониторинга, но если для вашей задачи требуется привязка к timestamp (например для визуализации графиков) - идеально ляжет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Все зависит от структуры, типов данных. Операций, которые планируете проводить. Их частоты.
1500 записей в минуту, это не страшная цифра для mysql. Вопрос каких записей. Если ключ bigInt
то в базу теоретически влезет 4,294,967,295 записей. А это данные за 5,5 лет при вашей частоте. Но опять таки - количество строк мало что говорит.
Я думаю что Вы раньше упретесь в объем хардрайва, чем в ресурсы БД.
Ответ написан
@little-brother
1500 строк/минуту можно без проблем получить на любой базе, если вставку выполнять не отдельной транзакцией, а пачками по несколько штук, откладывая запись в базу. Даже на SQLite можно получить 100К строк в секунду на запись.

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

Если сильно не загоняться, то достаточно просто разместить таблицу в индексе см. Clustered Index (в PostgreSQL и MySQL) или Index-Organized Tables (в Oracle).

Также можно провести микро-оптимизацию: если известно, что данные поступают с минутным интервалом, то хранить не время (date = 7байт) или unix-epoh (4байта), а номер измерения.
Ответ написан
Комментировать
@vanyamba-electronics
Создаёте диск в ОЗУ, и размещаете базу на нём. Чтобы к жёсткому диску не обращаться.
Ответ написан
Комментировать
@asd111
Clickhouse. Он как раз создан для подобного рода данных и их анализа. Яндекс метрика на нем работает.
Clickhouse оптимизирован для больших транзакций по 400-500 тыс. строк в секунду.
Он хорошо сжимает большие объемы данных так что база будет занимать меньше места на диске чем в других СУБД и хорошо ищет по миллионам строк - в разы быстрее чем MySQL и т.п. РСУБД.
Ещё он хорошо шардится.
И также одно из главных преимуществ - язык запросов похож на SQL с минимальными изменениями.
https://youtu.be/Ac2C2G2g8Cg
Ответ написан
Комментировать
MetaAbstract
@MetaAbstract
Архитектор информационных систем и баз данных. Ful
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы