En aquest tema, explorarem els diferents tipus de bases de dades NoSQL, les seves característiques i els casos d'ús més comuns. Les bases de dades NoSQL es classifiquen principalment en quatre categories: bases de dades de documents, bases de dades de claus-valor, bases de dades de columnes i bases de dades de grafs.
- Bases de Dades de Documents
Característiques
- Emmagatzemen dades en formats de documents, com JSON, BSON o XML.
- Cada document és una unitat independent que pot contenir dades estructurades o semi-estructurades.
- Permeten una gran flexibilitat en l'estructura de les dades, ja que cada document pot tenir un esquema diferent.
Exemples
- MongoDB
- CouchDB
Casos d'Ús
- Aplicacions web que necessiten una estructura flexible de dades.
- Sistemes de gestió de continguts.
- Aplicacions mòbils que requereixen sincronització de dades.
Exemple Pràctic
{ "user_id": "12345", "name": "Joan", "email": "[email protected]", "orders": [ { "order_id": "54321", "product": "Llibre", "quantity": 1 }, { "order_id": "98765", "product": "Ordinador", "quantity": 1 } ] }
- Bases de Dades de Claus-Valor
Característiques
- Emmagatzemen dades com a parelles clau-valor.
- Són molt ràpides per a operacions de lectura i escriptura.
- Són ideals per a emmagatzemar dades senzilles i ràpidament accessibles.
Exemples
- Redis
- DynamoDB
Casos d'Ús
- Emmagatzematge de sessions d'usuari.
- Caches de dades.
- Sistemes de recomanació.
Exemple Pràctic
"user:12345" -> "{ 'name': 'Joan', 'email': '[email protected]' }" "session:67890" -> "{ 'user_id': '12345', 'token': 'abcdef' }"
- Bases de Dades de Columnes
Característiques
- Emmagatzemen dades en columnes en lloc de files.
- Són molt eficients per a consultes que involucren grans volums de dades.
- Permeten l'emmagatzematge de dades distribuïdes.
Exemples
- Apache Cassandra
- HBase
Casos d'Ús
- Aplicacions d'anàlisi de dades.
- Sistemes de recomanació.
- Emmagatzematge de registres de logs.
Exemple Pràctic
user_id | name | order_id | product | quantity | |
---|---|---|---|---|---|
12345 | Joan | [email protected] | 54321 | Llibre | 1 |
12345 | Joan | [email protected] | 98765 | Ordinador | 1 |
- Bases de Dades de Grafs
Característiques
- Emmagatzemen dades en nodes i arestes, representant relacions entre entitats.
- Són ideals per a dades altament connectades.
- Permeten consultes complexes sobre relacions.
Exemples
- Neo4j
- ArangoDB
Casos d'Ús
- Xarxes socials.
- Sistemes de recomanació.
- Anàlisi de fraus.
Exemple Pràctic
(Node) Joan -[friend_of]-> (Node) Maria (Node) Joan -[purchased]-> (Node) Llibre (Node) Maria -[purchased]-> (Node) Ordinador
Comparació de Tipus de Bases de Dades NoSQL
Tipus de Base de Dades | Característiques Principals | Casos d'Ús Comuns | Exemples |
---|---|---|---|
Documents | Flexible, semi-estructurat | Aplicacions web, CMS, apps mòbils | MongoDB, CouchDB |
Claus-Valor | Ràpid, senzill | Emmagatzematge de sessions, caches | Redis, DynamoDB |
Columnes | Eficient per grans volums | Anàlisi de dades, logs | Cassandra, HBase |
Grafs | Relacions complexes | Xarxes socials, anàlisi de fraus | Neo4j, ArangoDB |
Exercici Pràctic
Enunciat
- Tria un tipus de base de dades NoSQL i descriu un cas d'ús específic per a una aplicació real.
- Implementa un petit exemple de dades utilitzant el format adequat per al tipus de base de dades seleccionat.
Solució
-
Tipus de Base de Dades: Documents Cas d'Ús: Aplicació de gestió de projectes on cada projecte té una estructura de dades diferent.
-
Exemple de Dades:
{ "project_id": "001", "name": "Projecte A", "description": "Desenvolupament d'una aplicació web", "team_members": [ { "name": "Joan", "role": "Desenvolupador" }, { "name": "Maria", "role": "Dissenyadora" } ], "tasks": [ { "task_id": "t001", "description": "Crear la interfície d'usuari", "status": "En curs" }, { "task_id": "t002", "description": "Implementar la base de dades", "status": "Pendent" } ] }
Conclusió
En aquesta secció, hem explorat els diferents tipus de bases de dades NoSQL, les seves característiques, exemples i casos d'ús. Hem vist com cada tipus de base de dades és adequat per a diferents necessitats i aplicacions. A la següent secció, compararem les bases de dades relacionals i no relacionals per entendre millor quan utilitzar cadascuna.
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