3. Каковы различия между Tantor BE 17 и PostgreSQL 17#
3. Каковы различия между Tantor BE 17 и PostgreSQL 17 #
3.1. Полезные ссылки #
3.2. Улучшения ядра #
Оптимизированный алгоритм сжатия данных
pglz
(~1,4 раза).Оптимизированный процесс восстановления репликации (
fadvise
на резервном сервере).Расширенное использование инструкций SIMD. Улучшения, запланированные для PostgreSQL 18, уже доступны в Tantor BE 17.
Оптимизация для линейного поиска для процессоров архитектуры ARM64.
Проверка контрольной суммы блоков данных при отправке WAL на резервный сервер.
Повышенная информативность диагностической информации:
Диагностика внутренних ошибок СУБД (
backtrace_on_internal_error
параметр).Информативность журналов сервера СУБД — стартовые сообщения содержат дополнительную диагностическую информацию.
Приложение сервера pg_controldata содержит дополнительную метаинформацию о редакции и сборке для упрощения диагностики возможных неполадок.
Максимальный размер данных в ячейках таблицы, поддерживаемый модулем pg_dump, составляет 2 ГБ.
Поддержка сэмплирования в pg_stat_statements: выборка снижает накладные расходы на мониторинг при высокой загрузке, что полностью исключает негативное влияние на общую производительность системы.
Увеличенное количество секций в общих буферах.
3.3. Дополнительные поставляемые утилиты #
pg_diag_setup — автоматизирует настройку расширений диагностики производительности Tantor BE, таких как
pg_store_plans
,pg_stat_statements
,pg_stat_kcache
,auto_explain
,pg_buffercache
и других. Это упрощает интеграцию систем мониторинга баз данных.pg_sec_check — проводит аудит безопасности конфигураций базы данных Tantor BE. Он автоматизирует проверку различных аспектов безопасности: от настроек сервера до параметров, специфичных для базы данных, и предоставляет подробные отчеты об обнаруженных проблемах вместе с практическими рекомендациями по их устранению.
pgcompacttable — уменьшает размер раздутых таблиц и индексов без использования тяжелых блокировок. Он разработан для реорганизации данных в таблицах и перестроения индексов с целью освобождения дискового пространства без влияния на производительность базы данных.
pgcopydb — автоматизирует выполнение pg_dump | pg_restore между двумя работающими серверами Postgres. Чтобы как можно быстрее скопировать базу данных на другой сервер, желательно использовать параллельные опции pg_dump и при этом иметь возможность передавать данные в несколько задач pg_restore.
3.4. Дополнительные модули (расширения) #
page_repair - предназначен для восстановления отдельных поврежденных страниц с использованием резервных данных с сервера репликации. Он позволяет сэкономить время на операции восстановления, так как не требует восстановления всех данных, а только отдельных страниц.
pg_background - позволяет выполнять команды в фоновом режиме, такие как VACUUM и CREATE INDEX CONCURRENTLY, из SQL, а также запускать автономные транзакции.
pg_cron - это планировщик заданий на основе cron, работающий внутри базы данных как расширение. Он использует тот же синтаксис, что и обычный cron, и позволяет планировать выполнение команд непосредственно из базы данных Tantor.
pg_repack - позволяет удалять раздувание таблиц и индексов (BLOAT) и, при необходимости, восстанавливать физический порядок кластеризованных индексов. В отличие от CLUSTER и VACUUM FULL, он работает онлайн, не удерживая эксклюзивную блокировку обрабатываемых таблиц во время обработки.
pg_stat_advisor - позволяет анализировать производительность запросов и создавать дополнительные статистики для улучшения плана запроса.
pg_stat_kcache - собирает статистику о реальных операциях чтения и записи, выполняемых на уровне файловой системы.
pg_store_plans - предоставляет средства для отслеживания статистики плана выполнения для всех операторов SQL, выполняемых сервером Tantor.
pg_uuidv7 - обеспечивает поддержку работы с типом данных UUIDv7.
pg_wait_sampling - предоставляет информацию о текущем событии ожидания конкретного процесса. Однако для того, чтобы собрать описательную статистику поведения сервера, пользователь должен многократно отбирать текущее событие ожидания. pg_wait_sampling — это расширение для сбора выборочной статистики событий ожидания, которое предотвращает избыточное семплирование ожидания текущего события.
pgaudit - предоставляет детализированное ведение журнала аудита сеансов и/или объектов через стандартное средство ведения журнала Tantor DBMS. Цель pgAudit - предоставить пользователям Tantor DBMS возможность создавать журналы аудита, которые часто требуются для соблюдения государственных, финансовых или ISO сертификаций.
pgauditlogtofile - это дополнение к pgAudit, которое перенаправляет строки аудита в отдельный файл, вместо использования диспетчера журналирования сервера PostgreSQL. В итоге мы получаем файл аудита, который можно легко ротировать, не загрязняя журналы сервера этими сообщениями. Журналы аудита в системах с высокой нагрузкой могут очень быстро расти. Это расширение позволяет автоматически ротировать файлы на основе заданного количества минут.
pgl_ddl_deploy - это расширение для отправки команд DDL на сервер-реплику во время логической репликации.
wal2json - это плагин вывода для логического декодирования. Это означает, что плагин имеет доступ к кортежам, создаваемым INSERT и UPDATE. Также, старые версии строк для UPDATE/DELETE могут быть доступны в зависимости от настроенной идентичности реплики. Изменения могут быть потреблены с использованием протокола потоковой передачи (слоты логической репликации) или через специальный SQL API.
3.5. Дополнительно поставляемые программы: #
Tantor Platform: полнофункциональная модульная платформа для администрирования и мониторинга Tantor RDMS и большинства кластеров, основанных на PostgreSQL. Платформа упрощает ежедневную работу с RDBMS и значительно упрощает управление RDBMS. Функциональность программного обеспечения включает: умный и простой пользовательский интерфейс, автоматическую адаптивную настройку кластера, обзор системы, оповещения и мониторинг, автоматическую проверку работоспособности и аудит схемы, выполнение задач обслуживания через графический интерфейс, профилирование запросов и администрирование нескольких серверов в одном месте;
pg_anon: это самостоятельная программа на Python для работы с СУБД Tantor или PostgreSQL для маскировки и анонимизации данных во время миграции данных между производственной и тестовой средами;
wal-g: это инструмент создания зашифрованных, сжатых резервных копий Tantor BE (полных и инкрементных) и их отправки/получения из/в хранилища без сохранения в файловой системе;
pg_configurator: инструмент настройки PostgreSQL;
pg_cluster: это ansible playbook для кластера высокой доступности PostgreSQL на Patroni.
3.6. Программные интерфейсы для различных языков #
Tantor BE предоставляет широкий спектр драйверов и библиотек для взаимодействия с базой данных из различных языков программирования и сред. В следующих разделах описаны основные интерфейсы и соответствующие инструменты.
3.6.1. C/C++ #
libpq: Основная библиотека C для клиентских программ Tantor BE. Она позволяет отправлять запросы, получать результаты и управлять соединениями.
libpqxx: Обертка C++ над libpq, предлагающая более современный и удобный интерфейс для разработчиков на C++.
3.6.2. Java/JDBC #
PostgreSQL JDBC Driver: Официальный JDBC-драйвер, который позволяет Java-приложениям взаимодействовать с базами данных Tantor BE с использованием стандартного JDBC API.
3.6.3. .NET #
Npgsql: Открытый .NET провайдер данных для PostgreSQL. Он позволяет .NET приложениям использовать ADO.NET для подключения к Tantor BE, выполнения запросов и получения данных.
3.6.4. ODBC #
psqlODBC: Официальный драйвер PostgreSQL ODBC, обеспечивающий подключение для приложений и инструментов, использующих интерфейсы ODBC.
3.6.5. Perl #
DBD::Pg: Perl модуль, совместимый с DBI для Tantor BE. Он безупречно интегрируется с Perl DBI фреймворком для взаимодействия с базами данных.
3.6.6. Python #
psycopg2/psycopg: Широко используемые адаптеры Python, реализующие спецификацию Python DB-API. Они обеспечивают надежный и эффективный способ выполнения запросов, обработки транзакций и управления соединениями.
pg8000: Чисто-Python альтернативный адаптер, который также поддерживает стандарт DB-API.
3.6.7. Ruby #
pg gem: Официальный драйвер Ruby для PostgreSQL, предоставляющий родной интерфейс для выполнения запросов и обработки результатов.
3.6.8. Ткл #
pgtcl/pgtcl-ng: расширения Tcl, позволяющие устанавливать соединения с Tantor BE, выполнять запросы и управлять результатами запросов в скриптах Tcl.
3.7. Заметки к релизу #
Первый выпуск Tantor BE — это 17.5.0
.
Значительные изменения можно найти на соответствующей странице.
Все остальные изменения см. в Примечаниях к выпуску.