Escaping the
Tower of Babel
Domain Driven Design & NoSQL
Slide 2
Slide 2 text
class SpaceShuttle
end
!
class Astronaut
end
v
I
Slide 3
Slide 3 text
Domain Driven Design
• Find an ubiquitous language
• The language is based on the domain
• Every person involved understands the
language
Eric Evans
Slide 4
Slide 4 text
Iterative Development
Close relationship
between
devs & domain experts
Domain Driven Design
Slide 5
Slide 5 text
Hi.
I’m Lucas.
Slide 6
Slide 6 text
I work for
ArangoDB GmbH
Slide 7
Slide 7 text
We build
ArangoDB
Slide 8
Slide 8 text
ArangoDB
is an Open Source
NoSQL Database
Slide 9
Slide 9 text
But what is NoSQL?
Slide 10
Slide 10 text
SQL
NoSQL
Slide 11
Slide 11 text
SQL
Not only SQL
Slide 12
Slide 12 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 13
Slide 13 text
{(Alice, 1983-07-1, 1)
(Bob, 2014-03-19, 2)}
Slide 14
Slide 14 text
name birthday city
Alice 1983-07-1 1
Bob 2014-03-19 2
Slide 15
Slide 15 text
Disconnect
I
v
Ownership
name: alice…
type: spaceshuttle
Slide 16
Slide 16 text
Entity Value Object Service
Identified by ID Value What it does
State Mutable Immutable Stateless
Slide 17
Slide 17 text
+ Factories
+ Repositories
+ Aggregates
Slide 18
Slide 18 text
DENORMALIZATION
Slide 19
Slide 19 text
Lift the
restriction
• Tuples containing other Tuples
• Tuples with arbitrary attributes
Slide 20
Slide 20 text
Space Shuttle
Parts
Slide 21
Slide 21 text
Space Shuttle
Parts
Document
Store
Slide 22
Slide 22 text
I
type:
spaceshuttle
v
name:
alice
astronaut: 1
spaceshuttle: 3
Slide 23
Slide 23 text
JOINS
Slide 24
Slide 24 text
Alice Ownership SpaceShuttle
Slide 25
Slide 25 text
Alice Ownership SpaceShuttle
Graph
Database
Slide 26
Slide 26 text
Alice Ownership
SpaceShuttle
Parts
Slide 27
Slide 27 text
Alice Ownership
SpaceShuttle
Parts
I’m a
document!
Slide 28
Slide 28 text
Alice Ownership
SpaceShuttle
Parts
Me too!
Slide 29
Slide 29 text
Alice Ownership
SpaceShuttle
Parts
Slide 30
Slide 30 text
Alice Ownership
SpaceShuttle
Parts
Multi Model
Database
Slide 31
Slide 31 text
Disconnect
I
v
Ownership
name: alice…
type: spaceshuttle
Slide 32
Slide 32 text
I
type:
spaceshuttle
v
name:
alice
Ownership
since:
2003
Slide 33
Slide 33 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