En aquesta secció, explorarem els diferents tipus de bases de dades que existeixen, les seves característiques principals i els casos d'ús més comuns. Les bases de dades es poden classificar en diverses categories segons la seva estructura, model de dades i ús específic.
- Bases de Dades Relacionals (RDBMS)
Característiques Principals:
- Model de Dades: Utilitzen el model relacional, on les dades es representen en taules (relacions).
- Estructura: Les taules estan formades per files (registres) i columnes (atributs).
- Integritat: Suporten regles d'integritat referencial per mantenir la coherència de les dades.
- Llenguatge: Utilitzen SQL (Structured Query Language) per a la manipulació i consulta de dades.
Exemples:
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
Casos d'Ús:
- Sistemes de gestió empresarial (ERP)
- Aplicacions financeres
- Sistemes de gestió de continguts (CMS)
Exemple de Codi SQL:
-- Creació d'una taula CREATE TABLE Clients ( ID INT PRIMARY KEY, Nom VARCHAR(100), Correu VARCHAR(100) ); -- Inserció de dades INSERT INTO Clients (ID, Nom, Correu) VALUES (1, 'Joan', '[email protected]'); -- Consulta de dades SELECT * FROM Clients;
- Bases de Dades No Relacionals (NoSQL)
Característiques Principals:
- Model de Dades: No segueixen el model relacional. Poden utilitzar models de documents, claus-valor, columnes o gràfics.
- Escalabilitat: Dissenyades per escalar horitzontalment, és a dir, afegint més servidors.
- Flexibilitat: Permeten estructures de dades més flexibles i poden gestionar dades no estructurades o semi-estructurades.
Tipus de Bases de Dades NoSQL:
- Documentals: Emmagatzemen dades en documents JSON, BSON, etc. (Ex: MongoDB, CouchDB)
- Claus-Valor: Emmagatzemen dades com a parelles clau-valor. (Ex: Redis, DynamoDB)
- Columnars: Emmagatzemen dades en columnes en lloc de files. (Ex: Cassandra, HBase)
- Gràfics: Emmagatzemen dades en nodes i arestes, ideals per a dades relacionals complexes. (Ex: Neo4j, OrientDB)
Exemples:
- MongoDB (Documental)
- Redis (Claus-Valor)
- Cassandra (Columnar)
- Neo4j (Gràfics)
Casos d'Ús:
- Aplicacions web i mòbils amb grans volums de dades
- Sistemes de recomanació
- Xarxes socials
Exemple de Codi MongoDB:
// Inserció de documents en una col·lecció db.clients.insertOne({ ID: 1, Nom: 'Joan', Correu: '[email protected]' }); // Consulta de documents db.clients.find();
- Bases de Dades Orientades a Objectes (OODBMS)
Característiques Principals:
- Model de Dades: Utilitzen el model orientat a objectes, on les dades es representen com a objectes, similar a la programació orientada a objectes.
- Integració: Faciliten la integració amb llenguatges de programació orientats a objectes com Java, C++, etc.
- Herència: Suporten herència, encapsulació i polimorfisme.
Exemples:
- db4o
- ObjectDB
- Versant
Casos d'Ús:
- Aplicacions CAD/CAM
- Sistemes de simulació
- Aplicacions científiques
Exemple de Codi db4o (Java):
// Creació d'un objecte i emmagatzematge en db4o ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "clients.db"); Client joan = new Client(1, "Joan", "[email protected]"); db.store(joan); db.close();
- Bases de Dades en Memòria (IMDB)
Característiques Principals:
- Velocitat: Emmagatzemen dades principalment en memòria RAM, oferint un accés molt ràpid.
- Persistència: Algunes ofereixen opcions de persistència per assegurar que les dades no es perdin en cas de fallada.
- Aplicacions: Ideals per a aplicacions que requereixen temps de resposta molt ràpids.
Exemples:
- Redis
- Memcached
- SAP HANA
Casos d'Ús:
- Sistemes de cache
- Aplicacions en temps real
- Analítica en temps real
Exemple de Codi Redis:
- Bases de Dades Distribuïdes
Característiques Principals:
- Distribució: Les dades es distribueixen a través de múltiples nodes o servidors.
- Escalabilitat: Dissenyades per escalar horitzontalment.
- Resiliència: Ofereixen alta disponibilitat i tolerància a fallades.
Exemples:
- Apache Cassandra
- Google Spanner
- Amazon DynamoDB
Casos d'Ús:
- Aplicacions globals amb necessitats de latència baixa
- Sistemes de comerç electrònic
- Xarxes socials
Exemple de Codi Cassandra (CQL):
-- Creació d'una taula CREATE TABLE clients ( id UUID PRIMARY KEY, nom TEXT, correu TEXT ); -- Inserció de dades INSERT INTO clients (id, nom, correu) VALUES (uuid(), 'Joan', '[email protected]'); -- Consulta de dades SELECT * FROM clients;
Conclusió
En aquesta secció hem explorat els diferents tipus de bases de dades, incloent les bases de dades relacionals, NoSQL, orientades a objectes, en memòria i distribuïdes. Cada tipus té les seves pròpies característiques, avantatges i casos d'ús específics. Comprendre aquestes diferències és fonamental per seleccionar la base de dades adequada per a cada aplicació o projecte.
Fonaments de Bases de Dades
Mòdul 1: Introducció a les Bases de Dades
- Conceptes Bàsics de Bases de Dades
- Tipus de Bases de Dades
- Història i Evolució de les Bases de Dades
Mòdul 2: Bases de Dades Relacionals
Mòdul 3: Bases de Dades No Relacionals
- Introducció a NoSQL
- Tipus de Bases de Dades NoSQL
- Comparació entre Bases de Dades Relacionals i No Relacionals
Mòdul 4: Disseny d'Esquemes
- Principis de Disseny d'Esquemes
- Diagrames Entitat-Relació (ER)
- Transformació de Diagrames ER a Esquemes Relacionals