Die letzten zehn Jahre haben uns gezeigt, dass der Datenbank zu hohe Priorität zugesprochen wurde. Die meisten Diskussionen drehten sich um das Datenmodell, statt um Geschäftsprozesse und Vorgänge. Kein Wunder, denn klassische SQL-Datenbanken erzwingen diese Vorgehensweise von uns. In dieser Session zeigt der MongoDB-Experte Gregor Biswanger eine zeitgemäße Alternative mit NoSQL und wie durch ein Umdenken auch ein Booster in unsere Architektur einfließt bezüglich Produktivität, Flexibilität und Performance.
Fachmodell-First: Einstieg in das NoSQL-Schema-Design
1. Fachmodell-First
Einstieg in das NoSQL-Schema-Design
Gregor Biswanger | Freier Berater, Trainer, Autor und Sprecher
about.me/gregor.biswanger
2. Über mich
▪ Freier Berater, Trainer und Autor
▪ Schwerpunkte: Softwarearchitektur, Web und
Cross-Plattform Entwicklung mit JavaScript
▪ Technologieberater für die Intel Developer Zone
▪ Internationaler Sprecher auf Konferenzen und
User Groups
▪ Freier Autor für heise.de, dotnetpro,
WindowsDeveloper und viele weitere
Fachmagazine
▪ Video-Trainer bei video2brain und Microsoft
Gregor Biswanger
Microsoft MVP, Intel Black Belt &
Intel Software Innovator
cross-platform-blog.de
about.me/gregor.biswanger
4. Durch NoSQL erhalten wir ein Booster in unsere
Architektur bezüglich Produktivität,
Flexibilität und Performance.
5. Unser Reiseplan
▪ Was ist schlecht an relationalen
Datenbanken
▪ Einführung in NoSQL
▪ Dokumentenorientierte Datenbank
▪ Dokumentenorientiert modellieren
▪ Gemeinsam ein Beispiel modellieren
▪ Domain-Driven Design und
das Fachmodell
▪ Fazit
9. Der Datenbank wird zu hohe Priorität zugesprochen und
die meisten Diskussionen drehen sich um die Datenbank
und das Datenmodell statt um Geschäftsprozesse und -
vorgänge.
43. Eingebettete Datenmodelle verwenden, wenn:
▪ Bei One-to-One-Beziehungen zwischen Entitäten.
▪ Bei One-to-Many-Beziehungen zwischen Entitäten.
▪ In diesen Beziehungen werden die "vielen" oder untergeordneten
Dokumente immer zusammen mit dem "ein" oder den
übergeordneten Dokumenten angezeigt.
44. Referenzierte Datenmodelle verwenden, wenn:
▪ Ein Einbetten würde zu einer Duplizierung von Daten führen, würde
jedoch keine ausreichenden Leseleistungsvorteile bieten, um die
Auswirkungen der Duplizierung zu überwiegen.
▪ Komplexere Many-to-Many-Beziehungen.
▪ Große hierarchische Datensätze.
54. Weniger als 100 Mehr als 100 Tausend
X
Wie groß ist der Datensatz?
Immer Manchmal Selten
Wie oft werden die Daten zusammen benutzt?
Nie / Selten Gelegentlich Konstant
X
Wie oft ändern sich die Daten?
Analyse vom Datentyp: Rezept
55. Vergleich mit dem Dokumenten-Schema Kompass
Immer Manchmal Selten
Integriert x x x
Referenziert x x
Wie oft werden die Daten zusammen benutzt?
Weniger als 100 Mehr als 100 Tausend
Integriert x x
Referenziert x x
Wie groß ist der Datensatz?
Nie / Selten Gelegentlich Konstant
Integriert x x
Referenziert x x
Wie oft ändern sich die Daten?
57. Weniger als 100 Mehr als 100 Tausend
X
Wie groß ist der Datensatz?
Immer Manchmal Selten
X
Wie oft werden die Daten zusammen benutzt?
Nie / Selten Gelegentlich Konstant
X
Wie oft ändern sich die Daten?
Analyse vom Datentyp: Tag
58. Vergleich mit dem Dokumenten-Schema Kompass
Immer Manchmal Selten
Integriert x x x
Referenziert x x
Wie oft werden die Daten zusammen benutzt?
Weniger als 100 Mehr als 100 Tausend
Integriert x x
Referenziert x x
Wie groß ist der Datensatz?
Nie / Selten Gelegentlich Konstant
Integriert x x
Referenziert x x
Wie oft ändern sich die Daten?
60. Weniger als 100 Mehr als 100 Tausend
X
Wie groß ist der Datensatz?
Immer Manchmal Selten
X
Wie oft werden die Daten zusammen benutzt?
Nie / Selten Gelegentlich Konstant
X
Wie oft ändern sich die Daten?
Analyse vom Datentyp: Zutat
61. Vergleich mit dem Dokumenten-Schema Kompass
Immer Manchmal Selten
Integriert x x x
Referenziert x x
Wie oft werden die Daten zusammen benutzt?
Weniger als 100 Mehr als 100 Tausend
Integriert x x
Referenziert x x
Wie groß ist der Datensatz?
Nie / Selten Gelegentlich Konstant
Integriert x x
Referenziert x x
Wie oft ändern sich die Daten?
63. Weniger als 100 Mehr als 100 Tausend
X
Wie groß ist der Datensatz?
Immer Manchmal Selten
X
Wie oft werden die Daten zusammen benutzt?
Nie / Selten Gelegentlich Konstant
X
Wie oft ändern sich die Daten?
Analyse vom Datentyp: Quelle
64. Vergleich mit dem Dokumenten-Schema Kompass
Immer Manchmal Selten
Integriert x x x
Referenziert x x
Wie oft werden die Daten zusammen benutzt?
Weniger als 100 Mehr als 100 Tausend
Integriert x x
Referenziert x x
Wie groß ist der Datensatz?
Nie / Selten Gelegentlich Konstant
Integriert x x
Referenziert x x
Wie oft ändern sich die Daten?
72. Referenzierte Dokumente abfragen mit dem integrierten
Aggregation-Framework und der $lookup-Funktion
Dokumentation und Beispiel unter:
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
84. Fachmodell / Domain Model
▪ Um also ein einheitliches Verständnis zwischen diesen
Gruppen (Domänenexperte und Entwickler) zu schaffen,
wird ein Modell der Domäne etabliert
▪ Ein Model ist eine auf bestimmte Zwecke ausgerichtete
vereinfachende Beschreibung der Wirklichkeit
85. Anemic domain model
▪ Unter DDD ein Anti-Pattern
▪ Trennt Datenstruktur und Funktionen
▪ Kein „richtiges“ objektorientiertes programmieren
▪ Braucht eigene Business-Logic-Schicht
▪ Macht ein Domain Model schwerer zu verstehen
86. Die Onion Architecture
Domain Model
(Core)
User Interface
(ASP.NET MVC, WPF etc.)
Tests
(BDD)
Services
Infrastructure
Application Services
Domain Services