En aquest tema, explorarem els tipus de dades JSON en PostgreSQL, com emmagatzemar i manipular dades JSON, i els avantatges d'utilitzar JSON en les bases de dades relacionals.

Què és JSON?

JSON (JavaScript Object Notation) és un format lleuger d'intercanvi de dades que és fàcil de llegir i escriure per a humans, i fàcil de parsejar i generar per a màquines. JSON és un format de text que és completament independent del llenguatge, però utilitza convencions que són familiars als programadors de la família de llenguatges C, incloent C, C++, C#, Java, JavaScript, Perl, Python, i molts altres.

Tipus de dades JSON en PostgreSQL

PostgreSQL ofereix dos tipus de dades per emmagatzemar JSON:

  1. JSON: Emmagatzema el text JSON com una cadena de text. No valida el format JSON en el moment de la inserció.
  2. JSONB: Emmagatzema el JSON en un format binari binaritzat. Valida el format JSON en el moment de la inserció i permet una manipulació més eficient.

Comparació entre JSON i JSONB

Característica JSON JSONB
Emmagatzematge Text Binari
Validació No valida Valida
Cerca i indexació Més lenta Més ràpida
Manipulació Menys eficient Més eficient
Ordenació de claus Manté l'ordre original No manté l'ordre original

Exemple de creació de taula amb JSON i JSONB

CREATE TABLE exemples_json (
    id SERIAL PRIMARY KEY,
    dades_json JSON,
    dades_jsonb JSONB
);

Inserció de dades JSON

INSERT INTO exemples_json (dades_json, dades_jsonb)
VALUES (
    '{"nom": "Joan", "edat": 30, "ciutat": "Barcelona"}',
    '{"nom": "Maria", "edat": 25, "ciutat": "Madrid"}'
);

Consultes amb JSON

Accés a elements JSON

Per accedir a elements dins d'un camp JSON, podem utilitzar els operadors -> i ->>.

  • -> retorna un objecte JSON.
  • ->> retorna un valor de text.
-- Accedir a un objecte JSON
SELECT dades_json->'nom' AS nom
FROM exemples_json;

-- Accedir a un valor de text
SELECT dades_json->>'nom' AS nom
FROM exemples_json;

Consultes amb JSONB

JSONB permet una cerca més eficient i suport per a indexació. Per exemple, podem crear un índex GIN (Generalized Inverted Index) per a un camp JSONB.

CREATE INDEX idx_dades_jsonb ON exemples_json USING GIN (dades_jsonb);

Actualització de dades JSON

Podem actualitzar elements dins d'un camp JSON utilitzant les funcions jsonb_set i jsonb_insert.

-- Actualitzar un valor existent
UPDATE exemples_json
SET dades_jsonb = jsonb_set(dades_jsonb, '{edat}', '35')
WHERE dades_jsonb->>'nom' = 'Joan';

-- Inserir un nou valor
UPDATE exemples_json
SET dades_jsonb = jsonb_insert(dades_jsonb, '{adreça}', '"Carrer Major, 10"')
WHERE dades_jsonb->>'nom' = 'Maria';

Exercicis pràctics

Exercici 1: Creació i inserció de dades JSON

  1. Crea una taula anomenada empleats amb els següents camps:

    • id (clau primària)
    • informacio (JSONB)
  2. Insereix les següents dades a la taula empleats:

    {"nom": "Anna", "posicio": "Desenvolupadora", "departament": "IT"}
    {"nom": "Pere", "posicio": "Analista", "departament": "Finances"}
    

Solució

CREATE TABLE empleats (
    id SERIAL PRIMARY KEY,
    informacio JSONB
);

INSERT INTO empleats (informacio)
VALUES
('{"nom": "Anna", "posicio": "Desenvolupadora", "departament": "IT"}'),
('{"nom": "Pere", "posicio": "Analista", "departament": "Finances"}');

Exercici 2: Consultes amb JSONB

  1. Recupera el nom de tots els empleats.
  2. Actualitza la posició de "Anna" a "Enginyera de Programari".

Solució

-- Recuperar el nom de tots els empleats
SELECT informacio->>'nom' AS nom
FROM empleats;

-- Actualitzar la posició de "Anna"
UPDATE empleats
SET informacio = jsonb_set(informacio, '{posicio}', '"Enginyera de Programari"')
WHERE informacio->>'nom' = 'Anna';

Conclusió

En aquest tema, hem après sobre els tipus de dades JSON en PostgreSQL, com emmagatzemar i manipular dades JSON, i els avantatges d'utilitzar JSONB per a una manipulació més eficient. Hem vist exemples pràctics de creació de taules, inserció de dades, consultes i actualitzacions amb JSON i JSONB. Aquests coneixements són fonamentals per treballar amb dades semi-estructurades en PostgreSQL.

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