Escaping the
Tower of Babel
Domain 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 Development
Close 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
I
v
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
I
v
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
moonglum
moonbeamlabs
arangodb.org

Domain Driven Design & NoSQL