En aquest tema, explorarem les diferències clau entre les bases de dades relacionals (RDBMS) i les bases de dades no relacionals (NoSQL). Aquesta comparació ens ajudarà a entendre quan és més adequat utilitzar un tipus de base de dades o l'altre, depenent dels requisits del projecte.

  1. Definició i Estructura

Bases de Dades Relacionals (RDBMS)

  • Definició: Les bases de dades relacionals emmagatzemen dades en taules estructurades amb files i columnes.
  • Estructura: Utilitzen un model de dades basat en relacions, on les taules poden estar relacionades entre si mitjançant claus primàries i claus foranes.
  • Exemples: MySQL, PostgreSQL, Oracle, SQL Server.

Bases de Dades No Relacionals (NoSQL)

  • Definició: Les bases de dades NoSQL emmagatzemen dades de manera no estructurada o semi-estructurada, sovint en formats com JSON, BSON, o documents.
  • Estructura: No utilitzen un model de dades basat en relacions. En canvi, poden utilitzar models de documents, claus-valor, columnes amples o grafs.
  • Exemples: MongoDB (documents), Redis (claus-valor), Cassandra (columnes amples), Neo4j (grafs).

  1. Model de Dades

Característica RDBMS NoSQL
Estructura Taules amb files i columnes Documents, claus-valor, columnes amples, grafs
Esquemes Esquema rígid (predefinit) Esquema flexible (dinàmic)
Relacions Relacions explícites amb claus foranes Relacions implícites o no necessàries

  1. Escalabilitat

RDBMS

  • Escalabilitat Vertical: Augment de la capacitat del servidor (més CPU, RAM, etc.).
  • Limitacions: Pot ser costós i té límits físics.

NoSQL

  • Escalabilitat Horitzontal: Afegir més servidors per distribuir la càrrega.
  • Avantatges: Millor per a aplicacions amb grans volums de dades i alta disponibilitat.

  1. Consistència i Disponibilitat

RDBMS

  • Consistència: ACID (Atomicitat, Consistència, Aïllament, Durabilitat) garanteix transaccions consistents.
  • Disponibilitat: Pot ser limitada en entorns distribuïts.

NoSQL

  • Consistència: BASE (Basically Available, Soft state, Eventual consistency) permet flexibilitat en la consistència.
  • Disponibilitat: Alta disponibilitat en entorns distribuïts.

  1. Casos d'Ús

RDBMS

  • Aplicacions: Sistemes financers, aplicacions empresarials, CRM, ERP.
  • Quan Utilitzar: Quan es requereix consistència i integritat de dades.

NoSQL

  • Aplicacions: Aplicacions web, xarxes socials, big data, IoT.
  • Quan Utilitzar: Quan es requereix escalabilitat i flexibilitat en l'estructura de dades.

  1. Exemples Pràctics

RDBMS: MySQL

CREATE TABLE Clients (
    id INT PRIMARY KEY,
    nom VARCHAR(100),
    email VARCHAR(100)
);

INSERT INTO Clients (id, nom, email) VALUES (1, 'Joan', '[email protected]');

NoSQL: MongoDB

{
    "_id": 1,
    "nom": "Joan",
    "email": "[email protected]"
}
db.clients.insertOne({
    _id: 1,
    nom: "Joan",
    email: "[email protected]"
});

  1. Exercici Pràctic

Exercici: Identificar el tipus de base de dades adequat

Llegeix els següents escenaris i decideix si és més adequat utilitzar una base de dades relacional o no relacional. Justifica la teva resposta.

  1. Sistema de Gestió d'Inventari: Requereix transaccions consistents i integritat de dades.
  2. Aplicació de Xarxa Social: Necessita gestionar grans volums de dades d'usuaris amb alta disponibilitat i escalabilitat.
  3. Sistema de Facturació: Requereix informes detallats i consistència en les transaccions financeres.

Solucions

  1. Sistema de Gestió d'Inventari: RDBMS. La consistència i integritat de dades són crucials.
  2. Aplicació de Xarxa Social: NoSQL. La flexibilitat i escalabilitat són més importants.
  3. Sistema de Facturació: RDBMS. La consistència en les transaccions financeres és essencial.

Conclusió

En resum, les bases de dades relacionals i no relacionals tenen diferents punts forts i febles. La selecció del tipus de base de dades depèn dels requisits específics del projecte, com ara la necessitat de consistència, escalabilitat, flexibilitat en l'estructura de dades i disponibilitat. Entendre aquestes diferències és fonamental per prendre decisions informades sobre l'arquitectura de dades en qualsevol aplicació.

© Copyright 2024. Tots els drets reservats