В чем лучше хранить логи 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 сяду впервые и придется переносить все приложение на него что займет определенное время а плюсы для меня пока не очевидны.
В общем кто сталкивался с подобными задачами помогите найти оптимальное решение или если у кого то есть альтернативный правильный вариант напишите. Я буду очень благодарен за любой совет, так как с такими нагрузками я сталкиваюсь впервые и боюсь сделать неправильный выбор в начале, который потом будет приносить боль.
Хм, вы знаете я как то сразу об этом и не подумал. Сейчас сравню у кого лучше реализовано партиционирование Mysql или Postgress и наверное остановлюсь на этом варианте. Спасибо)
Хм, интересное предложение. Но все же работа над данными производится и анализируется, sql устраивает полностью в этом случае. Logstash придется допиливать под свои нужды, все же он для логов предназначен, хотя я не специалист в нем. Все равно спасибо, возьму на заметку :)
Приветствую!
Столкнулся с подобной задачей и тоже ищу решение. На чем-то уже остановились?
У меня ситуация такая - есть задача для хранения "логов" работы API для разбора полетов в случае каких-либо проблем. А поскольку веб-сервис уже работает, то не хочется добавить лишнюю прослойку, которая бы добавила увеличения времени ответа.