Как организовать хранение котировок валют в БД?

Всем привет! Сейчас стоит задача каждую секунду собирать данные о котировках определенной валюты (пусть будет биткоин). На основе этих данных нужно будет строить графики изменения за последний час/сутки/неделю/месяц и т.д.

Как хранить полученные данные? На данный момент я вижу таблицу с полями datetime для метки времени и rate для значения. Вопрос в том, потянет ли MySQL такую нагрузку, если таких валют будет, например 1000 штук? То есть каждую секунду будет добавляться по тысяче новых записей. Или для таких целей существуют более специфические/рациональные решения? Если да, то пните, пожалуйста в какую сторону копать. Спасибо!
  • Вопрос задан
  • 1124 просмотра
Пригласить эксперта
Ответы на вопрос 4
Melkij
@Melkij
PostgreSQL DBA
https://en.wikipedia.org/wiki/Time_series_database

Писать 1000 строк в секунду mysql может. Читать месячный график (2,5млн точек для одной только котировки) может быть весьма накладно
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
Ответ написан
Комментировать
alex-1917
@alex-1917
Если ответ помог, отметь решением
Записывай дельту, если дельта равна нулю ,то вообще не пиши, я так сэкономил на занимаемом под БД 30% места и соответственно требуемой скорости обработки, при выводе просто чуть посложнее запрос!

Ну а если касаемо твоих параметров, которые = 1000:
Очередная проблема преждевременной оптимизации)))
Не будет у тебя 1000 валют!
И не будет у тебя по 1000 обновлений в секунду!
Твои параметры похожи на средней руки типичную среднекорейскую биржу, коих под две сотни существует, но там валют под 70 не больше и обороты под лярд в месяц, сколько в секунду хз, у тебя точно такой же проект?? и ты спрашиваешь ЗДЕСЬ??)))!
Ответ написан
Round Robin Database: RRDtool.
В них эффективно хранится агрегация метрик по времени.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы