Паттерны масштабирования БД для 10M+ пользователей
Большинство приложений никогда не выходят за пределы одного хорошо настроенного экземпляра PostgreSQL. Но когда это всё же происходит, применяются эти паттерны.
Реплики для чтения
Первый шаг масштабирования. Перенаправьте трафик чтения (80-90% в большинстве приложений) на реплики. Это самое простое и эффективное улучшение.
Пул соединений
Каждое соединение с базой данных стоит ~5МБ памяти. При использовании serverless-функций можно быстро исчерпать лимит соединений. Используйте PgBouncer или Prisma Accelerate.
Партиционирование таблиц
Для временных рядов (например, аналитики) партиционируйте по времени. Это позволяет автоматически архивировать старые данные и ускоряет запросы на свежих данных.
Паттерн CQRS
Разделите модели чтения и записи. Модель записи оптимизирована для согласованности; модель чтения — для производительности запросов. Это паттерн, позволяющий по-настоящему независимо масштабировать чтение и запись.