Комментарии 6
Почему Postgres - это маленькая БД? Он масштабируется на любой объем данных, здесь вы кажется не правы. Это просто придирка, комментарий в другом:
База данных - это не только инструментарий и табличная алгебра (очень хоргошая кстати), но и куча других накладных вещей, в микросервисах лишних. Хотя тот же постгрес позволяет отключить WAL для таблиц, то есть не вести журналирование при модификации данных., он все же требует подключения, проверки прав, создание нового процесса. И, кстати, при небольших данных, наверное не более чем 8Кб, то есть одна data-page, постгрес не станет применять индекс, все сделает брутальным способом, построчным сравненим и т.п. и т.д.
И даже если индекс будет применяться, то на на таблице в 1000 строк при применении индекса postgres прочтет с диска 5 буферов (те же page), то есть 40Кб. А сколько вам собственно положено потратить на один запрос? для микросервиса норма 100 милисек. Поэтому конечно вы правы, что не надо бояться применять в микросервисах базы данных, но надо повозиться с конфигами и прочими сессионными переменными, создать RAM-диск и отдать его под tablespace если это целесообраз-но, посмотреть на планы запросов... и в итоге может даже так случиться, что проще не лезть в БД, а применить известные алгоритмы прямо в коде вашего микросервиса.
Так в том и прелесть, что DB самa распознает, когда таблица "неожиданно" врстет в 100-1000 раз (бизнес он такой, да ) и сам автоматически, без вашего вмешательства, станет применять индекс. И план запросов соптимизирует.
Представляете сколько рабочих часов портебуется чтобы адаптировать и задеплоить захардкодированный алгоритм??
Я правильно понял посыл статьи, что как популярна не была бы микросервисная архитектура не забывайте , что некоторые функции можно на прямую выполнять с БД?)) Соблюдайте баланс 👌
Уровень стать обозначен как сложный…. Автор что-то понимает в современном уровне разработки?
Порадовала идея тащить PostgreSQL в каждый контейнер с микросервисом/сервисом. Есть такая штука SQLite и DuckDB обе встраиваемые in-process DB. Хватит выше крыши для любых задач вашего микро/сервиса.
При этом потребление ресурсов и производительность будут в итоге выше.
PostgreSQL это многопользовательская база данных для архитектуры клиент/сервер. В описываемых автором случаях это как из пушки по воробьям.
Примеры которые приводи автор- это яркие примеры когда микросервисы не нужны - нужна одна нормальная БД которая покроет 99,9% всех потребностей.
В принципе, микросервис имеет смысл если он stateless: получил запрос/обработал данные/ выдал результат.
Если ему надо хранить что-то в БД, то у вас проблемы. Максимум что ему может понадобиться это простое курирование: чтобы те же ресурсоемкий расчёт в не выполнять для тех же данных.
В этом случае входные данные/результат можно просто в хранить в массиве в памяти.

База данных как ресурс в микросервисной архитектуре