Introducció a Azure Cosmos DB

Azure Cosmos DB és un servei de base de dades multimodel completament gestionat que permet crear i gestionar bases de dades distribuïdes globalment amb latència baixa i alta disponibilitat. És ideal per a aplicacions que necessiten escalar de manera elàstica i gestionar grans volums de dades.

Característiques clau d'Azure Cosmos DB

  • Distribució global: Permet replicar les dades a qualsevol regió d'Azure.
  • Escalabilitat elàstica: Escala automàticament el rendiment i l'emmagatzematge.
  • Latència baixa: Ofereix latència de lectura i escriptura inferior a 10 ms.
  • Models de consistència: Proporciona cinc models de consistència per equilibrar el rendiment i la consistència de les dades.
  • Suport multimodel: Compatible amb diversos models de dades com document, gràfic, columna ampla i clau-valor.

Configuració d'Azure Cosmos DB

Pas 1: Crear un compte d'Azure Cosmos DB

  1. Accedeix al portal d'Azure: https://portal.azure.com
  2. Crea un recurs nou: Fes clic a "Crea un recurs" i cerca "Azure Cosmos DB".
  3. Selecciona l'API: Tria l'API que millor s'adapti a les teves necessitats (SQL, MongoDB, Cassandra, Gremlin, Taula).
  4. Configura el compte:
    • Nom del compte: Introdueix un nom únic per al teu compte de Cosmos DB.
    • Grup de recursos: Selecciona un grup de recursos existent o crea'n un de nou.
    • Regió: Tria la regió on vols que es creï el compte.
  5. Revisa i crea: Revisa la configuració i fes clic a "Crea".

Pas 2: Crear una base de dades i un contenidor

  1. Accedeix al compte de Cosmos DB: Un cop creat el compte, accedeix-hi des del portal d'Azure.
  2. Crea una base de dades:
    • Fes clic a "Bases de dades" i després a "Afegeix una base de dades".
    • Introdueix un nom per a la base de dades.
    • Configura el rendiment (manual o automàtic).
  3. Crea un contenidor:
    • Fes clic a "Contenidors" i després a "Afegeix un contenidor".
    • Introdueix un nom per al contenidor.
    • Defineix la clau de partició.

Models de consistència

Azure Cosmos DB ofereix cinc models de consistència per equilibrar el rendiment i la consistència de les dades:

  1. Forta: Garantia de consistència absoluta.
  2. Limitada: Lectures garantides fins a un nombre de versions.
  3. Sessió: Consistència per a una sessió de client.
  4. Prefixat: Lectures garantides en l'ordre escrit.
  5. Eventual: Consistència eventual sense garanties d'ordre.
Model de Consistència Descripció Latència Disponibilitat
Forta Consistència absoluta Alta Baixa
Limitada Lectures garantides fins a un nombre de versions Mitjana Mitjana
Sessió Consistència per a una sessió de client Baixa Alta
Prefixat Lectures garantides en l'ordre escrit Baixa Alta
Eventual Consistència eventual sense garanties d'ordre Molt baixa Molt alta

Exemples pràctics

Exemple 1: Crear un document en un contenidor

from azure.cosmos import exceptions, CosmosClient, PartitionKey

# Configuració del client
endpoint = "https://<your-account-name>.documents.azure.com:443/"
key = '<your-account-key>'
client = CosmosClient(endpoint, key)

# Accedir a la base de dades i al contenidor
database_name = 'ExampleDatabase'
database = client.create_database_if_not_exists(id=database_name)
container_name = 'ExampleContainer'
container = database.create_container_if_not_exists(
    id=container_name,
    partition_key=PartitionKey(path="/id"),
    offer_throughput=400
)

# Crear un document
document = {
    'id': '1',
    'name': 'John Doe',
    'age': 30,
    'city': 'Barcelona'
}

container.create_item(body=document)

Exemple 2: Llegir un document d'un contenidor

# Llegir un document
document_id = '1'
partition_key = '1'
response = container.read_item(item=document_id, partition_key=partition_key)
print(response)

Exercicis pràctics

Exercici 1: Crear i llegir documents

  1. Crea un document: Utilitza el codi de l'exemple 1 per crear un document amb les teves pròpies dades.
  2. Llegeix el document: Utilitza el codi de l'exemple 2 per llegir el document que has creat.

Solució

# Crear un document
document = {
    'id': '2',
    'name': 'Jane Doe',
    'age': 25,
    'city': 'Madrid'
}
container.create_item(body=document)

# Llegir el document
document_id = '2'
partition_key = '2'
response = container.read_item(item=document_id, partition_key=partition_key)
print(response)

Exercici 2: Actualitzar i eliminar documents

  1. Actualitza un document: Modifica el document creat anteriorment per canviar la ciutat.
  2. Elimina un document: Elimina el document creat.

Solució

# Actualitzar un document
document_id = '2'
partition_key = '2'
document = container.read_item(item=document_id, partition_key=partition_key)
document['city'] = 'Valencia'
container.replace_item(item=document_id, body=document)

# Eliminar un document
container.delete_item(item=document_id, partition_key=partition_key)

Conclusió

Azure Cosmos DB és una eina poderosa per gestionar bases de dades distribuïdes globalment amb latència baixa i alta disponibilitat. Amb la seva capacitat d'escalabilitat elàstica i suport multimodel, és ideal per a aplicacions modernes que necessiten gestionar grans volums de dades de manera eficient. En aquest tema, hem après a configurar un compte de Cosmos DB, crear bases de dades i contenidors, i treballar amb documents mitjançant exemples pràctics.

© Copyright 2024. Tots els drets reservats