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.