Slide 1

Slide 1 text

Node.js Paris 12/05/2018

Slide 2

Slide 2 text

Premier Field Engineer @spontoreau In ❤️ with Co-organizer

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

https://azure.microsoft.com/en-us/services/cosmos-db/ https://azure.microsoft.com/en-us/blog/azure-cosmos-db-pushing-the-frontier-of-globally-distributed-databases/ @spontoreau Node.js Paris 12/05/2018

Slide 5

Slide 5 text

@spontoreau Node.js Paris 12/05/2018

Slide 6

Slide 6 text

https://azure.microsoft.com/en-us/blog/how-halo-5-guardians-implemented-social-gameplay-using-azure-documentdb/ @spontoreau Node.js Paris 12/05/2018

Slide 7

Slide 7 text

@spontoreau Node.js Paris 12/05/2018

Slide 8

Slide 8 text

@spontoreau Node.js Paris 12/05/2018

Slide 9

Slide 9 text

A distributed system can only guarantee 2 constrains at the same time, not 3!

Slide 10

Slide 10 text

@spontoreau Node.js Paris 12/05/2018

Slide 11

Slide 11 text

@spontoreau Node.js Paris 12/05/2018

Slide 12

Slide 12 text

@spontoreau Node.js Paris 12/05/2018 Azure Cosmos DB Account Databases Collections Documents

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

@spontoreau Node.js Paris 12/05/2018

Slide 15

Slide 15 text

https://github.com/Azure/azure-cosmos-js https://docs.microsoft.com/en-us/javascript/api/@azure/cosmos @spontoreau Node.js Paris 12/05/2018 $ npm install @azure/cosmos

Slide 16

Slide 16 text

const { database} = await client .databases .create({ id: databaseId }); const { container } = await database .container .create({ id: containerId }); @spontoreau Node.js Paris 12/05/2018 const client = new CosmosClient({ endpoint: myEndpoint, auth: { masterKey: myKey } });

Slide 17

Slide 17 text

@spontoreau Node.js Paris 12/05/2018 const querySpec: SqlQuerySpec = { query: "SELECT root.firstName root.lastName FROM root WHERE root.email = @email", parameters: [{ name: "@email", value: "[email protected]" }] }; const { result } = await container .items .query(querySpec) .toArray(); const item = await container .item(id); const { body: readDoc } = item.read();

Slide 18

Slide 18 text

@spontoreau Node.js Paris 12/05/2018 const person = { firstName: "Sylvain", lastName: "PONTOREAU", email: "[email protected]" }; const { body } = await container .items .create(person); if(body !== undefined) { console.log(body.id); } const item = await container .item(body.id); const { body: readDoc } = item.read(); readDoc.email = "sylvain @microsoft.com"; await item.replace(readDoc); await item.delete();

Slide 19

Slide 19 text

@spontoreau Node.js Paris 12/05/2018 function hello(firstName, lastName) { return `Hello ${firstName} ${lastName}`; } SELECT udf.hello(root.firstName, root.lastName) as helloFullName FROM root

Slide 20

Slide 20 text

@spontoreau Node.js Paris 12/05/2018 { "bindings": [ { "type": "cosmosDBTrigger", "name": "input", "direction": "in", "leaseCollectionName": "leases", "connectionStringSetting": "myConnectionString", "databaseName": "myDatabase", "collectionName": "myCollection", "createLeaseCollectionIfNotExists": true } ] } module.exports = function (context, input) { const id = input[0].id; context.log(`Document Id ${ id }`); context.done(); };

Slide 21

Slide 21 text

@spontoreau Node.js Paris 12/05/2018

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content