Extensions nima — CREATE EXTENSION, mashhur extensionlar
PostgreSQL yadroida barcha imkoniyat yo'q — lekin keraklilarini extension sifatida qo'shish mumkin. UUID generatsiya, fuzzy search, geografik ma'lumotlar, statistik funksiyalar — hammasi extension orqali.
Extension nima?
Extension — PostgreSQL ga qo'shiluvchi modul. Yangi turlar, funksiyalar, operatorlar, indeks turlari qo'shadi.
-- Extension o'rnatish
CREATE EXTENSION IF NOT EXISTS extension_nomi;
-- O'chirish
DROP EXTENSION extension_nomi;
-- O'rnatilgan extensionlar
SELECT name, default_version, installed_version
FROM pg_available_extensions
WHERE installed_version IS NOT NULL;
Mashhur extensionlar
uuid-ossp — UUID generatsiya
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
SELECT uuid_generate_v4(); -- a7c5a3b2-...
-- Jadvalda
CREATE TABLE foydalanuvchilar (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
ism TEXT
);
PostgreSQL 13+ da gen_random_uuid() built-in — extension shart emas.
pg_trgm — fuzzy search
CREATE EXTENSION IF NOT EXISTS pg_trgm;
-- Trigram o'xshashlik
SELECT similarity('Noutbuk', 'Noutbok'); -- 0.6
-- ILIKE uchun GIN index
CREATE INDEX ON mahsulotlar USING GIN (nomi gin_trgm_ops);
WHERE nomi ILIKE '%noutb%'; -- endi tez!
hstore — kalit-qiymat turi
CREATE EXTENSION IF NOT EXISTS hstore;
CREATE TABLE sozlamalar (id INT, sozlama hstore);
INSERT INTO sozlamalar VALUES (1, 'til=>uz, mavzu=>qorong_i');
SELECT sozlama->'til' FROM sozlamalar WHERE id = 1; -- uz
pgcrypto — kriptografiya
CREATE EXTENSION IF NOT EXISTS pgcrypto;
-- Parol hashlash
SELECT crypt('my_password', gen_salt('bf'));
-- UUID (alternative)
SELECT gen_random_uuid();
-- Shifrlash
SELECT pgp_sym_encrypt('maxfiy matn', 'kalit');
tablefunc — crosstab (pivot)
CREATE EXTENSION IF NOT EXISTS tablefunc;
-- Jadvaldan pivot (oy x kategoriya)
SELECT * FROM crosstab('...') AS ...;
pg_stat_statements — so'rovlar statistikasi
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
-- postgresql.conf: shared_preload_libraries = 'pg_stat_statements'
Available extensions ro'yxati
SELECT name, comment FROM pg_available_extensions ORDER BY name;
Mashhurlar:
uuid-ossp — UUID generatsiya
pg_trgm — fuzzy search, trigram
hstore — kalit-qiymat turi
pgcrypto — kriptografiya funksiyalari
pg_stat_statements — so'rovlar statistikasi
PostGIS — geografik ma'lumotlar
timescaledb — vaqt seriyali ma'lumotlar
pg_partman — partitioning avtomatsiya
Xulosa
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -- UUID
CREATE EXTENSION IF NOT EXISTS pg_trgm; -- fuzzy search
CREATE EXTENSION IF NOT EXISTS pgcrypto; -- kriptografiya
CREATE EXTENSION IF NOT EXISTS hstore; -- kalit-qiymat
-- Ko'rish
SELECT * FROM pg_available_extensions WHERE installed_version IS NOT NULL;
-- O'chirish
DROP EXTENSION extension_nomi;
Extension — PostgreSQL imkoniyatlarini kengaytirish. O'rnatish — bir qator SQL.
Keyingi dars
59-dars: PostGIS — geografik ma'lumotlar, location based queries