Ребята из Notion поделились личным опытом шардинга PostgreSQL: https://www.notion.so/blog/sharding-postgres-at-notion
Шардинг это всегда про компромисс. PostgreSQL из коробки не умеет в шардинг, поэтому зачастую реализация подразумевает участие самого приложения в распределении данных между шардами. Шардинг это всегда индивидуальный подход для конкретного приложения. Не существует универсального способа реализации шардинга для всех. Индивидуальный подход подразумевает понимание предметной области приложения, моделирования данных и нагрузки.
Я не так давно шардировал PostgreSQL с 1 жирной ноды на 32 физических сервера. Безусловно получили колоссальный буст в производительности запросов, клиенты довольны, но ценой усложнения архитектуры (мониторинг, репликация данных, избыточность и т.д.). Не говоря уже про решардинг данных в случае добавления новых узлов в кластер баз.
Если вам интересно как в Notion моделируют данные, то читайте https://www.notion.so/blog/data-model-behind-notion. Центральной сущностью является Block за которым следует всё остальное.
Post #409
2.31K