PostgreSQL jako univerzální databáze: Proč v 2026 nahrazuje specializované systémy¶
PostgreSQL začínal jako akademický projekt v Berkeley. Dnes je to nejflexibilnější databáze na světě — a s každou verzí pohlcuje další specializované systémy.
PostgreSQL v 2026: Co všechno umí¶
Relační data (samozřejmě)¶
ACID transakce, MVCC, window functions, CTE, lateral joins — standard. Ale to umí každá relační DB.
Dokumentová databáze (nahrazuje MongoDB)¶
JSONB typ s plnou indexací. GIN indexy na JSON dokumentech jsou rychlejší než MongoDB pro většinu workloadů:
-- Uložení dokumentu
INSERT INTO products (data) VALUES (
'{"name": "Widget", "specs": {"weight": 1.5, "color": "blue"}, "tags": ["new", "sale"]}'::jsonb
);
-- Dotaz do vnořeného dokumentu
SELECT data->>'name' FROM products
WHERE data->'specs'->>'color' = 'blue'
AND data->'tags' ? 'sale';
-- GIN index na celý JSONB
CREATE INDEX idx_products_data ON products USING GIN (data);
Kdy nahrazuje MongoDB: Dokumenty s občasnými JOINy, transakční konzistence, queries přes vnořené struktury. MongoDB má výhodu jen při extrémním horizontálním škálování (sharding).
Fulltextové vyhledávání (nahrazuje Elasticsearch)¶
Vestavěný fulltext s českým stemmerem, ranking, highlighting:
-- Vytvoření fulltext indexu
ALTER TABLE articles ADD COLUMN tsv tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('czech', coalesce(title, '')), 'A') ||
setweight(to_tsvector('czech', coalesce(body, '')), 'B')
) STORED;
CREATE INDEX idx_articles_tsv ON articles USING GIN (tsv);
-- Hledání s rankingem
SELECT title, ts_rank(tsv, query) AS rank
FROM articles, to_tsquery('czech', 'kubernetes & produkce') query
WHERE tsv @@ query
ORDER BY rank DESC;
Kdy nahrazuje Elasticsearch: Do milionů dokumentů, jednoduché fulltextové dotazy, nepotřebujete analytické agregace nad logy. Elasticsearch je stále lepší pro log management, real-time analytics a fuzzy matching ve velkém měřítku.
Vektorová databáze (pgvector — nahrazuje Pinecone/Weaviate)¶
S rozšířením pgvector máte vektorové embeddingy přímo vedle relačních dat:
-- pgvector setup
CREATE EXTENSION vector;
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
content TEXT,
embedding vector(1536), -- OpenAI ada-002 dimension
metadata JSONB
);
-- HNSW index pro rychlé ANN hledání
CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops);
-- Semantické hledání
SELECT content, 1 - (embedding <=> $1) AS similarity
FROM documents
ORDER BY embedding <=> $1
LIMIT 10;
Kdy nahrazuje Pinecone/Weaviate: RAG aplikace s <10M vektorů, kde potřebujete JOINy s relačními daty (metadata filtering + vector search v jednom dotazu). Specializované vektorové DB jsou lepší nad 100M+ vektorů a pro multi-tenant SaaS.
Time-series (TimescaleDB — nahrazuje InfluxDB)¶
TimescaleDB rozšíření přidává hypertables s automatickým partitioningem:
-- TimescaleDB
CREATE TABLE metrics (
time TIMESTAMPTZ NOT NULL,
device_id TEXT,
temperature DOUBLE PRECISION,
humidity DOUBLE PRECISION
);
SELECT create_hypertable('metrics', 'time');
-- Continuous aggregates (materialized views s auto-refresh)
CREATE MATERIALIZED VIEW metrics_hourly
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 hour', time) AS bucket,
device_id,
AVG(temperature) AS avg_temp,
MAX(humidity) AS max_humidity
FROM metrics
GROUP BY bucket, device_id;
Geospatial (PostGIS — nahrazuje dedicated GIS)¶
PostGIS je de facto standard pro geoprostorová data. Podporuje 2D/3D geometrie, rastry, routing:
-- Najdi pobočky do 5 km
SELECT name, ST_Distance(
location::geography,
ST_MakePoint(14.4378, 50.0755)::geography
) AS distance_m
FROM branches
WHERE ST_DWithin(
location::geography,
ST_MakePoint(14.4378, 50.0755)::geography,
5000
)
ORDER BY distance_m;
Cache vrstva (nahrazuje Redis pro některé use-case)¶
UNLOGGED tabulky + index = cache bez síťového hopu:
CREATE UNLOGGED TABLE cache (
key TEXT PRIMARY KEY,
value JSONB,
expires_at TIMESTAMPTZ
);
-- Automatické mazání expirovaných
CREATE INDEX ON cache (expires_at);
Ne, nenahradí Redis pro pub/sub nebo sub-milisekundové latence. Ale pro session storage a application cache s TTL? Jedna závislost méně.
Architektura: Kolik specializovaných DB potřebujete?¶
Typický enterprise stack 2020¶
PostgreSQL (relační) + MongoDB (dokumenty) + Elasticsearch (fulltext)
+ Redis (cache) + InfluxDB (metriky) + Pinecone (vektory)
= 6 databází, 6 operačních nákladů, 6 backup strategií
Konsolidovaný stack 2026¶
PostgreSQL + pgvector + TimescaleDB + PostGIS
= 1 databáze, 1 backup, 1 monitoring, 1 tým
Úspora: 40–60 % operačních nákladů, jednodušší DR, méně expertise potřeba.
Kdy PostgreSQL nestačí¶
- >100TB dat — zvažte Citus (distributed PG) nebo dedikované řešení
- Sub-milisekundový cache — Redis/Dragonfly
- Log analytics v petabyte měřítku — ClickHouse, Elasticsearch
- Graf queries — Neo4j (Apache AGE extension existuje, ale nezralý)
- Extrémní write throughput — ScyllaDB, Cassandra
- Multi-region active-active — CockroachDB, Spanner
Produkční tipy¶
Connection pooling je povinný¶
PostgreSQL vytváří proces per connection. Nad 200 spojení degraduje. Použijte PgBouncer nebo Supavisor:
App → PgBouncer (transaction pooling) → PostgreSQL
Vacuum a autovacuum¶
MVCC = mrtvé řádky. Autovacuum musí stíhat. Monitorujte pg_stat_user_tables.n_dead_tup a nastavte agresivnější autovacuum pro velké tabulky.
Partitioning pro velké tabulky¶
Deklarativní partitioning od PG 12+. Pro time-series data partition per měsíc/týden. Pro multi-tenant partition per tenant.
Logical replication pro zero-downtime migrace¶
Migrujete z MySQL/Oracle? Logical replication umožňuje real-time sync bez výpadku.
Závěr¶
PostgreSQL v 2026 pokrývá 80–90 % databázových potřeb typické české firmy. Než přidáte další specializovanou databázi do stacku, zkontrolujte — neudělá to PostgreSQL s rozšířením?
Jedno EXPLAIN ANALYZE vám řekne víc než marketingová stránka jakékoli NoSQL databáze.
CORE SYSTEMS navrhuje datové architektury od PostgreSQL po distribuované systémy. Kontaktujte nás pro audit vašeho databázového stacku.
Potřebujete pomoc s implementací?
Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.
Kontaktujte nás