În acest curs vom explora diferitele tipuri de baze de date, strategiile de scalare și optimizare utilizate în arhitecturile software moderne.
Există două categorii principale de baze de date: SQL (relaționale) și NoSQL (non-relaționale). Alegerea corectă depinde de cerințele aplicației.
- SQL: Structurate în tabele cu relații definite (ex: MySQL, PostgreSQL).
- NoSQL: Concepute pentru scalabilitate și flexibilitate (ex: MongoDB, Cassandra, DynamoDB).
- Key-Value Stores: Redis, DynamoDB - rapid pentru accesări de tip cheie-valoare.
- Document Stores: MongoDB, CouchDB - datele sunt stocate ca documente JSON.
- Column Stores: Cassandra, BigTable - optimizate pentru citiri rapide la scală mare.
- Graph Databases: Neo4j - ideal pentru modelarea relațiilor complexe dintre entități.
Sharding-ul împarte datele pe mai multe baze de date pentru a îmbunătăți scalabilitatea.
- Range-based Sharding: Datele sunt împărțite pe baza unui interval (ex: ID-uri 1-1000 pe un server, 1001-2000 pe altul).
- Hash-based Sharding: O funcție hash distribuie datele uniform între noduri.
- Database Federation: Fiecare serviciu gestionează o bază de date independentă.
Replicarea permite stocarea datelor pe mai multe servere pentru a îmbunătăți redundanța și performanța.
- Master-Slave Replication: Un server principal scrie datele, iar replicile sunt folosite pentru citiri.
- Multi-Master Replication: Mai multe noduri pot efectua atât citiri, cât și scrieri.
- Read-Replicas: Replici ale bazei de date utilizate exclusiv pentru citiri.
- Consistență puternică vs. eventuală: Alegerea între performanță și sincronizare exactă a datelor.
Cache-ul ajută la reducerea solicitărilor către baza de date prin stocarea rezultatelor interogărilor frecvente.
- Redis vs. Memcached: Redis oferă persistență, Memcached este mai rapid dar fără stocare pe disc.
- Cache Invalidation Patterns: Cum menținem cache-ul actualizat.
- Write-Through vs. Write-Behind Caching: Strategii de scriere în cache pentru a optimiza accesul la date.
Cum putem gestiona milioane de produse și tranzacții într-o platformă de e-commerce scalabilă?
- SQL (PostgreSQL, MySQL): Potrivit pentru gestionarea comenzilor și plăților.
- NoSQL (MongoDB, DynamoDB): Ideal pentru catalogul de produse și recenzii.
- Redis pentru caching: Stocarea rezultatelor interogărilor frecvente pentru a reduce încărcarea bazei de date.
- Master-Slave Replication pentru citiri rapide.
- Sharding pentru împărțirea datelor între mai multe servere.
- Indexare eficientă pentru căutări rapide.
- CDN pentru livrarea rapidă a imaginilor produselor.