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
- 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.
- 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.
- 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
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
Filtrant per un Camp Específic
Actualitzant Dades JSONB
UPDATE productes SET caracteristiques = jsonb_set(caracteristiques, '{preu}', '1100') WHERE nom = 'Ordinador Portàtil';
Indexant Dades JSONB
Exercicis Pràctics
Exercici 1: Creant i Inserint Dades
-
Crea una taula anomenada
clients
amb les següents columnes:id
(SERIAL, PRIMARY KEY)nom
(VARCHAR)detalls
(JSONB)
-
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
- Consulta els noms i els emails dels clients.
- 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
- Optimització de consultes
- Estratègies d'indexació
- Analitzant el rendiment de les consultes
- Vacuuming i manteniment
Mòdul 7: Seguretat i gestió d'usuaris
- Rols d'usuari i permisos
- Mètodes d'autenticació
- Encriptació de dades
- Còpia de seguretat i restauració
Mòdul 8: Treballant amb JSON i funcionalitats NoSQL
Mòdul 9: Extensions i eines avançades
- PostGIS per a dades geoespacials
- Cerca de text complet
- Wrappers de dades externes
- PL/pgSQL i altres llenguatges procedimentals