Avillions
@Avillions
PHP Developer at Genesis

В чем лучше хранить логи MySQL, Postrgresql или Mongo?

Добрый день, есть приложение которое опрашивает api нескольких соц сетей и сохраняет посты в бд, смысл приложения в логировании постов и их обработке. Так вот на текущий момент я использую MySQL, сейчас за сутки генерируется ~2.869.300 записи в таблицу постов. И даже с использованием индексов выборка от туда по простым условиям занимает некоторое время которое возрастает с каждым днем.

Так вот собственно в чем вопрос, мне исторические данные не нужны, то есть максимальное время жизни записи 24 часа, после этого времени запись можно удалять.

Я вижу на текущий момент три возможных решения:
1) Раз в 24 час делать очистку таблицы от старых записей, но я опасаюсь что все же упрусь в потолок автоинкримента id, и даже если этого не произойдет то все равно ужастно видеть столь огромные id.

2) Использовать mongodb c ее ограниченными коллекциями, но не хотелось бы использовать в приложении 2 бд. + На данный момент под symfony3 отсутствует поддержка mongodb на уровне doctrine (возможно я ошибаюсь, но 2 дня поисков не дали вменяемого результата как их подружить, а делать downgrate до symfony2 это крайний вариант)

3) Вариант использовать Postgresql с партиционированием по дате добавления поста и старые таблицы просто дропать. Но есть мой субъективный минус, если я с mysql и mongodb раньше работал то за postgress сяду впервые и придется переносить все приложение на него что займет определенное время а плюсы для меня пока не очевидны.

В общем кто сталкивался с подобными задачами помогите найти оптимальное решение или если у кого то есть альтернативный правильный вариант напишите. Я буду очень благодарен за любой совет, так как с такими нагрузками я сталкиваюсь впервые и боюсь сделать неправильный выбор в начале, который потом будет приносить боль.
  • Вопрос задан
  • 1940 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
В mysql тоже есть партицирование. Это, на мой взгляд, самое разумное решение при такой постановке задачи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
terrier
@terrier
Выглядит как задача для Logstash
Ответ написан
mokaton
@mokaton
Приветствую!
Столкнулся с подобной задачей и тоже ищу решение. На чем-то уже остановились?
У меня ситуация такая - есть задача для хранения "логов" работы API для разбора полетов в случае каких-либо проблем. А поскольку веб-сервис уже работает, то не хочется добавить лишнюю прослойку, которая бы добавила увеличения времени ответа.
Ответ написан
Ваш ответ на вопрос

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

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