Pgxman - менеджер расширений PostgreSQL

Pgxman - это менеджер пакетов, подобный npm, но вместо пакетов Javascript он предназначен для расширений PostgreSQL. Он обнаруживает и упрощает работу с расширениями, а также заботится об управлении зависимостями, установке и удалении, основываясь на локальной среде разработки.

В книге "На дворе 2024 год. Почему PostgreSQL все еще доминирует?" мы выяснили, что одной из причин популярности PostgreSQL является его гибкий механизм расширений:

Расширяемость как архитектурное ядро позволяет быть креативным и не беспокоиться о дисциплине: вы можете попробовать множество расширений и позволить сильным преуспеть. Если все сделано правильно, "вторая система" не обречена; она выигрывает от уверенности, домашних проектов и амбиций, развитых в первой системе:

  • Вам нужна распределенная база данных? Возьмите Citus.
  • Вам нужно инкрементное обслуживание представлений (IVM)? Возьмите pg_ivm.
  • Импортировать базу данных SQLite в Postgres? Для этого есть pgsqlite.
  • Нативные асинхронные запросы в Postgres? Используйте pg_later.
  • Добавить колоночные таблицы в Postgres? Используйте Hydra.
  • Превратить его в специализированное векторное хранилище? Используйте pg_vector.
  • Встроить в него возможности ElasticSearch FTS? Используйте pg_bmp25.

и так далее. Список слишком велик, чтобы быть исчерпывающим.

Поэтому возникает следующая проблема: как отследить и как установить расширение, принимая во внимание его версии, зависимости для сборки и запуска, базовую операционную систему и архитектуру платформы?

Решением является pgxman. Это менеджер пакетов, который автоматически определяет и оптимизирует операции расширения на основе локальной среды разработки. Если вы знакомы с npm, то вы будете чувствовать себя как дома;

вместо npm install [имя расширения]

вы делаете: pgxman install [имя расширения]

Например, чтобы установить pg_vector, выполните следующие действия: pgxman install pgvector

Установить несколько расширений, определенные версии расширений и версию PG становится так же просто, как: pgxman install --pg 15 pgvector=0. 5. 1 pg_ivm=1. 7. 0

Pgxman использует репозиторий билдкитов, чтобы знать, какие расширения доступны. Когда вы используете поиск или установку, метаданные билдкита используются для получения информации о расширении. Кэшированная копия этого репозитория хранится в папке pgxman в каталоге конфигурации пользователя.

Каждый билдкит определяет, как собирать каждое расширение, а система сборки билдкитов собирает их для каждого пакетного менеджера.
При добавлении или обновлении билдкита сборка выполняется автоматически (с помощью Github Actions), а пакеты сохраняются в репозитории pgxman.

Таким образом, pgxman может управлять зависимостями, устанавливать и удалять пакеты через менеджер пакетов вашей системы.

Оговорка: pxgman работает только с локальными установками Postgres. Если вы работаете с экземпляром, управляемым облаком, он тоже может это сделать, но провайдер должен добавить явную поддержку для этого. Кроме того, он не поддерживает TLE.

В качестве напоминания о TLE мы хорошо рассмотрели их в статье Trusted Language Extensions Bring PostgreSQL Procedural UDFs To The Cloud, где я рассказываю об этом:

PostgreSQL позволяет писать пользовательские функции на других языках, помимо SQL и C. Эти языки в общем случае называются процедурными языками (PL). Процедурные языки не встроены в сервер PostgreSQL; они предлагаются в виде загружаемых модулей. Таким образом, вы можете расширить свою базу данных мощными функциями, которых нет в SQL.

Это, конечно, влечет за собой проблемы безопасности, когда база данных вызывает код, например, операции с файловой системой, или использует операторы, которые могут взаимодействовать с операционной системой или процессом сервера базы данных.

Для этого были разработаны расширения Trusted Language Extensions (TLE). Это расширения PostgreSQL, которые можно безопасно запускать на экземпляре БД. Trusted Language Extensions не предоставляют доступа к файловой системе и предназначены для предотвращения доступа к небезопасным ресурсам. Его среда выполнения ограничивает влияние любого дефекта расширения одним соединением с базой данных.

Как уже было сказано, pxman их не поддерживает, однако существует другой менеджер пакетов, DbDev от Supabase, который предназначен для установки TLE.

Как и pxman, dbdev поставляется с реестром пакетов, в который предварительно загружено несколько полезных пакетов, например olirice-asciiplot.

Чтобы установить pxman с помощью homebrew, нужно сделать следующее: brew install pgxman/tap/pgxman

и без: curl -sfL https://install. pgx. sh | sh -.

После этого вы можете начать наслаждаться дополнительной функциональностью, только что добавленной в ваш экземпляр Postgres!

Pgxman - менеджер расширений PostgreSQL
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
20 февраля 2024 г.
50

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще

Google выпускает предварительную версию Android 15 для разработчиков

Компания Google представила начальную предварительную версию Android 15 для разработчиков, демонстрирующую ряд новых функций, направленных на повышение конфиденциальности пользователей, совершенствование рекламных возможностей и улучшение общей производительности устройств.

20 февраля 2024 г.
41

GitHub объясняет программу Fundamentals

Компания GitHub рассказала о работе своей программы Engineering Fundamentals Program и о том, как она используется для того, чтобы 100 миллионов пользователей GitHub по всему миру имели "бесперебойный доступ к продуктам и сервисам GitHub на платформе, которая всегда доступна, безопасна и доступна".

13 февраля 2024 г.
53

Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!

Только свежие новости программирования и технологий каждый день.