domain driven design @froscon
DESCRIPTION
Lucas' Talk about domain driven design at the FrOSCon from 23th and 24th of AugustTRANSCRIPT
![Page 1: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/1.jpg)
Escaping the Tower of BabelDomain Driven Design & NoSQL
![Page 2: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/2.jpg)
Escaping the Tower of BabelDomain Driven Design & NoSQL
![Page 3: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/3.jpg)
class SpaceShuttle end !class Astronaut end
vI
![Page 4: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/5.jpg)
Iterative DevelopmentClose relationship
between devs & domain experts
Domain Driven Design
![Page 6: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/6.jpg)
Hi. I’m Lucas.
![Page 7: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/7.jpg)
From Köln / Cologne
![Page 8: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/8.jpg)
I work for ArangoDB GmbH
![Page 9: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/9.jpg)
We build ArangoDB
![Page 10: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/10.jpg)
ArangoDB is an Open Source NoSQL Database
![Page 11: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/11.jpg)
But what is NoSQL?
![Page 12: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/12.jpg)
SQL
NoSQL
![Page 13: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/13.jpg)
SQL
Not only SQL
![Page 14: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/15.jpg)
{(Alice, 1983-07-1, 1) (Bob, 2014-03-19, 2)}
![Page 16: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/16.jpg)
name birthday city
Alice 1983-07-1 1
Bob 2014-03-19 2
![Page 17: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/17.jpg)
Disconnect
Iv
Ownership
name: alice…
type: spaceshuttle
![Page 18: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/18.jpg)
Entity Value Object Service
Identified by ID Value What it does
State Mutable Immutable Stateless
![Page 19: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/19.jpg)
+ Factories + Repositories + Aggregates
![Page 20: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/20.jpg)
DENORMALIZATION
![Page 21: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/21.jpg)
Lift the restriction• Tuples containing other Tuples
• Tuples with arbitrary attributes
![Page 22: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/22.jpg)
Space Shuttle
Parts
![Page 23: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/23.jpg)
Space Shuttle
Parts
Document Store
![Page 24: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/24.jpg)
Itype: spaceshuttle
vname: alice
astronaut: 1 spaceshuttle: 3
![Page 25: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/25.jpg)
JOINS
![Page 26: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/26.jpg)
Alice Ownership SpaceShuttle
![Page 27: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/27.jpg)
Alice Ownership SpaceShuttle
Graph Database
![Page 28: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/28.jpg)
Alice Ownership
SpaceShuttle
Parts
![Page 29: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/29.jpg)
Alice Ownership
SpaceShuttle
Parts
I’m a document!
![Page 30: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/30.jpg)
Alice Ownership
SpaceShuttle
Parts
Me too!
![Page 31: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/31.jpg)
Alice Ownership
SpaceShuttle
Parts
![Page 32: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/32.jpg)
Alice Ownership
SpaceShuttle
Parts
Multi Model Database
![Page 33: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/33.jpg)
Disconnect
Iv
Ownership
name: alice…
type: spaceshuttle
![Page 34: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/34.jpg)
Itype: spaceshuttle
vname: alice
Ownership
since: 2003
![Page 35: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/35.jpg)
Explain graphs.
![Page 36: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/36.jpg)
Learn about the domain.
![Page 37: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/37.jpg)
Find the common language.
![Page 38: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/38.jpg)
Build one
model for
everyone involved.
![Page 39: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/39.jpg)
Evolve the model alongside the implementation
![Page 40: Domain driven design @FrOSCon](https://reader034.vdocuments.us/reader034/viewer/2022052311/559429801a28abc55a8b45e1/html5/thumbnails/40.jpg)
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