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

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

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

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