Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Що таке розширення PostgreSQL і які з них корисні веб-застосунку?

Розширення додають у базу нові типи, функції, оператори й індекси без зміни самого PostgreSQL. Встановлюються командою в конкретній базі:

CREATE EXTENSION IF NOT EXISTS pg_trgm;
SELECT extname, extversion FROM pg_extension;    -- що вже встановлено
SELECT name, default_version FROM pg_available_extensions;   -- що доступно на сервері

Корисні розширення:

Розширення Для чого
pg_stat_statements статистика всіх запитів: які найповільніші й найчастіші - основний інструмент пошуку проблем
pg_trgm пошук за схожістю й LIKE '%текст%' з індексом
unaccent пошук без урахування діакритичних знаків
citext рядки без урахування регістру (email)
pgcrypto хешування й шифрування в SQL
btree_gist обмеження на кшталт «бронювання не перетинаються» з рівністю й діапазоном
pgvector вектори для семантичного пошуку й RAG
postgis географічні дані: відстані, полігони, «найближчі точки»
pg_partman автоматичне створення партицій

pg_stat_statements - особливий: його потрібно завантажити при старті сервера:

shared_preload_libraries = 'pg_stat_statements'
SELECT calls, round(mean_exec_time::numeric, 1) AS avg_ms, query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

У Laravel розширення вмикають у міграції:

public function up(): void
{
    DB::statement('CREATE EXTENSION IF NOT EXISTS pg_trgm');
}

Що врахувати:

  • права: створювати більшість розширень може лише суперкористувач чи власник бази; користувач застосунку з мінімальними правами міграцію не виконає - розширення встановлює адміністратор;
  • керовані бази (RDS, Cloud SQL, Neon, Supabase) дозволяють лише розширення зі свого списку - перевірте до того, як будувати на ньому архітектуру;
  • тестова база теж має мати розширення, інакше міграції в CI впадуть;
  • оновлення PostgreSQL: розширення мають бути доступні й у новій версії, а ALTER EXTENSION ... UPDATE - частина плану оновлення.

Докладніше в документації: CREATE EXTENSION

Схожі питання