Реляционная БД организует данные через таблицы и связи, документная — через документы с вложенной структурой. Выбор определяется запросами, связями и инвариантами данных.
Go обычно используют в императивном, процедурном стиле с поддержкой композиции и конкурентности. Классический SQL преимущественно декларативен: описывает нужный результат.
Воспроизведите медленный запрос, изучите план и реальные объёмы строк, затем ищите лишнее чтение, неверные оценки, сортировки, блокировки и неудачные соединения.
Блокировки могут действовать на строки, страницы, таблицы и другие объекты — набор зависит от СУБД. Advisory locks защищают логический ресурс, а не обязательно строку таблицы.
Решение об использовании индекса принимает оптимизатор при построении плана, оценивая стоимость доступных способов выполнения. Само наличие индекса не заставляет его использоваться.
MVCC snapshot определяет, какие версии строк видны запросу или транзакции относительно других транзакций. Это логическая видимость, а не копия всей базы данных.
Для подписок нужна модель связей «пользователь — объект подписки», уникальность и удобный поиск в обе стороны. Хранилище выбирают по масштабу fan-out и характеру изменений.
Опишите primary, replicas, резервное копирование, failover и разделение чтений и записей. Устойчивость и масштабирование — разные свойства развёртывания.
Inbox связывает уникальный ID сообщения с атомарной обработкой в БД. Число экземпляров PostgreSQL относится к топологии и не определяется самим паттерном.