PostgreSQL
Раздел про PostgreSQL: ACID и уровни изоляции транзакций (MVCC, WAL, SSI), партиционирование и шардирование, covering index с INCLUDE, веса в полнотекстовом поиске (FTS). Объяснения с примерами на двух таблицах category и product.
Зачем для UCP. PostgreSQL — основная БД для UCP-сервисов. ACID, изоляция, шардинг — must-know для senior'а на любом уровне зрелости. Соответствует фазе 6 программы.
Статьи про устройство и эксплуатацию PostgreSQL. Объяснения с примерами кода на сквозной паре таблиц (category + product), чтобы было легко переключаться между статьями.
Статьи раздела
- ACID и уровни изоляции транзакций — что значат четыре буквы, как PostgreSQL их реализует (MVCC, WAL, snapshots, SSI), четыре уровня изоляции с примерами феноменов (dirty / non-repeatable / phantom read, write skew).
- Размер БД, партиционирование и шардирование — как считать размер базы и таблиц, когда применять партиционирование, когда — шардирование, как выбирать partition key и shard key.
- Covering Index (INCLUDE) —
INCLUDEvs обычное расширение ключа, index-only scan, нюанс с visibility map,UNIQUE … INCLUDEдля возврата «лишних» полей. - FTS: веса и ранжирование —
setweightи четыре уровня A/B/C/D, generated column сtsvector+ GIN,ts_rankvsts_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: как обеспечить целостность за пределами одной БД.