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": "joan@example.com",
"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': 'joan@example.com' }"
"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 | joan@example.com | 54321 | Llibre | 1 |
| 12345 | Joan | joan@example.com | 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
