Výber databázy ovplyvní architektúru celej aplikácie. Neexistuje univerzálne najlepšie riešenie.
SQL (Relačné databázy)
Dáta organizované v tabuľkách s definovanou schémou a vzťahmi.
Populárne možnosti
- PostgreSQL - najkompletnejší open-source
- MySQL/MariaDB - rozšírený, spoľahlivý
- SQL Server - enterprise od Microsoft
- SQLite - embedded, súborová
Kedy zvoliť SQL
-- Komplexné vzťahy
SELECT u.name, o.total, p.name as product
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id
WHERE o.created_at > '2024-01-01'
- Štruktúrované dáta s jasnými vzťahmi
- ACID transakcie sú kritické
- Komplexné queries a reporty
- Finančné a bankové systémy
Silné stránky
- Integrita dát (foreign keys, constraints)
- Transakcie (ACID)
- Zrelý ekosystém
- SQL je štandardizovaný
NoSQL
Rôzne typy databáz pre rôzne prípady použitia.
Dokumentové (MongoDB, CouchDB)
// Flexibilná schéma
{
"_id": "user123",
"name": "John",
"orders": [
{ "product": "Laptop", "price": 999 },
{ "product": "Mouse", "price": 29 }
],
"preferences": {
"newsletter": true,
"theme": "dark"
}
}
Kedy použiť: CMS, e-commerce katalógy, používateľské profily
Key-Value (Redis, DynamoDB)
GET user:123:session
SET user:123:session "token_abc" EX 3600
Kedy použiť: Cache, sessions, rate limiting
Wide-column (Cassandra, ScyllaDB)
Kedy použiť: Time-series dáta, IoT, veľké objemy zápisov
Graph (Neo4j)
Kedy použiť: Sociálne siete, recommendation engines
Porovnanie
| Kritérium | SQL | NoSQL |
|---|---|---|
| Schéma | Fixná | Flexibilná |
| Škálovanie | Vertikálne | Horizontálne |
| Transakcie | ACID | Eventual consistency* |
| Queries | SQL | Vlastné API |
| Vzťahy | Silné | Slabé |
*Niektoré NoSQL databázy podporujú ACID
Polyglot Persistence
Moderné aplikácie často kombinujú viaceré databázy:
- PostgreSQL pre hlavné dáta
- Redis pre cache a sessions
- Elasticsearch pre full-text search
- S3 pre súbory
Záver
Začnite s PostgreSQL - pokryje 90% prípadov. Pridajte špecializované databázy keď narazíte na konkrétne limity. Predčasná optimalizácia je koreň všetkého zla.