Escaping the
Tower of Babel
Domain Driven Design & NoSQL
Slide 2
Slide 2 text
Escaping the
Tower of Babel
Domain Driven Design & NoSQL
Slide 3
Slide 3 text
class SpaceShuttle
end
!
class Astronaut
end
v
I
Slide 4
Slide 4 text
Domain Driven Design
• Find an ubiquitous language
• Every person involved understands the
language
• The language is based on the domain
Eric Evans
Slide 5
Slide 5 text
Iterative Development
Close relationship
between
devs & domain experts
Domain Driven Design
Slide 6
Slide 6 text
Hi.
I’m Lucas.
Slide 7
Slide 7 text
From Köln / Cologne
Slide 8
Slide 8 text
Dom / Cathedral
Slide 9
Slide 9 text
Hohenzollernbrücke
Slide 10
Slide 10 text
I work for
ArangoDB GmbH
Slide 11
Slide 11 text
We build
ArangoDB
Slide 12
Slide 12 text
ArangoDB
is an Open Source
NoSQL Database
Slide 13
Slide 13 text
But what is NoSQL?
Slide 14
Slide 14 text
SQL
NoSQL
Slide 15
Slide 15 text
SQL
Not only SQL
Slide 16
Slide 16 text
What is NoSQL?
What is SQL?
What is a relational
algebra?
What is a relation?
Not SQL
A relational algebra
An algebra on relations
Slide 17
Slide 17 text
{(Alice, 1983-07-1, 1)
(Bob, 2014-03-19, 2)}
Slide 18
Slide 18 text
name birthday city
Alice 1983-07-1 1
Bob 2014-03-19 2
Slide 19
Slide 19 text
Disconnect
I
v
Ownership
name: alice…
type: spaceshuttle
Slide 20
Slide 20 text
Entity Value Object Service
Identified by ID Value What it does
State Mutable Immutable Stateless
Slide 21
Slide 21 text
+ Factories
+ Repositories
+ Aggregates
Slide 22
Slide 22 text
DENORMALIZATION
Slide 23
Slide 23 text
Lift the
restriction
• Tuples containing other Tuples
• Tuples with arbitrary attributes
Slide 24
Slide 24 text
Space Shuttle
Parts
Slide 25
Slide 25 text
Space Shuttle
Parts
Document
Store
Slide 26
Slide 26 text
I
type:
spaceshuttle
v
name:
alice
astronaut: 1
spaceshuttle: 3
Slide 27
Slide 27 text
JOINS
Slide 28
Slide 28 text
Alice Ownership SpaceShuttle
Slide 29
Slide 29 text
Alice Ownership SpaceShuttle
Graph
Database
Slide 30
Slide 30 text
Alice Ownership
SpaceShuttle
Parts
Slide 31
Slide 31 text
Alice Ownership
SpaceShuttle
Parts
I’m a
document!
Slide 32
Slide 32 text
Alice Ownership
SpaceShuttle
Parts
Me too!
Slide 33
Slide 33 text
Alice Ownership
SpaceShuttle
Parts
Slide 34
Slide 34 text
Alice Ownership
SpaceShuttle
Parts
Multi Model
Database
Slide 35
Slide 35 text
Disconnect
I
v
Ownership
name: alice…
type: spaceshuttle
Slide 36
Slide 36 text
I
type:
spaceshuttle
v
name:
alice
Ownership
since:
2003
Slide 37
Slide 37 text
Explain graphs.
Learn about the domain.
Find the common language.
Build one model for everyone involved.
Evolve the model alongside the implementation
moonglum
moonbeamlabs
arangodb.org