Fins ara hem parlat de bases de dades relacionals (taules, files, columnes, SQL). Però existeix un altre gran món: les bases de dades NoSQL. La més important a AWS és DynamoDB. Entendre què és i quan utilitzar-la et dona una eina poderosa per a casos on les bases relacionals no encaixen bé.

Relacional vs NoSQL: dues filosofies

Recordem: una base relacional (com RDS) organitza les dades en taules amb un esquema fix (columnes definides) i les relaciona entre si. És genial quan les dades tenen una estructura clara i consistent.

Una base NoSQL (com DynamoDB) és més flexible: no exigeix un esquema rígid i està dissenyada per escalar a quantitats enormes de dades i peticions amb una velocitat constant.

Analogia:

  • Una base relacional és com un arxivador perfectament ordenat amb carpetes etiquetades: tot té el seu lloc exacte i les relacions estan ben definides. Ideal per a ordre i consultes complexes.
  • Una base NoSQL clau-valor és com una enorme consigna de taquilles: dones un número de taquilla (la clau) i obtens el que hi ha dins (el valor), a l’instant, sense importar quantes taquilles hi hagi. Rapidíssima per a «dona’m això concret», però no per a «busca’m tot el que compleixi aquestes cinc condicions».

Què és DynamoDB

DynamoDB és la base de dades NoSQL totalment gestionada d’AWS. Les seves característiques distintives:

  • Model clau-valor i de documents: guardes elements identificats per una clau, i cada element pot contenir dades flexibles (documents tipus JSON).
  • Totalment gestionada i serverless: no hi ha servidors per administrar en absolut. No tries mida d’instància ni apliques pegats. Només crees una taula i la fas servir.
  • Rendiment constant a qualsevol escala: respon en mil·lisegons tant si tens mil elements com si en tens milers de milions.
  • Escala pràcticament infinita: gestiona milions de peticions per segon sense despentinar-se.

Per què és tan especial: DynamoDB va ser dissenyada per resoldre els problemes d’escala d’Amazon.com (el comerç electrònic). Quan milions de persones compren alhora en Black Friday, necessites una base de dades que no s’alenteixi per molta càrrega que tingui. DynamoDB és aquesta base de dades.

Conceptes bàsics de DynamoDB

  • Taula: el contenidor de les teves dades (com una taula, però sense esquema rígid).
  • Element (item): cada registre (equivalent a una fila).
  • Atributs: els camps de cada element (poden variar entre elements: un pot tenir camps que un altre no té).
  • Clau de partició (partition key): la clau principal per la qual s’identifica i localitza cada element. Triar-la bé és el més important del disseny.
Taula "Usuaris"
┌──────────────┬─────────────────────────────────────┐
│ id (clau)    │  dades (flexibles)                   │
├──────────────┼─────────────────────────────────────┤
│ user#123     │  { nom: "Anna", edat: 30 }           │
│ user#124     │  { nom: "Lluís", ciutat: "Madrid",   │
│              │    premium: true }                   │
└──────────────┴─────────────────────────────────────┘
   ↑ fixa’t: cada element pot tenir camps diferents

Quan utilitzar DynamoDB (els seus punts forts)

DynamoDB brilla quan necessites:

  • Escala massiva i rendiment constant: milions d’usuaris, pics enormes, latència de mil·lisegons.
  • Accés per clau coneguda: «dona’m l’usuari user#123», «dona’m el carretó del client X». Cerques directes i ràpides.
  • Estructura flexible: dades que no encaixen en un esquema fix o que canvien amb freqüència.
  • Zero administració: no vols gestionar absolutament res de la base de dades.

Exemples reals ideals per a DynamoDB:

  • Carrets de la compra d’un e-commerce (accés per id d’usuari, escala enorme).
  • Perfils de jugadors en un videojoc amb milions d’usuaris.
  • Sessions d’usuaris d’una app.
  • Catàlegs de productes amb atributs variables.
  • IoT: dades de milions de sensors enviant informació constantment.

Quan NO utilitzar DynamoDB

DynamoDB no és la resposta per a tot. Evita-la quan:

  • Necessites consultes complexes amb moltes condicions, unions entre taules (joins) i relacions riques → per això, una base relacional (RDS/Aurora).
  • Les teves dades tenen moltes relacions entre si que consultes de formes variades.
  • La teva aplicació és petita i el model relacional et resulta més natural.

Regla mental: Si les teves consultes són del tipus «dona’m aquest element concret per la seva clau» a gran escala → DynamoDB. Si són del tipus «dona’m totes les comandes de clients de Madrid que van comprar al març i van gastar més de 100 €» → base relacional (SQL).

Funcions avançades (perquè sàpigues que existeixen)

  • DynamoDB Streams: emet un «esdeveniment» cada cop que alguna cosa canvia a la taula. Serveix per disparar accions automàtiques (ho veurem amb Lambda al Capítol 14 i en arquitectures event-driven del Capítol 28).
  • A demanda vs aprovisionat: pots pagar per ús real (on-demand) o reservar capacitat. On-demand és genial per a càrregues imprevisibles.
  • DAX: una memòria cau en memòria per a DynamoDB que la fa encara més ràpida (microsegons).
  • Taules globals: rèpliques en diverses regions per a usuaris d’arreu del món.

El que has de recordar

  • DynamoDB és la base de dades NoSQL d’AWS, totalment gestionada i serverless (zero administració).
  • Utilitza un model clau-valor / documents flexible i ofereix rendiment constant en mil·lisegons a qualsevol escala.
  • És ideal per a escala massiva i accessos per clau coneguda (carrets, perfils, sessions, IoT…), amb estructura flexible.
  • No és bona per a consultes complexes, relacions i joins: per això utilitza una base relacional (RDS/Aurora).
  • Regla mental: «dona’m aquest element per la seva clau» → DynamoDB; «busca’m tot el que compleixi diverses condicions» → SQL.

Al següent subcapítol veurem ElastiCache, per guardar dades en memòria i accelerar les teves aplicacions.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats