Top Banner
Escaping the Tower of Babel Domain Driven Design & NoSQL
40

Domain driven design @FrOSCon

Jul 02, 2015

Download

Technology

arangodb

Lucas' Talk about domain driven design at the FrOSCon from 23th and 24th of August
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Domain driven design @FrOSCon

Escaping the Tower of BabelDomain Driven Design & NoSQL

Page 2: Domain driven design @FrOSCon

Escaping the Tower of BabelDomain Driven Design & NoSQL

Page 3: Domain driven design @FrOSCon

class SpaceShuttle end !class Astronaut end

vI

Page 4: Domain driven design @FrOSCon

Domain Driven Design

• Find an ubiquitous language

• Every person involved understands the language

• The language is based on the domain

Eric Evans

Page 5: Domain driven design @FrOSCon

Iterative DevelopmentClose relationship

between devs & domain experts

Domain Driven Design

Page 6: Domain driven design @FrOSCon

Hi. I’m Lucas.

Page 7: Domain driven design @FrOSCon

From Köln / Cologne

Page 8: Domain driven design @FrOSCon

I work for ArangoDB GmbH

Page 9: Domain driven design @FrOSCon

We build ArangoDB

Page 10: Domain driven design @FrOSCon

ArangoDB is an Open Source NoSQL Database

Page 11: Domain driven design @FrOSCon

But what is NoSQL?

Page 12: Domain driven design @FrOSCon

SQL

NoSQL

Page 13: Domain driven design @FrOSCon

SQL

Not only SQL

Page 14: Domain driven design @FrOSCon

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 15: Domain driven design @FrOSCon

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

Page 16: Domain driven design @FrOSCon

name birthday city

Alice 1983-07-1 1

Bob 2014-03-19 2

Page 17: Domain driven design @FrOSCon

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Page 18: Domain driven design @FrOSCon

Entity Value Object Service

Identified by ID Value What it does

State Mutable Immutable Stateless

Page 19: Domain driven design @FrOSCon

+ Factories + Repositories + Aggregates

Page 20: Domain driven design @FrOSCon

DENORMALIZATION

Page 21: Domain driven design @FrOSCon

Lift the restriction• Tuples containing other Tuples

• Tuples with arbitrary attributes

Page 22: Domain driven design @FrOSCon

Space Shuttle

Parts

Page 23: Domain driven design @FrOSCon

Space Shuttle

Parts

Document Store

Page 24: Domain driven design @FrOSCon

Itype: spaceshuttle

vname: alice

astronaut: 1 spaceshuttle: 3

Page 25: Domain driven design @FrOSCon

JOINS

Page 26: Domain driven design @FrOSCon

Alice Ownership SpaceShuttle

Page 27: Domain driven design @FrOSCon

Alice Ownership SpaceShuttle

Graph Database

Page 28: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Page 29: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

I’m a document!

Page 30: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Me too!

Page 31: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Page 32: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Multi Model Database

Page 33: Domain driven design @FrOSCon

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Page 34: Domain driven design @FrOSCon

Itype: spaceshuttle

vname: alice

Ownership

since: 2003

Page 35: Domain driven design @FrOSCon

Explain graphs.

Page 36: Domain driven design @FrOSCon

Learn about the domain.

Page 37: Domain driven design @FrOSCon

Find the common language.

Page 38: Domain driven design @FrOSCon

Build one

model for

everyone involved.

Page 39: Domain driven design @FrOSCon

Evolve the model alongside the implementation

Page 40: Domain driven design @FrOSCon

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