Objectius del Mòdul
En aquest mòdul, aprendràs els conceptes bàsics sobre les bases de dades, la seva importància en el desenvolupament d'aplicacions i com interactuar amb elles des de Node.js. Al final d'aquest mòdul, hauràs adquirit els coneixements necessaris per començar a treballar amb bases de dades relacionals i no relacionals.
Què és una Base de Dades?
Una base de dades és una col·lecció organitzada d'informació o dades estructurades, generalment emmagatzemades i accessibles electrònicament des d'un sistema informàtic. Les bases de dades permeten emmagatzemar, gestionar i recuperar dades de manera eficient.
Tipus de Bases de Dades
Hi ha diversos tipus de bases de dades, però les més comunes són:
-
Bases de Dades Relacionals (RDBMS):
- Emmagatzemen dades en taules amb files i columnes.
- Utilitzen SQL (Structured Query Language) per gestionar i manipular dades.
- Exemples: MySQL, PostgreSQL, SQLite.
-
Bases de Dades NoSQL:
- Dissenyades per emmagatzemar dades no estructurades o semi-estructurades.
- No utilitzen SQL com a llenguatge principal.
- Exemples: MongoDB, Cassandra, Redis.
Comparació entre RDBMS i NoSQL
Característica | RDBMS | NoSQL |
---|---|---|
Estructura de Dades | Taules (files i columnes) | Documents, Clau-Valor, Grafs |
Llenguatge de Consulta | SQL | NoSQL (varia segons la base) |
Escalabilitat | Vertical | Horitzontal |
Esquemes | Esquemes rígids | Esquemes flexibles |
Consistència | Alta consistència | Eventualment consistent |
Per què Utilitzar una Base de Dades?
Les bases de dades són essencials per a la majoria d'aplicacions perquè permeten:
- Emmagatzematge Persistent: Les dades es mantenen fins i tot després de tancar l'aplicació.
- Gestió Eficient de Dades: Permeten operacions ràpides de lectura, escriptura, actualització i eliminació.
- Integritat de Dades: Asseguren que les dades siguin consistents i correctes.
- Accés Concurrent: Permeten que múltiples usuaris accedeixin i modifiquin les dades simultàniament.
Interactuar amb Bases de Dades des de Node.js
Node.js ofereix diverses biblioteques i mòduls per interactuar amb diferents tipus de bases de dades. A continuació, es mostren alguns dels més utilitzats:
Bases de Dades Relacionals
- MySQL:
mysql
omysql2
són paquets populars per connectar-se a bases de dades MySQL. - PostgreSQL:
pg
és el paquet més utilitzat per interactuar amb PostgreSQL.
Bases de Dades NoSQL
- MongoDB:
mongoose
és una biblioteca d'objecte-document mapper (ODM) per treballar amb MongoDB. - Redis:
redis
és un client per connectar-se a bases de dades Redis.
Exemple Pràctic: Connexió a una Base de Dades MySQL
Instal·lació del Paquet MySQL
Primer, instal·la el paquet mysql2
utilitzant npm:
Connexió a la Base de Dades
A continuació, crea un fitxer database.js
i afegeix el següent codi per connectar-te a una base de dades MySQL:
const mysql = require('mysql2'); // Configuració de la connexió const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'testdb' }); // Connectar-se a la base de dades connection.connect((err) => { if (err) { console.error('Error connectant-se a la base de dades:', err.stack); return; } console.log('Connectat a la base de dades com a id ' + connection.threadId); }); // Tancar la connexió connection.end();
Explicació del Codi
- Importació del Mòdul:
const mysql = require('mysql2');
importa el mòdulmysql2
. - Configuració de la Connexió: Es defineixen els paràmetres de connexió com l'host, l'usuari, la contrasenya i la base de dades.
- Connexió a la Base de Dades:
connection.connect()
estableix la connexió i gestiona possibles errors. - Tancar la Connexió:
connection.end();
tanca la connexió a la base de dades.
Exercici Pràctic
Objectiu
Connectar-se a una base de dades MySQL, crear una taula, inserir dades i realitzar una consulta.
Passos
-
Instal·la el paquet
mysql2
si no ho has fet ja:npm install mysql2
-
Crea un fitxer
exercise.js
i afegeix el següent codi:const mysql = require('mysql2'); // Configuració de la connexió const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'testdb' }); // Connectar-se a la base de dades connection.connect((err) => { if (err) { console.error('Error connectant-se a la base de dades:', err.stack); return; } console.log('Connectat a la base de dades com a id ' + connection.threadId); // Crear una taula const createTableQuery = ` CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL ) `; connection.query(createTableQuery, (err, results) => { if (err) { console.error('Error creant la taula:', err.stack); return; } console.log('Taula creada amb èxit'); // Inserir dades const insertQuery = ` INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]'), ('Jane Smith', '[email protected]') `; connection.query(insertQuery, (err, results) => { if (err) { console.error('Error inserint dades:', err.stack); return; } console.log('Dades inserides amb èxit'); // Realitzar una consulta const selectQuery = 'SELECT * FROM users'; connection.query(selectQuery, (err, results) => { if (err) { console.error('Error realitzant la consulta:', err.stack); return; } console.log('Resultats de la consulta:', results); // Tancar la connexió connection.end(); }); }); }); });
Solució
El codi anterior realitza els següents passos:
- Es connecta a la base de dades
testdb
. - Crea una taula
users
si no existeix. - Insereix dues files a la taula
users
. - Realitza una consulta per obtenir totes les files de la taula
users
. - Tanca la connexió a la base de dades.
Conclusió
En aquesta secció, has après els conceptes bàsics sobre les bases de dades, els diferents tipus de bases de dades i com interactuar amb elles des de Node.js. Has vist un exemple pràctic de com connectar-se a una base de dades MySQL, crear una taula, inserir dades i realitzar una consulta. Aquestes habilitats són fonamentals per desenvolupar aplicacions que necessiten emmagatzemar i gestionar dades de manera eficient. En els següents temes, aprofundirem en l'ús de bases de dades específiques com MongoDB i SQL amb Sequelize.
Curs de Node.js
Mòdul 1: Introducció a Node.js
Mòdul 2: Conceptes Bàsics
Mòdul 3: Sistema de Fitxers i I/O
Mòdul 4: HTTP i Servidors Web
Mòdul 5: NPM i Gestió de Paquets
Mòdul 6: Framework Express.js
- Introducció a Express.js
- Configuració d'una Aplicació Express
- Middleware
- Routing en Express
- Gestió d'Errors
Mòdul 7: Bases de Dades i ORMs
- Introducció a les Bases de Dades
- Utilitzar MongoDB amb Mongoose
- Utilitzar Bases de Dades SQL amb Sequelize
- Operacions CRUD
Mòdul 8: Autenticació i Autorització
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb Mocha i Chai
- Proves d'Integració
- Depuració d'Aplicacions Node.js
Mòdul 10: Temes Avançats
Mòdul 11: Desplegament i DevOps
- Variables d'Entorn
- Utilitzar PM2 per a la Gestió de Processos
- Desplegar a Heroku
- Integració i Desplegament Continu