Què és NoSQL?
NoSQL (Not Only SQL) és una categoria de sistemes de gestió de bases de dades que difereixen dels sistemes de bases de dades relacionals tradicionals (SQL) en diversos aspectes. Les bases de dades NoSQL estan dissenyades per gestionar grans volums de dades no estructurades o semi-estructurades, oferint una major flexibilitat i escalabilitat.
Característiques Clau de NoSQL
-
Escalabilitat Horitzontal:
- Les bases de dades NoSQL poden escalar-se horitzontalment afegint més servidors a la xarxa, en lloc de millorar el maquinari d'un sol servidor.
-
Model de Dades Flexible:
- NoSQL permet emmagatzemar dades en formats no estructurats o semi-estructurats, com ara documents JSON, columnes, gràfics o claus-valor.
-
Alta Disponibilitat i Tolerància a Fallades:
- Les bases de dades NoSQL estan dissenyades per ser altament disponibles i tolerants a fallades, sovint utilitzant replicació i particionament de dades.
-
Rendiment Elevat:
- Optimitzades per a operacions de lectura i escriptura ràpides, les bases de dades NoSQL poden gestionar grans volums de trànsit de dades amb baixa latència.
Quan Utilitzar NoSQL?
Les bases de dades NoSQL són ideals per a aplicacions que requereixen:
- Grans volums de dades: Sistemes que gestionen terabytes o petabytes de dades.
- Dades no estructurades o semi-estructurades: Aplicacions que treballen amb dades que no encaixen bé en un esquema relacional.
- Alta velocitat de lectura/escriptura: Aplicacions que necessiten processar grans quantitats de transaccions per segon.
- Escalabilitat horitzontal: Necessitat de distribuir dades i càrrega de treball a través de múltiples servidors.
Tipus de Bases de Dades NoSQL
- Bases de Dades de Documents
- Exemples: MongoDB, CouchDB
- Model de Dades: Emmagatzemen dades com a documents, sovint en format JSON o BSON.
- Ús Comú: Aplicacions web, sistemes de gestió de continguts.
- Bases de Dades de Claus-Valor
- Exemples: Redis, DynamoDB
- Model de Dades: Emmagatzemen dades com a parelles clau-valor.
- Ús Comú: Caché de sessions, emmagatzematge de configuracions.
- Bases de Dades de Columnes Amples
- Exemples: Cassandra, HBase
- Model de Dades: Emmagatzemen dades en files i columnes, però amb una estructura més flexible que les bases de dades relacionals.
- Ús Comú: Anàlisi de grans volums de dades, aplicacions de xarxes socials.
- Bases de Dades de Gràfics
- Exemples: Neo4j, OrientDB
- Model de Dades: Emmagatzemen dades com a nodes, arestes i propietats, permetent representacions complexes de relacions.
- Ús Comú: Xarxes socials, motors de recomanació.
Comparació entre Bases de Dades Relacionals i NoSQL
Característica | Bases de Dades Relacionals (SQL) | Bases de Dades NoSQL |
---|---|---|
Model de Dades | Esquemes fixos, taules | Flexible, documents, claus-valor, gràfics, columnes amples |
Escalabilitat | Vertical (millorar maquinari) | Horitzontal (afegir més servidors) |
Transaccions | ACID (Atomicitat, Consistència, Aïllament, Durabilitat) | BASE (Bàsicament Disponible, Estat Suau, Consistència Eventual) |
Tipus de Dades | Estructurades | No estructurades o semi-estructurades |
Casos d'Ús | Aplicacions empresarials, sistemes financers | Big Data, aplicacions web, xarxes socials |
Exemples Pràctics
Exemple 1: Emmagatzematge de Documents amb MongoDB
{ "_id": "1", "nom": "Joan", "cognoms": "Garcia", "correu": "[email protected]", "adreça": { "carrer": "Carrer Major, 1", "ciutat": "Barcelona", "codi_postal": "08001" } }
Exemple 2: Emmagatzematge de Claus-Valor amb Redis
SET usuari:1:nom "Joan" SET usuari:1:cognoms "Garcia" SET usuari:1:correu "[email protected]"
Exercici Pràctic
Exercici 1: Crear una Base de Dades de Documents amb MongoDB
- Instal·la MongoDB si no ho has fet ja.
- Crea una col·lecció anomenada
usuaris
. - Insereix un document amb la següent informació:
- Nom: Maria
- Cognoms: Pérez
- Correu: [email protected]
- Adreça: Carrer de la Pau, 10, València, 46001
Solució
use meva_base_de_dades db.usuaris.insertOne({ "nom": "Maria", "cognoms": "Pérez", "correu": "[email protected]", "adreça": { "carrer": "Carrer de la Pau, 10", "ciutat": "València", "codi_postal": "46001" } })
Conclusió
Les bases de dades NoSQL ofereixen una alternativa potent i flexible a les bases de dades relacionals tradicionals, especialment per a aplicacions que requereixen gestionar grans volums de dades no estructurades o semi-estructurades. Comprendre els diferents tipus de bases de dades NoSQL i els seus casos d'ús és essencial per triar la solució adequada per a cada projecte.
En el següent tema, explorarem els diferents tipus de bases de dades NoSQL amb més detall, incloent-hi exemples pràctics i casos d'ús específics.
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