SlideShare a Scribd company logo
1 of 42
Download to read offline
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 1
Domain Driven Design
and NoSQL
Interactive Cologne
2014-04-25
martin Schönert (triAGENS)
TRI-MS-1405-003-V100-20140525
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 2
martin
 Mathematik studiert und
algebraische Strukturen mit
dem Computer untersucht
 seither in vielen Rollen in IT
 Programmierer
 Projektleiter
 Produktverantwortlicher
 etc.
 inzwischen vor allem Architekt
 beratend für andere Unternehmen
 für die ArangoDB Datenbank
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 3
Project
YAWS
(Yet Another Web Shop)
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 4
Willkommen zum Spezifikationsworkshop
 Produktmanager
erzählen was sie von
dem Shop erwarten
 Fähigkeit im Katalog zu
browser
 leistungsfähige Suche
 gute Produkte weit oben
 eher informell
 alle Beteiligten sind
guter Dinge
 keine Kontroversen
The Expert, 2014, Lauris Beinerts
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 5
und also entwickeln die Entwickler
 Objekt Orientiert
 3-tier Architektur
 Model View Controller
 Modernes Framework
 Responsive Design
 etc.
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 6
doch bei der Fertigstellung
Aber natürlich soll
das Ranking bei
der Suche auch
auf der Marge
basieren!
Wieso gibt es keine
Empfehlungen?
Der Checkout ist
so unbenutzbar!
Aber das ist doch
offensichtlich!
Die Entwickler sind
total unfähig!
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 7
was die Entwickler von der Fachseite halten
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 8
tatsächlich handelt es sich aber um ein
systemisches Problem
 Funktionalität wird nicht
methodisch erfasst
 „offensichtliche“ Funktionen
fehlen
 keine gemeinsame Sprache
 Missverständnisse über die
Funktionen
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 9
Agile Entwicklung hilft u.a.
Funktionalität methodisch zu erfassen
 Kontinuierliche Interaktion
 Product Backlog
 Stories / Epics
 etc.
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 10
Domain
Driven
Design
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 11
wurde von Eric Evans beschrieben
 Herangehensweise zur
Modellierung komplexer
businessorientierter Software
 stellt die Fachlichkeit in den
Mittelpunkt
 dazu wird die Anwendungs-
domäne modelliert (daher
Domain Driven Design)
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 12
Ubiquitäre Sprache
 einheitliche Sprache
 wird von allen Beteiligten
verwendet
 wird für alle Aspekte
verwendet
 muss auf der Fachlichkeit
basieren
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 13
Entitäten
 Haben eine Identität
 zwei Entitäten sind selbst
dann verschieden wenn sie in
allen Attributen gleich sind
 Beispiele
 Personen
 Einkaufskorb
 Mutabilität
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 14
Wertobjekte
 haben keine eigenständige
Identität
 sind nur über ihre Attribute
definiert
 können beliebig kopiert
werden
 Beispiele:
 Produktbeschreibung
 Unveränderbar (fachlich)
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 15
Aggregate
 Zusammenfassungen von
Entitäten und Wertobjekten zu
einer transaktionellen Einheit
 eine Entität bildet den Zugriff
zu dem Aggregat
 durch kontrollierten Zugriff
werden Invarianten bewahrt
Session
session-id
last-access
User
name
pw-hash
e-mail
Shopping-Cart
Ubiq
P.K. Dick
Brazil
T. Gilliam
Rain Dogs
T. Waits
Aggregate
Wishlist
Little, Big 25
J. Crowley
In Bruges
M.McDonagh
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 16
Assoziationen
 Beziehungen zwischen
Entitäten oder Wertobjekten
 können ebenfalls
Eigenschaften haben
 sind typischerweise
unveränderlich
knows
knows
works-for
knows
send-request
invited
works-for
shares-flat
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 17
Fabriken
 Erzeugen komplexe Entitäten,
Wertobjekte und insbesondere
Aggregate
 korrespondieren zu den
entsprechenden Patterns
 Fabrik
 Erbauer
 Prototype
 Beispiel:
 Erzeugung eines Aggregats für
einen neuen Benutzers mit
(leeren) Einkaufswagen und
Wunschliste
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 18
Repository
 Speichern von Entitäten und
Aggregaten
 Persistenz
 modelliert die entsprechende
Schicht in einer 3-Schichten
Architektur
 Methoden zur Suche
 Beispiel:
 Produktkatalog
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 19
Relationale
Datenbanken
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 20
in relationalen Datenbanken
gibt es (ganz besondere) Relationen
keine Relation Relation
Foreign Key
relationale
Algebra
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 21
gibt es Normalformen
 Marc Rettig
 Rules of Data Normalization
 orig. published 1989
 (und immer noch nützlich)
 (es ist nicht ganz klar wie viele
Normalformen es gibt: 1NF,
2NF, 3NF, BCNF, 4NF, 5NF,
EKNF, DKNF, 6NF, ...)
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 22
was Normalform u.a. bedeutet
 unsere schönen Objekte werden
in viele kleine Teile zerlegt und auf viele Tabellen verteilt
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 23
und also gibt es Joins
 Anleitungen (Joins) um die
Objekte beim Lesen wieder
zusammen zu setzen
 (Ja - es gibt auch noch aus
anderen Gründen Joins)
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 24
und also gibt es Transaktionen
 Vorfahrtsregeln (Transactions)
damit beim Zusammensetzen
keine Teile der Objekte
verloren gehen
 (Ja – es gibt auch noch aus
anderen Gründen
Transaktionen)
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 25
kurz: Datenbankentwickler
sprechen eine eigene ganz Sprache
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 26
NoSQL
Datenbanken
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 27
Inzwischen gibt es andere nicht-relationale
Datenbanken: NoSQL
 Bedingungen für DBs haben
sich geändert:
 Funktionelle Anforderungen
 viele einfache Operationen
 Nicht funktionelle Anf.
 Volume
 Variety
 Velocity
 Hardware
 RAM is cheap
 SSDs
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 28
NoSQL Datenbanken werden häufig in vier
Klassen (Models) eingeteilt:
Key-Value Stores Document Databases
Extended Column Stores Graph Databases
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 29
Daneben gibt es inzwischen einige sogenannte
Multi-Model Datenbanken
Multi-Model Databases
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 30
Key-Value Stores sind die einfachste Datenbank
Key ValueKey Value
Key Value2 { name: „paavo“ }
Key Value3 { first: „emil“ }
Key Value„runners“ { ids: [ 1, 2, 3, 5 ] }
Key Value5 { name:„haile“,act:1 }
Key Value1 { first: „paul“ }
Key Value„last“ 5
 Bilden Schlüssel auf Werte ab
(wie dict)
 Zugriff geht nur über den
Schlüssel
 Werte sind (für den KV-Store)
unstrukturiert
 häufig keine Möglichkeit über die
Paare zu laufen
 falls doch ist keine Reihenfolge
definiert
 z.B. Einkaufswage
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 31
Dokumentendatenbanken
 Dokumente sind Mengen von
Attribut/Werte Paaren
 Strukturierte Attribute
 Listen, Teilobjekte
 Collections
 Sammlungen von Dokumenten
 Externe Repräsentation meist in JSON
 Manchmal interne Speicherung
ebenfalls in JSON / BSON
 z.B. Produktkatalog
{
FirstName:"Jonathan",
Address:"15 Wanamassa Road",
Children:[
{Name:"Michael",Age:10},
{Name:"Jennifer", Age:8},
{Name:"Samantha", Age:5},
{Name:"Elena", Age:2}
],
Job: “Tennis Trainer“
}
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 32
Graphendatenbanken
 Knoten (Vertices)
 meistens Objekte (wie in
Dokumentendatenbanken)
 Kanten (Edges)
 verbinden zwei Objekte
 gerichtet (von → nach)
 mit Typ („knows“, „likes“)
 weiterer Information
 z.B. Beziehungen zwischen Produkten
 [Nachfolger-von], [Zubehör-für], ..
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 33
Korrespondenz
zwischen
Domain Driven Design
und
NoSQL Datenbanken
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 34
Entitäten
 Entität
 Identität
 komplexe Struktur
 Unterschiedlichkeit
 Dokument
 jedes Dokument hat eine
eigene Identität
 ID oder Key Attribut
 strukturierte Attribute
 Schemafreiheit
 kein EAV nötig
DDD Dokumentendatenbank
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 35
Wertobjekte
 Wertobjekt
 Unveränderbarkeit
 Dokument
 oder
 Subobjekt in einem anderem
Dokument (Entität oder WO)
 muss programmatisch
sichergestellt werden
DDD Dokumentendatenbank
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 36
Aggregate
 Aggregat
 Zentraler Zugriff
 Dokument mit direktem
Verweis auf andere
Dokumente
 muss programmatisch
sichergestellt werden
DDD Dokumentendatenbank
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 37
Assoziationen
 Assoziation
 Typ der Assoziation
 weitere Eigenschaften
 Zugriffsmethoden an Hand der
Assoziationen
 z.B. Empfehlungen
 Kante zwischen zwei
Dokumenten
 Typattribut der Kante
 weitere Attribute
 Graphalgorithmen in der
Datenbank
 z.B. zur Pfadsuche
DDD Graphendatenbank
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 38
Repositories
 Repository
 Suchen in Repositories
 Collection
 Queries
 mit entsprechenden Indizes
DDD NoSQL Datenbanken
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 39
Fazit
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 40
DDD und Multi-Model-NoSQL-DBs gehören
zusammen
 Für den Erfolg von Softwareprojekten ist u.a. eine gemeinsame
Sprache die von allen Beteiligten durchgängig benutzt wird wichtig
 Domain Driven Design ist eine Herangehensweise die eine solche
fordert und fördert
 Entwicklung mit relationalen DBs erfordert eine ganz eigene
Sprache (und Denkweise)
 Nicht-relationale/NoSQL DBs sind moderne DBs die besser zu den
geänderten Bedingungen moderner Softwareentwicklung passen
 Zwischen der einheitlichen Sprache von Domain Driven Design und
den Konzepten von NoSQL DBs existiert eine direkt Korrespondenz
 Eine vollständige Korrespondenz ist nur mit Multi-Model-DBs
gegeben die Dokumenten- und Graphendatenbanken vereinigen
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 41
triAGENS
Die triAGENS GmbH ist ein Dienstleister im
Bereich komplexer Informationssysteme und
webbasierter Business-Lösungen, mit hohen
Anforderungen an Performance, Skalierbarkeit
und Sicherheit.
triAGENS entwickelt High-Performance-
Datenbanken auf Basis optimierter
NoSQL-Datenbanktechnologien, die u.a. bei
der Deutschen Post zum Einsatz kommen.
The triAGENS GmbH is a service company in
the area of complex IT Systems and web based
business solutions with high requirements on
performance, scalability and security.
triAGENS supplies high performance databases
based on NoSQL database technology, which
are utilized for example by Deutsche Post.
martin Schönert
Geschäftsführer / executive director
m.schoenert@triagens.de
+49 170 8602158
triAGENS GmbH
Hohenstaufenalle 43-45
50674 Köln
www.triagens.de
Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 42
Kontext Projekt oder Bereich
Titel Domain Driven Design und NoSQL
Ablage 70_Praesentationen
ID TRI-MS-1405-003
Verantwortlich martin Schönert / triagens
Leser öffentlich
Sicherheitsein. öffentlich
SchlüsselworteSoftwareentwicklung DDD Evans NoSQL Multi-Model
Schritt Bearbeiter geplant bis Fertigstellung Kommentar
Finale Version m.Schönert 2014-05-24 2014-05-24
Version Datum Bearbeiter Kommentar
V1.00 2014-05-24 m.Schönert Finale Version
Folie Kommentar
- -
Dokumentinformationen
Metainformationen Historie
Bearbeitungsschritte Todos

More Related Content

Viewers also liked

Webinar: Responsive Design
Webinar: Responsive DesignWebinar: Responsive Design
Webinar: Responsive Designkuehlhaus AG
 
Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)Lars-Erik Kindblad
 
Avoid code duplication! Principles & Patterns
Avoid code duplication! Principles & PatternsAvoid code duplication! Principles & Patterns
Avoid code duplication! Principles & PatternsLars-Erik Kindblad
 
Introduction to FluentData - The Micro ORM
Introduction to FluentData - The Micro ORMIntroduction to FluentData - The Micro ORM
Introduction to FluentData - The Micro ORMLars-Erik Kindblad
 
Application Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, CapgeminiApplication Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, CapgeminiLars-Erik Kindblad
 
Dependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best PracticeDependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best PracticeLars-Erik Kindblad
 
How to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systemsHow to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systemsLars-Erik Kindblad
 
Application Architecture April 2014
Application Architecture April 2014Application Architecture April 2014
Application Architecture April 2014Lars-Erik Kindblad
 
Datenschutz in der Praxis
Datenschutz in der PraxisDatenschutz in der Praxis
Datenschutz in der PraxisDerChb
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenChristian Baranowski
 
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionierenMobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionierenMarkus Greve
 
The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility PrincipleLars-Erik Kindblad
 
Publish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorPublish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorLars-Erik Kindblad
 
Inversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best PracticeInversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best PracticeLars-Erik Kindblad
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8chmoser79
 
Domain-driven design - eine Einführung
Domain-driven design - eine EinführungDomain-driven design - eine Einführung
Domain-driven design - eine Einführungdie.agilen GmbH
 
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User ExperienceSwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User ExperienceNetcetera
 

Viewers also liked (20)

Webinar: Responsive Design
Webinar: Responsive DesignWebinar: Responsive Design
Webinar: Responsive Design
 
Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)
 
Avoid code duplication! Principles & Patterns
Avoid code duplication! Principles & PatternsAvoid code duplication! Principles & Patterns
Avoid code duplication! Principles & Patterns
 
Introduction to FluentData - The Micro ORM
Introduction to FluentData - The Micro ORMIntroduction to FluentData - The Micro ORM
Introduction to FluentData - The Micro ORM
 
Application Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, CapgeminiApplication Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, Capgemini
 
Dependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best PracticeDependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best Practice
 
Systementwurf mit UML
Systementwurf mit UMLSystementwurf mit UML
Systementwurf mit UML
 
The Fluent Interface Pattern
The Fluent Interface PatternThe Fluent Interface Pattern
The Fluent Interface Pattern
 
How to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systemsHow to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systems
 
Application Architecture April 2014
Application Architecture April 2014Application Architecture April 2014
Application Architecture April 2014
 
Datenschutz in der Praxis
Datenschutz in der PraxisDatenschutz in der Praxis
Datenschutz in der Praxis
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML Grundlagen
 
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionierenMobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
 
The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
 
Publish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorPublish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event Aggregator
 
Inversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best PracticeInversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best Practice
 
Data Access - Best Practice
Data Access - Best PracticeData Access - Best Practice
Data Access - Best Practice
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8
 
Domain-driven design - eine Einführung
Domain-driven design - eine EinführungDomain-driven design - eine Einführung
Domain-driven design - eine Einführung
 
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User ExperienceSwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
 

Similar to Domain Driven Design und Nosql

05 Mehrschichtenarchitekturen und Enterprise Java Beans
05 Mehrschichtenarchitekturen und Enterprise Java Beans05 Mehrschichtenarchitekturen und Enterprise Java Beans
05 Mehrschichtenarchitekturen und Enterprise Java Beansklickandbau
 
Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...
Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...
Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...Dr. Daniel Stoller-Schai
 
Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018
Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018
Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018bhoeck
 
IBM Connections im Business Einsatz - Webinar 2 der IBM Connections Webinarreihe
IBM Connections im Business Einsatz - Webinar 2 der IBM Connections WebinarreiheIBM Connections im Business Einsatz - Webinar 2 der IBM Connections Webinarreihe
IBM Connections im Business Einsatz - Webinar 2 der IBM Connections WebinarreiheBeck et al. GmbH
 
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
Infrastruktur agil bauen - der DBA im SAFe-UmfeldInfrastruktur agil bauen - der DBA im SAFe-Umfeld
Infrastruktur agil bauen - der DBA im SAFe-UmfeldDaniel Steiger
 
Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...
Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...
Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...Nico Meisenzahl
 
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIAutomatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIOPITZ CONSULTING Deutschland
 
Authoring Management
Authoring ManagementAuthoring Management
Authoring Managementvzimmermann
 
Prevolution auf der CEBIT 2018: Integriertes Service- und Informationsmanagement
Prevolution auf der CEBIT 2018: Integriertes Service- und InformationsmanagementPrevolution auf der CEBIT 2018: Integriertes Service- und Informationsmanagement
Prevolution auf der CEBIT 2018: Integriertes Service- und Informationsmanagementbhoeck
 
Lean Development / Standardisierte Software-Entwicklung
Lean Development / Standardisierte Software-EntwicklungLean Development / Standardisierte Software-Entwicklung
Lean Development / Standardisierte Software-EntwicklungSuperB2
 
DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...
DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...
DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...Schlomo Schapiro
 
Automatische Klassifizierung macht SharePoint-Inhalte transparent
Automatische Klassifizierung macht SharePoint-Inhalte transparentAutomatische Klassifizierung macht SharePoint-Inhalte transparent
Automatische Klassifizierung macht SharePoint-Inhalte transparentbhoeck
 
Webinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generieren
Webinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generierenWebinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generieren
Webinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generierenKathrin Schmidt
 
Keynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdf
Keynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdfKeynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdf
Keynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdfChristoph Meier
 
Die generierte Zeitmaschine - Historisierung auf Knopfdruck
Die generierte Zeitmaschine - Historisierung auf KnopfdruckDie generierte Zeitmaschine - Historisierung auf Knopfdruck
Die generierte Zeitmaschine - Historisierung auf KnopfdruckTrivadis
 
DWH-Modellierung mit Data Vault
DWH-Modellierung mit Data VaultDWH-Modellierung mit Data Vault
DWH-Modellierung mit Data VaultTrivadis
 

Similar to Domain Driven Design und Nosql (20)

05 Mehrschichtenarchitekturen und Enterprise Java Beans
05 Mehrschichtenarchitekturen und Enterprise Java Beans05 Mehrschichtenarchitekturen und Enterprise Java Beans
05 Mehrschichtenarchitekturen und Enterprise Java Beans
 
Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...
Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...
Das "LerNetz Lern-Haus": Austrian eLearning Conference 2013 (AeLC) / Dr. Dani...
 
Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018
Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018
Prevolution mit Kundenbeispielen auf der Cherwell DACH Conference 2018
 
IBM Connections im Business Einsatz - Webinar 2 der IBM Connections Webinarreihe
IBM Connections im Business Einsatz - Webinar 2 der IBM Connections WebinarreiheIBM Connections im Business Einsatz - Webinar 2 der IBM Connections Webinarreihe
IBM Connections im Business Einsatz - Webinar 2 der IBM Connections Webinarreihe
 
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
Infrastruktur agil bauen - der DBA im SAFe-UmfeldInfrastruktur agil bauen - der DBA im SAFe-Umfeld
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
 
Agile BI in der Praxis - DevOps4BI
Agile BI in der Praxis - DevOps4BIAgile BI in der Praxis - DevOps4BI
Agile BI in der Praxis - DevOps4BI
 
Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...
Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...
Agile, DevOps, Continuous Delivery: Was ist das und wie betrifft es mich als ...
 
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIAutomatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
 
Authoring Management
Authoring ManagementAuthoring Management
Authoring Management
 
2010 09 30 11-00 r schoch
2010 09 30 11-00 r schoch2010 09 30 11-00 r schoch
2010 09 30 11-00 r schoch
 
Prevolution auf der CEBIT 2018: Integriertes Service- und Informationsmanagement
Prevolution auf der CEBIT 2018: Integriertes Service- und InformationsmanagementPrevolution auf der CEBIT 2018: Integriertes Service- und Informationsmanagement
Prevolution auf der CEBIT 2018: Integriertes Service- und Informationsmanagement
 
Lean Development / Standardisierte Software-Entwicklung
Lean Development / Standardisierte Software-EntwicklungLean Development / Standardisierte Software-Entwicklung
Lean Development / Standardisierte Software-Entwicklung
 
DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...
DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...
DevOps + Continuous Delivery + Cloud: The Three Drivers of Enterprise Agility...
 
Automatische Klassifizierung macht SharePoint-Inhalte transparent
Automatische Klassifizierung macht SharePoint-Inhalte transparentAutomatische Klassifizierung macht SharePoint-Inhalte transparent
Automatische Klassifizierung macht SharePoint-Inhalte transparent
 
Webinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generieren
Webinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generierenWebinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generieren
Webinar CPQ: Angebotsprozesse automatisieren, mehr Umsatz generieren
 
2010 09 30 11-30 thomas marx
2010 09 30 11-30 thomas marx2010 09 30 11-30 thomas marx
2010 09 30 11-30 thomas marx
 
Keynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdf
Keynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdfKeynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdf
Keynote Fachforum Personal 2018-10-30 Vs fuer scil-aktuell.pdf
 
Die generierte Zeitmaschine - Historisierung auf Knopfdruck
Die generierte Zeitmaschine - Historisierung auf KnopfdruckDie generierte Zeitmaschine - Historisierung auf Knopfdruck
Die generierte Zeitmaschine - Historisierung auf Knopfdruck
 
DWH-Modellierung mit Data Vault
DWH-Modellierung mit Data VaultDWH-Modellierung mit Data Vault
DWH-Modellierung mit Data Vault
 
Uhlberg Advisory
Uhlberg Advisory Uhlberg Advisory
Uhlberg Advisory
 

More from ArangoDB Database

ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022ArangoDB Database
 
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at ScaleArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at ScaleArangoDB Database
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBArangoDB Database
 
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale ArangoDB Database
 
Graph Analytics with ArangoDB
Graph Analytics with ArangoDBGraph Analytics with ArangoDB
Graph Analytics with ArangoDBArangoDB Database
 
Getting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisGetting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisArangoDB Database
 
Custom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBCustom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBArangoDB Database
 
Hacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge GraphsHacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge GraphsArangoDB Database
 
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarA Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarArangoDB Database
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?ArangoDB Database
 
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning MetadataArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning MetadataArangoDB Database
 
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at ScaleArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at ScaleArangoDB Database
 
Webinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB OasisWebinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB OasisArangoDB Database
 
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019ArangoDB Database
 
Webinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDBWebinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDBArangoDB Database
 
An introduction to multi-model databases
An introduction to multi-model databasesAn introduction to multi-model databases
An introduction to multi-model databasesArangoDB Database
 
Running complex data queries in a distributed system
Running complex data queries in a distributed systemRunning complex data queries in a distributed system
Running complex data queries in a distributed systemArangoDB Database
 

More from ArangoDB Database (20)

ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
 
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
 
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
 
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at ScaleArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at Scale
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDB
 
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
 
Graph Analytics with ArangoDB
Graph Analytics with ArangoDBGraph Analytics with ArangoDB
Graph Analytics with ArangoDB
 
Getting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisGetting Started with ArangoDB Oasis
Getting Started with ArangoDB Oasis
 
Custom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBCustom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDB
 
Hacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge GraphsHacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge Graphs
 
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarA Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
 
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning MetadataArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
 
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at ScaleArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at Scale
 
Webinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB OasisWebinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB Oasis
 
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
 
3.5 webinar
3.5 webinar 3.5 webinar
3.5 webinar
 
Webinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDBWebinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDB
 
An introduction to multi-model databases
An introduction to multi-model databasesAn introduction to multi-model databases
An introduction to multi-model databases
 
Running complex data queries in a distributed system
Running complex data queries in a distributed systemRunning complex data queries in a distributed system
Running complex data queries in a distributed system
 

Domain Driven Design und Nosql

  • 1. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 1 Domain Driven Design and NoSQL Interactive Cologne 2014-04-25 martin Schönert (triAGENS) TRI-MS-1405-003-V100-20140525
  • 2. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 2 martin  Mathematik studiert und algebraische Strukturen mit dem Computer untersucht  seither in vielen Rollen in IT  Programmierer  Projektleiter  Produktverantwortlicher  etc.  inzwischen vor allem Architekt  beratend für andere Unternehmen  für die ArangoDB Datenbank
  • 3. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 3 Project YAWS (Yet Another Web Shop)
  • 4. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 4 Willkommen zum Spezifikationsworkshop  Produktmanager erzählen was sie von dem Shop erwarten  Fähigkeit im Katalog zu browser  leistungsfähige Suche  gute Produkte weit oben  eher informell  alle Beteiligten sind guter Dinge  keine Kontroversen The Expert, 2014, Lauris Beinerts
  • 5. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 5 und also entwickeln die Entwickler  Objekt Orientiert  3-tier Architektur  Model View Controller  Modernes Framework  Responsive Design  etc.
  • 6. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 6 doch bei der Fertigstellung Aber natürlich soll das Ranking bei der Suche auch auf der Marge basieren! Wieso gibt es keine Empfehlungen? Der Checkout ist so unbenutzbar! Aber das ist doch offensichtlich! Die Entwickler sind total unfähig!
  • 7. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 7 was die Entwickler von der Fachseite halten
  • 8. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 8 tatsächlich handelt es sich aber um ein systemisches Problem  Funktionalität wird nicht methodisch erfasst  „offensichtliche“ Funktionen fehlen  keine gemeinsame Sprache  Missverständnisse über die Funktionen
  • 9. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 9 Agile Entwicklung hilft u.a. Funktionalität methodisch zu erfassen  Kontinuierliche Interaktion  Product Backlog  Stories / Epics  etc.
  • 10. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 10 Domain Driven Design
  • 11. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 11 wurde von Eric Evans beschrieben  Herangehensweise zur Modellierung komplexer businessorientierter Software  stellt die Fachlichkeit in den Mittelpunkt  dazu wird die Anwendungs- domäne modelliert (daher Domain Driven Design)
  • 12. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 12 Ubiquitäre Sprache  einheitliche Sprache  wird von allen Beteiligten verwendet  wird für alle Aspekte verwendet  muss auf der Fachlichkeit basieren
  • 13. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 13 Entitäten  Haben eine Identität  zwei Entitäten sind selbst dann verschieden wenn sie in allen Attributen gleich sind  Beispiele  Personen  Einkaufskorb  Mutabilität
  • 14. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 14 Wertobjekte  haben keine eigenständige Identität  sind nur über ihre Attribute definiert  können beliebig kopiert werden  Beispiele:  Produktbeschreibung  Unveränderbar (fachlich)
  • 15. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 15 Aggregate  Zusammenfassungen von Entitäten und Wertobjekten zu einer transaktionellen Einheit  eine Entität bildet den Zugriff zu dem Aggregat  durch kontrollierten Zugriff werden Invarianten bewahrt Session session-id last-access User name pw-hash e-mail Shopping-Cart Ubiq P.K. Dick Brazil T. Gilliam Rain Dogs T. Waits Aggregate Wishlist Little, Big 25 J. Crowley In Bruges M.McDonagh
  • 16. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 16 Assoziationen  Beziehungen zwischen Entitäten oder Wertobjekten  können ebenfalls Eigenschaften haben  sind typischerweise unveränderlich knows knows works-for knows send-request invited works-for shares-flat
  • 17. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 17 Fabriken  Erzeugen komplexe Entitäten, Wertobjekte und insbesondere Aggregate  korrespondieren zu den entsprechenden Patterns  Fabrik  Erbauer  Prototype  Beispiel:  Erzeugung eines Aggregats für einen neuen Benutzers mit (leeren) Einkaufswagen und Wunschliste
  • 18. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 18 Repository  Speichern von Entitäten und Aggregaten  Persistenz  modelliert die entsprechende Schicht in einer 3-Schichten Architektur  Methoden zur Suche  Beispiel:  Produktkatalog
  • 19. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 19 Relationale Datenbanken
  • 20. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 20 in relationalen Datenbanken gibt es (ganz besondere) Relationen keine Relation Relation Foreign Key relationale Algebra
  • 21. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 21 gibt es Normalformen  Marc Rettig  Rules of Data Normalization  orig. published 1989  (und immer noch nützlich)  (es ist nicht ganz klar wie viele Normalformen es gibt: 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, EKNF, DKNF, 6NF, ...)
  • 22. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 22 was Normalform u.a. bedeutet  unsere schönen Objekte werden in viele kleine Teile zerlegt und auf viele Tabellen verteilt
  • 23. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 23 und also gibt es Joins  Anleitungen (Joins) um die Objekte beim Lesen wieder zusammen zu setzen  (Ja - es gibt auch noch aus anderen Gründen Joins)
  • 24. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 24 und also gibt es Transaktionen  Vorfahrtsregeln (Transactions) damit beim Zusammensetzen keine Teile der Objekte verloren gehen  (Ja – es gibt auch noch aus anderen Gründen Transaktionen)
  • 25. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 25 kurz: Datenbankentwickler sprechen eine eigene ganz Sprache
  • 26. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 26 NoSQL Datenbanken
  • 27. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 27 Inzwischen gibt es andere nicht-relationale Datenbanken: NoSQL  Bedingungen für DBs haben sich geändert:  Funktionelle Anforderungen  viele einfache Operationen  Nicht funktionelle Anf.  Volume  Variety  Velocity  Hardware  RAM is cheap  SSDs
  • 28. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 28 NoSQL Datenbanken werden häufig in vier Klassen (Models) eingeteilt: Key-Value Stores Document Databases Extended Column Stores Graph Databases
  • 29. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 29 Daneben gibt es inzwischen einige sogenannte Multi-Model Datenbanken Multi-Model Databases
  • 30. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 30 Key-Value Stores sind die einfachste Datenbank Key ValueKey Value Key Value2 { name: „paavo“ } Key Value3 { first: „emil“ } Key Value„runners“ { ids: [ 1, 2, 3, 5 ] } Key Value5 { name:„haile“,act:1 } Key Value1 { first: „paul“ } Key Value„last“ 5  Bilden Schlüssel auf Werte ab (wie dict)  Zugriff geht nur über den Schlüssel  Werte sind (für den KV-Store) unstrukturiert  häufig keine Möglichkeit über die Paare zu laufen  falls doch ist keine Reihenfolge definiert  z.B. Einkaufswage
  • 31. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 31 Dokumentendatenbanken  Dokumente sind Mengen von Attribut/Werte Paaren  Strukturierte Attribute  Listen, Teilobjekte  Collections  Sammlungen von Dokumenten  Externe Repräsentation meist in JSON  Manchmal interne Speicherung ebenfalls in JSON / BSON  z.B. Produktkatalog { FirstName:"Jonathan", Address:"15 Wanamassa Road", Children:[ {Name:"Michael",Age:10}, {Name:"Jennifer", Age:8}, {Name:"Samantha", Age:5}, {Name:"Elena", Age:2} ], Job: “Tennis Trainer“ }
  • 32. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 32 Graphendatenbanken  Knoten (Vertices)  meistens Objekte (wie in Dokumentendatenbanken)  Kanten (Edges)  verbinden zwei Objekte  gerichtet (von → nach)  mit Typ („knows“, „likes“)  weiterer Information  z.B. Beziehungen zwischen Produkten  [Nachfolger-von], [Zubehör-für], ..
  • 33. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 33 Korrespondenz zwischen Domain Driven Design und NoSQL Datenbanken
  • 34. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 34 Entitäten  Entität  Identität  komplexe Struktur  Unterschiedlichkeit  Dokument  jedes Dokument hat eine eigene Identität  ID oder Key Attribut  strukturierte Attribute  Schemafreiheit  kein EAV nötig DDD Dokumentendatenbank
  • 35. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 35 Wertobjekte  Wertobjekt  Unveränderbarkeit  Dokument  oder  Subobjekt in einem anderem Dokument (Entität oder WO)  muss programmatisch sichergestellt werden DDD Dokumentendatenbank
  • 36. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 36 Aggregate  Aggregat  Zentraler Zugriff  Dokument mit direktem Verweis auf andere Dokumente  muss programmatisch sichergestellt werden DDD Dokumentendatenbank
  • 37. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 37 Assoziationen  Assoziation  Typ der Assoziation  weitere Eigenschaften  Zugriffsmethoden an Hand der Assoziationen  z.B. Empfehlungen  Kante zwischen zwei Dokumenten  Typattribut der Kante  weitere Attribute  Graphalgorithmen in der Datenbank  z.B. zur Pfadsuche DDD Graphendatenbank
  • 38. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 38 Repositories  Repository  Suchen in Repositories  Collection  Queries  mit entsprechenden Indizes DDD NoSQL Datenbanken
  • 39. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 39 Fazit
  • 40. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 40 DDD und Multi-Model-NoSQL-DBs gehören zusammen  Für den Erfolg von Softwareprojekten ist u.a. eine gemeinsame Sprache die von allen Beteiligten durchgängig benutzt wird wichtig  Domain Driven Design ist eine Herangehensweise die eine solche fordert und fördert  Entwicklung mit relationalen DBs erfordert eine ganz eigene Sprache (und Denkweise)  Nicht-relationale/NoSQL DBs sind moderne DBs die besser zu den geänderten Bedingungen moderner Softwareentwicklung passen  Zwischen der einheitlichen Sprache von Domain Driven Design und den Konzepten von NoSQL DBs existiert eine direkt Korrespondenz  Eine vollständige Korrespondenz ist nur mit Multi-Model-DBs gegeben die Dokumenten- und Graphendatenbanken vereinigen
  • 41. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 41 triAGENS Die triAGENS GmbH ist ein Dienstleister im Bereich komplexer Informationssysteme und webbasierter Business-Lösungen, mit hohen Anforderungen an Performance, Skalierbarkeit und Sicherheit. triAGENS entwickelt High-Performance- Datenbanken auf Basis optimierter NoSQL-Datenbanktechnologien, die u.a. bei der Deutschen Post zum Einsatz kommen. The triAGENS GmbH is a service company in the area of complex IT Systems and web based business solutions with high requirements on performance, scalability and security. triAGENS supplies high performance databases based on NoSQL database technology, which are utilized for example by Deutsche Post. martin Schönert Geschäftsführer / executive director m.schoenert@triagens.de +49 170 8602158 triAGENS GmbH Hohenstaufenalle 43-45 50674 Köln www.triagens.de
  • 42. Interactive Cologne | © 2014 triAGENS GmbH | 2014-05-25 42 Kontext Projekt oder Bereich Titel Domain Driven Design und NoSQL Ablage 70_Praesentationen ID TRI-MS-1405-003 Verantwortlich martin Schönert / triagens Leser öffentlich Sicherheitsein. öffentlich SchlüsselworteSoftwareentwicklung DDD Evans NoSQL Multi-Model Schritt Bearbeiter geplant bis Fertigstellung Kommentar Finale Version m.Schönert 2014-05-24 2014-05-24 Version Datum Bearbeiter Kommentar V1.00 2014-05-24 m.Schönert Finale Version Folie Kommentar - - Dokumentinformationen Metainformationen Historie Bearbeitungsschritte Todos