Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Postgresql

Термины

Типы данных

JSONB

  • JSONB
    • работает очень быстро, особенно в контексте бизнес автоматизации
    • но требует индексов правильных (GIN, Hash, btree)
    • Его удобно использовать для тех случаев, когда его данные не используются для работы БД, его можно легко и просто сразу передать веб-страницам
    • Если же по данным осуществляются операции БД, например, фильтрация, сортировка, группировка и объединения, то такие данные лучше хранить вне jsonb, в структуре самой БД
    • Это связано с тем, что Postgres не умеет собирать статистику по внутренностям jsonb, он рассматривает его только целиком, что обычно совершенно бессмысленно (можно отключать, так как статистика по jsonb сильно раздувает таблицу статистики)
    • проблемы (2020) с OLTP нагрузкой
    • примеры запросов (json_each, jsonb_to_record, jsonb_to_recordset) по JSONB
  • JSON
  • Сравнение с MongoDB
    • MongoDB
      • возможность легкого горизонтального масштабирования уже заложена в ее архитектуру
      • нет полного ACID
      • Встроенный валидатором схемы
      • обычно работает быстрее в том случае, если в операции задействованы различные объекты

Плюсы:

  • Просто хранить не строго типизированную структуру
  • Поддерживает индексы

Минусы:

  • Сохранение медленее (конвертация в бинарный формат)
  • Нет валидации на уровне БД
  • Продолжается оптимизации производительности на уровне PGSQL
  • Нужно применять правильные индексы на больших объемах данных
  • Нужно тестировать с CITUS поддержку JSONB

Функции

Management

Replication

  • hot-standby потоковая репликация
  • https://medium.com/@PinkOwl/postgresql-and-me-log-shipping-replication-6bc945757822
  • Config

Log Shipping

  • Master (Primary) -> Slave (standby or secondary)
    • accept connections and serves read-only queries is called a Hot Standby Server
  • https://www.postgresql.org/docs/current/warm-standby.html
  • log shipping methodology
    • File based log shipping - asynchronous in nature and logs are shipped after they have been written to disk and thus may increase the RTO
    • Record base log shipping (Streaming Replication) - data loss can be minimised

Reporting Tools

Hith Availability

Мониторинг

Плюсы-минусы

  • опытный специалист, обладающий достаточными компетенциями в настройке и оптимизации CentOS, файловой системы и самого PostgreSQL.
  • На юникс быстрее чем виндовс

Паттерны

ETL PSQL2MSSQL

ETL MSSQL2PSQL

  • foreign data wrapper
    • https://habr.com/ru/company/postgrespro/blog/309490/
    • https://www.mssqltips.com/sqlservertip/3663/sql-server-and-postgresql-foreign-data-wrapper-configuration-part-3/

Benchmark

Блокировки Locks

  • Locky type by DELETE
  • Явные блокировки - режимы блокировки на уровне
    • таблицы
      • все и режимы блокировки работают на уровне таблицы, даже если имя режима содержит слово «row»; такие имена сложились исторически.
    • строки
  • системное представление pg_locks

Миграция с MS SQL

Миграция с простоем

Миграция “большим взрывом” с простоем

Миграция без простоя Zero Downtime

Постепенная, итеративная миграция - Zero Downtime

  • Free
    • AWS Babelfish - минус: схемы БД не изменяются
      • плагин PostgreSQL - поддержка T-SQL синтаксиса (приложение можно не переписывать сразу при смене СУБД) по протоколу TDS при миграции на СУБД PostgreSQL
      • план:
        • генерируется схема БД из MS SQL Managment
        • Compass проверяет схему на возможность миграции на PostgreSQL Babelfish
        • генерируется схема БД в PostgreSQL - минус повторяет схему MSSQL без рефакторинга схем БД
        • миграция данных через AWS DMS
        • приложение направляет запросы в Babelfish в формате MSSQL T-SQL, BabelFish конвертирует их в формате PostgreSQL
    • CDC Debezium используя Снимки (snapshots)
    • AWS SCT + Database Migration Service (DMS) - минус: схемы БД не изменяются
  • Commercial

    Версии

    • 13
    • 14