Upgrade to Pro — share decks privately, control downloads, hide ads and more …

aMS Lausanne - Préparez-vous à une virée inters...

Sylvain PONTOREAU
April 05, 2024
15

aMS Lausanne - Préparez-vous à une virée intersidérale avec Azure Cosmos DB 🧑‍🚀

Azure Cosmos DB est une base de données multi-modèle, multi-API et multi-région conçue pour répondre aux exigences des applications cloud.

Dans cette présentation, je vous propose de faire un tour d'horizon des capacités de Cosmos ainsi qu'un exemple de mise en œuvre !

Après cette présentation vous pourrez propulser votre app vers l'infini de l'au delà 🚀

Sylvain PONTOREAU

April 05, 2024
Tweet

Transcript

  1. 1 aMS Lausanne 5/04/2024 Préparez-vous à une virée intersidérale avec

    Azure Cosmos DB 󰳙 Sylvain Pontoreau Your photo
  2. ❓ CosmosDB c’est quoi ? Base de données Cloud Multi-modèle

    Globalement distribué Haute disponibilité SDK AI
  3. • ⛽ Provisionnement : ◦ Request Unit ◦ Serverless •

    󰳘 Debug local = Emulator : ◦ Application Windows ◦ Docker Image (Windows & Linux) ☁ Base de données Cloud • 🙅 On-premises
  4. ⚙ Provisionnement - Request Unit • Assignation des RUs :

    ◦ Par base de données ◦ Par container • Dimensionnement automatique • Comment choisir entre RUs et Serverless : https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-choose-offer
  5. 🎛 Consistence Strong Bounded staleness Session Consistent Prefix Eventual High

    availability Low consistency Data consistency: Write synchronously committed Writes propagation: Relatively freshness Monotonic: Read your own writes Low latency: Weakest form of consistency Never out of order: Order guarantees
  6. 󰳕 SDK - Exemple en TypeScript const endpoint = "https://your-account.documents.azure.com";

    const key = "<database account masterkey>"; const client = new CosmosClient({ endpoint, key }); const container = client.database("EventStore").container("EventStream"); await container.items.create({ streamId: "<stream identifier>", createdAt: "<event creation date (ISO 8601)", type: "<event type>", version: <stream version>, payload: { //… } }); • 🖊 Écriture
  7. 󰳕 SDK - Exemple en TypeScript const endpoint = "https://your-account.documents.azure.com";

    const key = "<database account masterkey>"; const client = new CosmosClient({ endpoint, key }); const container = client.database("EventStore").container("EventStream"); const querySpec: SqlQuerySpec = { query: `SELECT eventStream.eventType, eventStream.payload, eventStream.version, FROM eventStream WHERE eventStream.streamId = @streamId ORDER BY eventStream.createdAt, eventStream.version`, parameters: [{ name: "@streamId", value: "a stream id" }] ] }; const { resources } = await container.items.query(querySpec).fetchAll(); • 📖 Lecture