Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod?...

24

Transcript of Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod?...

Page 1: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)
Page 2: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Rein relationale DB in Prod?

Datenbanken in produktiven Einsatz?1

SQL + NoSQL DB in Prod?

(MongoDB, Redis, CouchDB, Cassandra)2

DB-Cluster in der Cloud?3

Page 3: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

NoSQL?!?

Come as you are

SQL Normalformen

Page 4: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Warum wurde DocumentDB entwickelt

Interne Nutzung und ihre Anforderungen

• Schritt halten mit dem atemberaubenden Datenzuwachs

und den wachsenden Verarbeitungsanforderungen

• Iterative Entwicklung machte Schema-Migration

kompliziert durch parallel bestehende und ständig

fortschreitende Datenmodelle

• Unsere Anwendungen wurden unnötig komplex, weil

den existierenden Dokumenten-DBs transaktional sichere

Verarbeitungs- und Abfrage-Fähigkeiten fehlten

Page 5: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

DocumentDB innerhalb von Microsoft

Global verfügbar für alle Märkte

über 425 Millionen unique Users

speichert 20TB Daten JSON Dokumente

Speicher für 40+ App/Device Kombinationen

unter 15ms Writes und einstellige ms für Reads

user data store

msn

Page 6: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

{"id": "AzureDocumentDB","servicetype": "Data Platform","servicename": "Azure DocumentDB","releasetype": "Preview","public": true,"regions": [

{"name": "North Europe","visible": true,"capacity": 230034

},{

"name": "West US","visible": true,"capacity": 800034

},{

"name": "East US","visible": false,"capacity": 1000034

}]

}

{"id": "employee:chgeuer","name": "Christian Geuer-Pollmann","jobrole": "Technology Evangelist","companyname": "Microsoft","photo": null,"bio": "Helps ISVs rocking on Azure","topics": [

"Cloud","Security","Development"

]}

Designed / entwickelt / optimiert – für JSON

Page 7: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Client SDKs

• .NET

• Python

• Node.js

• JavaScript

REST API

• Stored Data

• Indexes

Store and retrieve JSON

JavaScript is the „new T-SQL“

• Stored Procedures

• Triggers

• User-Defined Functions

Store JavaScript functions

Query via SQL

Retrieve JSON

SSD

Page 8: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

DocumentDB

Account

/

Users

/dbs/{id}/users/{id}

Permissions

…/permissions/{id}

DocumentDocument

DocumentDocumentDocument

../colls/{id}/docs/{id}

DatabaseDatabase

Database

/dbs/{id}

AttachmentAttachment

AttachmentAttachment

../attachments/{id}

Subscription

DocumentDB Resource Model

SPROCStored

Procs

Triggers

UDFUDF

../colls/{id}/sprocs/{id}

../colls/{id}/triggers/{id}

../colls/{id}/udfs/{id}

CollectionCollectionCollection

/dbs/{id}/colls/{id}

Page 9: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Schema-frei und trotzdem frei abfragbar

SQL

Page 10: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Abfragen auf Schema-losen Daten

Page 11: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

• Indexing Policy• Automatic

• Manual

• Indexing Mode• Consistent (synchron)

• Lazy (asynchron)

• Dokumente: Einzelne

Dokumente einschließen

oder ausschließen

• JSON Pfade:• includedPaths

• excludedPaths

Automatische Indizierung

Page 12: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Multi-Document Transaktionen

Collection

• Stored Procs

• Triggers

• UDF

DocumentDocumentDocuments

Database

Page 13: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Schnell und frei wählbare Konsistenz

Page 14: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Tunable Consistency Levels

Eventual: read operations always read a valid subset of writes and will eventually converge

Session: monotonic reads (you never read old data, then new, then old again), monotonic writes (writes are ordered) and that you read the most recent writes within any single client’s viewpoint.

Strong: read operations always return the value that was last written.

Bounded Staleness: reads are not “too out-of-date”. It specifically guarantees that the reads are no more than K versions older than the last written version.

Page 15: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Skalierbar und komplett gemanagt

Page 16: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

DocumentDB

Account

/

Users

/dbs/{id}/users/{id}

Permissions

…/permissions/{id}

DocumentDocument

DocumentDocumentDocument

../colls/{id}/docs/{id}

DatabaseDatabase

Database

/dbs/{id}

AttachmentAttachment

AttachmentAttachment

../attachments/{id}

Subscription

DocumentDB Resource Model

SPROCStored

Procs

Triggers

UDFUDF

../colls/{id}/sprocs/{id}

../colls/{id}/triggers/{id}

../colls/{id}/udfs/{id}

CollectionCollectionCollection

/dbs/{id}/colls/{id}

Page 17: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

DocumentDB

Account

/

Users

/dbs/{id}/users/{id}

Permissions

…/permissions/{id}

CollectionCollection

CollectionCollection

/dbs/{id}/colls/{id}

SPROCStored

Procs

Triggers

UDFUDF

../colls/{id}/sprocs/{id}

../colls/{id}/triggers/{id}

../colls/{id}/udfs/{id}DocumentDocument

DocumentDocumentDocument

../colls/{id}/docs/{id}

DatabaseDatabase

Database

/dbs/{id}

AttachmentAttachment

AttachmentAttachment

../attachments/{id}

Subscription

1..5 Capacity Units (CU)

Horizontales Skalieren über „Capacity Units“

Page 18: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

• Eine „Capacity Unit“ (CU)

entspricht einem Shard

(Storage & Compute)

• Eine Capacity Unit bietet

Speicherplatz für bis zu 10 GB für

Dokumente

• Eine „Request Unit“ (RU) ist eine

Größe für Rechenaufwand (stored

procs, indexing, queries, user-

defined functions)

• Eine ‚volle‘ Capacity Unit (mit 10GB

JSON Daten) bietet dem Nutzer

2000 „Request Units“ (RU) pro

Sekunde

• Die RU werden dem genutzten

Speicherplatz, entsprechend

bereitgestellt, mindestens 667 RU.

• Tatsächlich aufgetretene RU in

jedem Response aufgeführt

• Throttling!! (Alerts, x-ms-retry-

after-ms)

„Capacity Units“ und „Request Units“

Page 19: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)
Page 20: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)
Page 21: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Entworfen und entwickelt As-A-Service

Komplett Schema-frei (JSON), aber

trotzdem frei abfragbar

Transaktionale Verarbeitung durch

integrierten JavaScript-Support

Einstellbare Konsistenz und

vorhersagbare Performance

Was ist neu an DocumentDB

Page 22: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Neue Webanwendungen und mobile,

Cloud-basierte Apps

Schnelle Entwicklungszyklen und hohe

Anforderungen bzgl. Skalierung

Kunden, die Key/Value-Stores nutzen

und reichhaltigere Queries und

Verarbeitung brauchen

Kunden, die Dokumenten-DBs in

Virtuellen Maschinen (IaaS) betreiben

und einen gemanagten Service suchen

Scenarios für DocumentDB

Page 23: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

• Get started http://aka.ms/docbstart

• Learn query language http://aka.ms/docdbquery

• Download Open Source DocumentDB Studio

http://aka.ms/docdbstudio

Page 24: Reindownload.microsoft.com/download/3/3/1/3314E256-7BD... · Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? 1 SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)