continuous database design - entwicklertag · orientation in objects gmbh weinheimer str. 68 68309...

53
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: Continuous Database Design Entwicklertag Karlsruhe Mai 2017 2.0

Upload: others

Post on 26-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]:

Continuous Database Design

Entwicklertag Karlsruhe

Mai 2017

2.0

Page 2: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Ihr Sprecher

2

Thorsten Maier

Trainer, Berater, Entwickler

Page 3: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 3

Die Welt der Entwickler

Page 4: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 4

Die Welt des Betriebs

Page 5: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 5

Die Welt der Entwickler Die Welt des Betriebs

Page 6: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 6

Continuous Delivery

Page 7: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 7

Wann Continuous Delivery?

Schnelle Reaktion auf Anforderungsänderungen

Page 8: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 8

Was brauchen wir dazu?

Automatisierung

Modularisierung

Page 9: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 9

3 Bausteine

Page 10: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Anwendung mit 3 Bausteinen

10

Page 11: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 11

Deployment auf einem Server

Anwendung mit 3 Bausteinen

Page 12: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 12

Anwendung mit 3 Bausteinen

Baustein wird 4 mal benötigt

Page 13: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 13

Anwendung mit 3 Bausteinen

Nachteile

wird nur 2 mal benötigt

Änderung an erfordert Reploy von

Baustein wird 4 mal benötigt

Page 14: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 14

Unabhängige ArtefakteAnwendung mit 3 Bausteinen

Baustein wird 4 mal benötigt

Page 15: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 15

Unabhängige Artefakte

Flexible Skalierung auf 3 Server

Anwendung mit 3 Bausteinen

Baustein wird 4 mal benötigt

Page 16: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 16

Unabhängige ArtefakteVorteile

Isolierte Entwicklung

Schnellere Reaktionszeiten

Austauschen im laufenden Betrieb

Continuous Delivery wird möglich

Flexible Skalierung auf 3 Server

Page 17: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 17

Was brauchen wir noch?

Umdenken was ein Feature ist

30 Feature pro Tag?

Page 18: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 18

Deploy ≠ Feature Launch

Page 19: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 19

Wir brauchen noch mehr

Zustandslose Anwendung

Page 20: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 20

RedisAPI

GATEWAY

@EnableRedisHttpSessionpublic class SpringSessionConfig {

@Beanpublic JedisConnectionFactory connectionFactory() {

return new JedisConnectionFactory();}

}

Page 21: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 21

Wie viele Datenbanken haben wir eigentlich?

Eine? Mehrere?

Page 22: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 22

DB

APIGATEWAY

Page 23: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 23

DB

DB

APIGATEWAY

BoundedContext

Page 24: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 24

Schemaänderungen

Wie ändern wir das Schema?

Page 25: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 25

Page 26: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 26

Page 27: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 27

http://stackoverflow.com/questions/221379/hibernate-hbm2ddl-auto-update-in-production

Page 28: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 28

„Vor dem Update von Version 1.0.2 auf 1.1musst du erst noch die neuen SQL-Skript einspielen.“

Page 29: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 29

1.0schema.sql

1.110_to_11.sql

1.0.110_to_101.sql

101_to_11.sql

1.0.2

101_to_102.sql

102_to_11.sql

Page 30: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Eigentlich noch komplizierter

30

Page 31: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Die Lösung

31

Page 32: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Liquibase

32

Page 33: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Changelog.xml

33

<changeSet author="tmaier" id="1495491474">

<createTable schemaName="public" tableName="person">

<column name="address" type="varchar(255)"/>

</createTable>

</changeSet>

Page 34: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Metadaten in der Datenbank

34

Page 35: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Liquibase aktualisiert

beim Starten der Anwendung

automatisch die Datenbank.

35

Page 36: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 36

BEISPIEL

Page 37: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 37

Ersetze die Spalte Name durch die Spalte

Vorname

Page 38: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 38

Page 39: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 39

DB

Wer ändert wann die DB?

It depends ;-)

Page 40: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 40

Zu viele Köche

Ab einer gewissen Größe nur noch so! DB

DB

Page 41: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 41

Warum nehmen wir eigentlich keine

schemalose NoSQL DB?

Page 42: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Relationale Datenbankenskalieren nicht

Warum?

Normalisierung => Joins

Forderung nach Konsistenz => Transaktionen

42

Page 43: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

NoSQL=

Relationale Datenbank - Transaktionen - Normalisierung - Joins - Konsistenz - hartes Schema

(+) Skalierung

(+) Performance

43

Page 44: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Datenmodellierung NoSQL

Konkret für den Anwendungsfall

Denormalisierung und Duplizierung sind normal

44

Page 45: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 45

userids 1, 2, 5, 7, 12, …

1 John Doe, 1975-08-29, …

2 Richard Miles, 1982-03-14, …

Page 46: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 46

user:1:firstname John

user:1:lastname Doe

user:1:birthday 1975-08-29

userids 1, 2, 5, 7, 12, …

Page 47: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH

Server 0

47

Key Value

Key Value

user:tmaier:name

Key-Hash: 39E5DC60AAD55349Modulo Anzahl der Server (3): 1

Key auf Server 1 speichern

Key Value

Server 1

Key Value

Key Value

Key Value

Server 2

Key Value

Page 48: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 48

01

23

Key

Key

0

Page 49: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 49

Twitter

Viel Aktion beim Schreiben,wenig beim Lesen

300.000 reads/sec6000 writes/sec

Page 50: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 50

{Tweet-Inhalt}User: 12

Tweet-ID: 4711

Key-Value-Store

Tweet:4711 {Tweet-Inhalt}

Graph-DB

User-Timeline:17 4711, 3013, 302, …

User-Timeline:123 4711, 2001, 878, …

Follower vonUser 12?

12

17

123

Tweet wird unter der ID 4711 eingetragen

Ein Eintrag pro Follower!

Page 51: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Continuous Database Design© Orientation in Objects GmbH 51

NoSQL?

Falls die Anforderungen passen!

Anwendung kümmert sich um das „Schema“

Page 52: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

? ?

??

?Fragen ?

Page 53: Continuous Database Design - Entwicklertag · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de Continuous Database Design Entwicklertag Karlsruhe

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

Vielen Dank für ihre

Aufmerksamkeit !