Managed Sharded PostgreSQL Service в Яндекс Облаке
Доклад принят в программу конференции
Целевая аудитория
Тезисы
Stateless Postgres Query Router (SPQR) — open-source решение для горизонтального масштабирования PostgreSQL через шардирование. Мы разрабатываем эту систему в Yandex Cloud, и это уже четвёртая итерация наших попыток построить масштабируемый PostgreSQL. До SPQR мы пробовали переиспользовать PostgreSQL FDW механизм, писали хуки в планнере запросов, реализовали прокси на чистом C — и в итоге пришли к SPQR, написанному на Go и работающему на уровне протокола PostgreSQL.
SPQR поддерживает шардирование как по диапазону значений, так и по хэшу. Система совместима не только с обычным текстовым протоколом PostgreSQL, но и с extended protocol — что позволяет использовать prepared statements и клиентские библиотеки без изменений. Роутер работает в сессионном и транзакционном режимах, в реальном времени определяет, на каком шарде нужно выполнить запрос, и управляет перемещением данных между ними.
В докладе мы расскажем:
- как построить масштабируемую OLTP-базу на PostgreSQL;
- какие архитектурные решения легли в основу SPQR;
- как мы добавляем новые шарды без решардинга;
- как устроен собственный SQL-лексер и почему мы отказались от pganalyze/pg_query_go;
- как реализовать PostgreSQL-прокси с поддержкой транзакций и extended protocol;
- какие проблемы возникают при построении таких систем: от оценки нагрузки на ключи до блокировок, перевоза данных и отказоустойчивости;
- будущее развития нашей системы.
Это доклад для разработчиков распределённых систем и тех, кто масштабирует PostgreSQL или только собирается это делать. Вы узнаете, что стоит за словами "Postgres-прокси" на практике — с примерами, болью и кодом.
Разрабатывает PostgreSQL в Yandex Cloud в команде Open Source DBMS development.
Видео
Другие доклады секции
Разработка СУБД