Introducció

PostgreSQL és conegut principalment com un sistema de gestió de bases de dades relacionals (RDBMS), però també ofereix funcionalitats que permeten utilitzar-lo com una base de dades NoSQL. Això és especialment útil per a aplicacions que necessiten emmagatzemar i gestionar dades no estructurades o semi-estructurades, com JSON.

Conceptes Clau

  1. Tipus de Dades JSON i JSONB

  • JSON: Emmagatzema dades en format text JSON. És útil per a la compatibilitat amb altres sistemes que utilitzen JSON.
  • JSONB: Emmagatzema dades en un format binari optimitzat per a la cerca i l'indexació. És més eficient per a operacions de lectura i escriptura.

  1. Funcions i Operadors JSON

  • PostgreSQL proporciona una àmplia gamma de funcions i operadors per treballar amb dades JSON i JSONB, com ara ->, ->>, #>, #>>, jsonb_set, jsonb_insert, etc.

  1. Indexació de Dades JSONB

  • Els índexs GIN (Generalized Inverted Index) i BTREE són utilitzats per millorar el rendiment de les consultes sobre dades JSONB.

Exemples Pràctics

Creant una Taula amb una Columna JSONB

CREATE TABLE productes (
    id SERIAL PRIMARY KEY,
    nom VARCHAR(100),
    caracteristiques JSONB
);

Inserint Dades JSONB

INSERT INTO productes (nom, caracteristiques) VALUES
('Ordinador Portàtil', '{"marca": "Dell", "model": "XPS 13", "preu": 1200, "caracteristiques": {"RAM": "16GB", "CPU": "Intel i7"}}'),
('Telèfon Mòbil', '{"marca": "Apple", "model": "iPhone 12", "preu": 999, "caracteristiques": {"RAM": "4GB", "CPU": "A14 Bionic"}}');

Consultant Dades JSONB

Accedint a un Camp Específic

SELECT nom, caracteristiques->>'marca' AS marca
FROM productes;

Filtrant per un Camp Específic

SELECT nom, caracteristiques
FROM productes
WHERE caracteristiques->>'marca' = 'Dell';

Actualitzant Dades JSONB

UPDATE productes
SET caracteristiques = jsonb_set(caracteristiques, '{preu}', '1100')
WHERE nom = 'Ordinador Portàtil';

Indexant Dades JSONB

CREATE INDEX idx_caracteristiques_marca ON productes USING GIN (caracteristiques);

Exercicis Pràctics

Exercici 1: Creant i Inserint Dades

  1. Crea una taula anomenada clients amb les següents columnes:

    • id (SERIAL, PRIMARY KEY)
    • nom (VARCHAR)
    • detalls (JSONB)
  2. Insereix tres registres a la taula clients amb dades JSONB que incloguin informació com l'adreça, el telèfon i l'email.

Solució

CREATE TABLE clients (
    id SERIAL PRIMARY KEY,
    nom VARCHAR(100),
    detalls JSONB
);

INSERT INTO clients (nom, detalls) VALUES
('Joan', '{"adreça": "Carrer Major, 1", "telèfon": "123456789", "email": "[email protected]"}'),
('Maria', '{"adreça": "Carrer Nou, 2", "telèfon": "987654321", "email": "[email protected]"}'),
('Pere', '{"adreça": "Carrer Vell, 3", "telèfon": "555555555", "email": "[email protected]"}');

Exercici 2: Consultant i Actualitzant Dades

  1. Consulta els noms i els emails dels clients.
  2. Actualitza el telèfon de Maria a 111111111.

Solució

SELECT nom, detalls->>'email' AS email
FROM clients;

UPDATE clients
SET detalls = jsonb_set(detalls, '{telèfon}', '"111111111"')
WHERE nom = 'Maria';

Resum

En aquesta secció, hem après com utilitzar PostgreSQL com una base de dades NoSQL mitjançant l'ús de tipus de dades JSON i JSONB. Hem vist com crear taules, inserir, consultar i actualitzar dades JSONB, així com indexar-les per millorar el rendiment. Aquestes funcionalitats permeten a PostgreSQL gestionar dades no estructurades de manera eficient, oferint una gran flexibilitat per a diverses aplicacions.

Curs de PostgreSQL

Mòdul 1: Introducció a PostgreSQL

Mòdul 2: Operacions bàsiques de SQL

Mòdul 3: Consultes SQL avançades

Mòdul 4: Disseny de bases de dades i normalització

Mòdul 5: Funcionalitats avançades de PostgreSQL

Mòdul 6: Optimització i millora del rendiment

Mòdul 7: Seguretat i gestió d'usuaris

Mòdul 8: Treballant amb JSON i funcionalitats NoSQL

Mòdul 9: Extensions i eines avançades

Mòdul 10: Estudis de cas i aplicacions del món real

© Copyright 2024. Tots els drets reservats