domain driven design & nosql
DESCRIPTION
A presentation from Lucas Dohmen about Domain Driven Design, NoSQL and how they can work together.TRANSCRIPT
Escaping the Tower of BabelDomain Driven Design & NoSQL
class SpaceShuttle end !class Astronaut end
vI
Domain Driven Design
• Find an ubiquitous language
• The language is based on the domain
• Every person involved understands the language
Eric Evans
Iterative DevelopmentClose relationship
between devs & domain experts
Domain Driven Design
Hi. I’m Lucas.
I work for ArangoDB GmbH
We build ArangoDB
ArangoDB is an Open Source NoSQL Database
But what is NoSQL?
SQL
NoSQL
SQL
Not only SQL
What is NoSQL?
What is SQL?
What is a relational algebra?
What is a relation?
Not SQL
A relational algebra
An algebra on relations
{(Alice, 1983-07-1, 1) (Bob, 2014-03-19, 2)}
name birthday city
Alice 1983-07-1 1
Bob 2014-03-19 2
Disconnect
Iv
Ownership
name: alice…
type: spaceshuttle
Entity Value Object Service
Identified by ID Value What it does
State Mutable Immutable Stateless
+ Factories + Repositories + Aggregates
DENORMALIZATION
Lift the restriction• Tuples with arbitrary attributes
• Tuples containing other Tuples
Space Shuttle
Parts
Space Shuttle
Parts
Document Store
Itype: spaceshuttle
vname: alice
astronaut: 1 spaceshuttle: 3
JOINS
Alice Ownership SpaceShuttle
Alice Ownership SpaceShuttle
Graph Database
Alice Ownership
SpaceShuttle
Parts
Alice Ownership
SpaceShuttle
Parts
I’m a document!
Alice Ownership
SpaceShuttle
Parts
Me too!
Alice Ownership
SpaceShuttle
Parts
Alice Ownership
SpaceShuttle
Parts
Multi Model Database
Disconnect
Iv
Ownership
name: alice…
type: spaceshuttle
Itype: spaceshuttle
vname: alice
Ownership
since: 2003
Explain graphs.
Learn about the domain.
Find the common language.
Build one model for everyone involved.
Evolve the model alongside the implementation
moonglummoonbeamlabs
arangodb.org