33
Escaping the Tower of Babel Domain Driven Design & NoSQL

Domain Driven Design & NoSQL

Embed Size (px)

DESCRIPTION

A presentation from Lucas Dohmen about Domain Driven Design, NoSQL and how they can work together.

Citation preview

Page 1: Domain Driven Design & NoSQL

Escaping the Tower of BabelDomain Driven Design & NoSQL

Page 2: Domain Driven Design & NoSQL

class SpaceShuttle end !class Astronaut end

vI

Page 3: Domain Driven Design & NoSQL

Domain Driven Design

• Find an ubiquitous language

• The language is based on the domain

• Every person involved understands the language

Eric Evans

Page 4: Domain Driven Design & NoSQL

Iterative DevelopmentClose relationship

between devs & domain experts

Domain Driven Design

Page 5: Domain Driven Design & NoSQL

Hi. I’m Lucas.

Page 6: Domain Driven Design & NoSQL

I work for ArangoDB GmbH

Page 7: Domain Driven Design & NoSQL

We build ArangoDB

Page 8: Domain Driven Design & NoSQL

ArangoDB is an Open Source NoSQL Database

Page 9: Domain Driven Design & NoSQL

But what is NoSQL?

Page 10: Domain Driven Design & NoSQL

SQL

NoSQL

Page 11: Domain Driven Design & NoSQL

SQL

Not only SQL

Page 12: Domain Driven Design & NoSQL

What is NoSQL?

What is SQL?

What is a relational algebra?

What is a relation?

Not SQL

A relational algebra

An algebra on relations

Page 13: Domain Driven Design & NoSQL

{(Alice, 1983-07-1, 1) (Bob, 2014-03-19, 2)}

Page 14: Domain Driven Design & NoSQL

name birthday city

Alice 1983-07-1 1

Bob 2014-03-19 2

Page 15: Domain Driven Design & NoSQL

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Page 16: Domain Driven Design & NoSQL

Entity Value Object Service

Identified by ID Value What it does

State Mutable Immutable Stateless

Page 17: Domain Driven Design & NoSQL

+ Factories + Repositories + Aggregates

Page 18: Domain Driven Design & NoSQL

DENORMALIZATION

Page 19: Domain Driven Design & NoSQL

Lift the restriction• Tuples with arbitrary attributes

• Tuples containing other Tuples

Page 20: Domain Driven Design & NoSQL

Space Shuttle

Parts

Page 21: Domain Driven Design & NoSQL

Space Shuttle

Parts

Document Store

Page 22: Domain Driven Design & NoSQL

Itype: spaceshuttle

vname: alice

astronaut: 1 spaceshuttle: 3

Page 23: Domain Driven Design & NoSQL

JOINS

Page 24: Domain Driven Design & NoSQL

Alice Ownership SpaceShuttle

Page 25: Domain Driven Design & NoSQL

Alice Ownership SpaceShuttle

Graph Database

Page 26: Domain Driven Design & NoSQL

Alice Ownership

SpaceShuttle

Parts

Page 27: Domain Driven Design & NoSQL

Alice Ownership

SpaceShuttle

Parts

I’m a document!

Page 28: Domain Driven Design & NoSQL

Alice Ownership

SpaceShuttle

Parts

Me too!

Page 29: Domain Driven Design & NoSQL

Alice Ownership

SpaceShuttle

Parts

Page 30: Domain Driven Design & NoSQL

Alice Ownership

SpaceShuttle

Parts

Multi Model Database

Page 31: Domain Driven Design & NoSQL

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Page 32: Domain Driven Design & NoSQL

Itype: spaceshuttle

vname: alice

Ownership

since: 2003

Page 33: Domain Driven Design & NoSQL

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