Выбор СУБД для биг-даты (PHP)

Посоветуйте пожалуйста. До этого особо никогда не работал с большим объемом данных. На данный момент у меня есть 1млн тестовых пользователей (Сам бд сделал, расширить планировал до 20млн), стоит MariaDB, я выполняю поиск по емайлу и он выполняется примерно 3-4 секунды через оператор =. Хотя я сделал индексацию колонки (через ADD INDEX). При этом запросы по ключам работают моментально (0.006сек), даже при объеме данных 80млн+.

Что вы мне можете посоветовать? Может какую СУБД выбрать или статьи какие-то почитать, для оптимизации процессов? Буду бесконечно благодарен!


Ответы (1 шт):

Автор решения: Денис Сепетов

Давайте попробую предложить, но сразу скажу, что мой опыт на таком количестве записей не больше вашего.

  1. У нас в продуктовом контуре пока ещё стоит MySQL, но она не справляется с нагрузкой. Пока осуществляем переход на PostgreSQL и производительность явно выше.
  2. Конкретно в нашем случае (около тысячи постоянно подключающихся/отключающихся клиентов-устройств) основная проблема в MySQL - это блокировки. Именно в этом моменте у неё явно выигрывает PostgreSQL. Может быть MariaDB в этом плане похожа на MyySQL, так как когда-то на ней была основана?
  3. Ускорение чтения колонки с email-ом я решал на предыдущей работе. Пришёл к выводу, что с любыми строковыми колонками нужно действовать методом проб и ошибок. У меня хорошие результаты (до "мгновенного", как вы сказали, поиска) дало разделение поля email на email_name и email_domain. Правда, у нас был высокий процент адресов не из популярных доментов типа @yandex.ru, @mail.ru. Основные домены были с сайтов юридических лиц-клиентов и среди них очень много технических email-ов. Возможно, из-за этого индексы получились качественными.

Попробуйте и вы разбить - вдруг у вас получится хороший эффект? Но я не знаю, как вы будете проводить этот эксперимент в боевых условиях, а разница с тестовыми может быть существенная :-)

Не забывайте про возможность вертикального разреза таблиц. Он эффективно себя ведёт на любой СУБД - не бойтесь возросшего числа таблиц.

→ Ссылка