PostgreSQL

Раздел про PostgreSQL: ACID и уровни изоляции транзакций (MVCC, WAL, SSI), партиционирование и шардирование, covering index с INCLUDE, веса в полнотекстовом поиске (FTS). Объяснения с примерами на двух таблицах category и product.

Зачем для UCP. PostgreSQL — основная БД для UCP-сервисов. ACID, изоляция, шардинг — must-know для senior'а на любом уровне зрелости. Соответствует фазе 6 программы.

Статьи про устройство и эксплуатацию PostgreSQL. Объяснения с примерами кода на сквозной паре таблиц (category + product), чтобы было легко переключаться между статьями.

Статьи раздела

  1. ACID и уровни изоляции транзакций — что значат четыре буквы, как PostgreSQL их реализует (MVCC, WAL, snapshots, SSI), четыре уровня изоляции с примерами феноменов (dirty / non-repeatable / phantom read, write skew).
  2. Размер БД, партиционирование и шардирование — как считать размер базы и таблиц, когда применять партиционирование, когда — шардирование, как выбирать partition key и shard key.
  3. Covering Index (INCLUDE)INCLUDE vs обычное расширение ключа, index-only scan, нюанс с visibility map, UNIQUE … INCLUDE для возврата «лишних» полей.
  4. FTS: веса и ранжированиеsetweight и четыре уровня A/B/C/D, generated column с tsvector + GIN, ts_rank vs ts_rank_cd, типовые ошибки с языком словаря.

Связанное

  • PG Style Guide — правила работы с PostgreSQL в Java/Spring-сервисах (коды R-PG-*).
  • jOOQ Style Guide — как ходить в PostgreSQL из Java через jOOQ, repository pattern, multiset.
  • Distributed Patterns Style Guide — saga, idempotency, outbox: как обеспечить целостность за пределами одной БД.