it's time to rethink datenbank-design in der schönen neuen ... · orientation in objects gmbh...

92
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: It's time to rethink Datenbank-Design in der schönen neuen Welt 1.1 Java User Group Hessen 2015

Upload: hanga

Post on 23-Aug-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected] Version:

– It's time to rethink –

Datenbank-Design in der

schönen neuen Welt

1.1

Java User Group Hessen 2015

Page 2: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Ihr Sprecher

Thorsten Maier

Trainer, Berater, Entwickler

Schwerpunkte Prozesse

Architektur Code-Qualität

eigentlich kein „Datenbänker“

2

Page 3: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Um was geht’s?

3

Die Welt des Betriebs

Page 4: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Um was geht’s?

4

Die Welt der Entwickler

Page 5: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Um was geht’s?

5

Die Welt der Entwickler Die Welt des Betriebs

Page 6: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 6

Die schöne neue Welt

Continuous Delivery

Page 7: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

300.000.000 Benutzer

300.000 reads/sec

6000 writes/sec

400.000.000 Tweets/day

Lady Gaga hat 49.000.000 Follower

7

Noch mehr schöne neue Welt

Twitter

Page 8: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Continuous Delivery ist genial

Wir müssen (fast) alles anders machen

Keine Downtime

DB kontrolliert ändern

8

Page 9: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

+ Schnellere Reaktionszeiten

+ Weniger Risiko

3 Monats- Releases

Continuous Delivery

9

Page 10: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 10

Continuous Delivery für alle?

Projekt oder Produkt

Page 11: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Continuous Delivery ist genial

Wir müssen (fast) alles anders machen

Keine Downtime

DB kontrolliert ändern

11

Wir müssen (fast) alles anders machen

Page 12: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 12

„Wer schafft mindestens 1 Produktions-Release

pro Tag?“

Page 13: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 13

Deploy ≠ Feature Launch

Page 14: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 14

„Können Sie ohne Downtime deployen?“

Page 15: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Blue-Green-Deployment

15

Router

Blue Server

Green Server DB

Page 16: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Blue-Green-Deployment

16

Router

Blue Server

Green Server DB

Kann unsere Anwendung das?

Page 17: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 17

Was passiert mit den eingeloggten Usern beim

Umschalten zwischen blau und grün?

Page 18: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 18

Server 1 Sync Sessions

Server 2

Page 19: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 19

Server 1 Server 2

Session Store Memcache, Infinispan, …

Page 20: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Application-Server sind tot

20

Page 21: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Was spricht gegen Application-Server?

• Der Betrieb erwartet ein „RPM für Linux“ und kein „WAR / EAR“

– Spezielles Monitoring für App-Server notwendig

• App-Server für mehrere Apps wird praktisch nicht verwendet

– eher Clustering von mehreren App-Servern

• App-Server bringt Bibliotheken mit und verhindert somit ein

einfaches Update

• App-Server ist ein Problem im Umfeld von Continuous Delivery

– Deployment-Artefakte können durch die Deployment-Pipe geschoben

werden, aber was ist mit der App-Server-Version?

21

Page 22: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Abhängigkeiten in App-Servern

22

App-Server Java EE 7

Shared Libs

JPA 2.1

JTA 1.2

Servlet 3.1

Web-App 1

Web-App 2

Spring

JSF 2.2

Richfaces HTTP

JPA 1.0

Hibernate 3

Page 23: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Web-App 2

Web-App 1

Abhängigkeiten OHNE App-Server

23

JPA 2.1

JTA 1.2

Servlet 3.1

Spring

JSF 2.2

Richfaces

JPA 1.0

Hibernate 3

JTA 1.2

Servlet 3.1

HTTP

HTTP

Page 24: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Sind Application-Server tot?

com.example:myproject:jar:0.0.1-SNAPSHOT

\- org.springframework.boot:spring-boot-starter-web:jar:1.1.1.BUILD-SNAPSHOT:compile

+- org.springframework.boot:spring-boot-starter:jar:1.1.1.BUILD-SNAPSHOT:compile

| +- org.springframework.boot:spring-boot:jar:1.1.1.BUILD-SNAPSHOT:compile

| +- org.springframework.boot:spring-boot-autoconfigure:jar:1.1.1.BUILD-SNAPSHOT:compile

| +- org.springframework.boot:spring-boot-starter-logging:jar:1.1.1.BUILD-SNAPSHOT:compile

| | +- org.slf4j:jcl-over-slf4j:jar:1.7.7:compile

| | | \- org.slf4j:slf4j-api:jar:1.7.7:compile

| | +- org.slf4j:jul-to-slf4j:jar:1.7.7:compile

| | +- org.slf4j:log4j-over-slf4j:jar:1.7.7:compile

| | \- ch.qos.logback:logback-classic:jar:1.1.2:compile

| | \- ch.qos.logback:logback-core:jar:1.1.2:compile

| \- org.yaml:snakeyaml:jar:1.13:runtime

+- org.springframework.boot:spring-boot-starter-tomcat:jar:1.1.1.BUILD-SNAPSHOT:compile

| +- org.apache.tomcat.embed:tomcat-embed-core:jar:7.0.54:compile

| +- org.apache.tomcat.embed:tomcat-embed-el:jar:7.0.54:compile

| \- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:7.0.54:compile

+- com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile

| +- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.3:compile

| \- com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile

+- org.hibernate:hibernate-validator:jar:5.0.3.Final:compile

| +- javax.validation:validation-api:jar:1.1.0.Final:compile

| +- org.jboss.logging:jboss-logging:jar:3.1.1.GA:compile

| \- com.fasterxml:classmate:jar:1.0.0:compile

+- org.springframework:spring-core:jar:4.0.5.RELEASE:compile

+- org.springframework:spring-web:jar:4.0.5.RELEASE:compile

| +- org.springframework:spring-aop:jar:4.0.5.RELEASE:compile

| | \- aopalliance:aopalliance:jar:1.0:compile

| +- org.springframework:spring-beans:jar:4.0.5.RELEASE:compile

| \- org.springframework:spring-context:jar:4.0.5.RELEASE:compile

\- org.springframework:spring-webmvc:jar:4.0.5.RELEASE:compile

\- org.springframework:spring-expression:jar:4.0.5.RELEASE:compile

24

Page 25: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Spring Boot – Starter POMs

• spring-boot-starter-actuator

• spring-boot-starter-amqp

• spring-boot-starter-aop

• spring-boot-starter-batch

• spring-boot-starter-data-elasticsearch

• spring-boot-starter-data-gemfire

• spring-boot-starter-data-jpa

• spring-boot-starter-data-mongodb

• spring-boot-starter-data-rest

• spring-boot-starter-data-solr

• spring-boot-starter-freemarker

• spring-boot-starter-groovy-templates

• spring-boot-starter-hornetq

• spring-boot-starter-integration

• spring-boot-starter-jdbc

• spring-boot-starter-jetty

• spring-boot-starter-log4j

• spring-boot-starter-logging

• spring-boot-starter-mobile

• spring-boot-starter-parent

• spring-boot-starter-redis

• spring-boot-starter-remote-shell

• spring-boot-starter-security

• spring-boot-starter-social-facebook

• spring-boot-starter-social-linkedin

• spring-boot-starter-social-twitter

• spring-boot-starter-test

• spring-boot-starter-thymeleaf

• spring-boot-starter-tomcat

• spring-boot-starter-velocity

• spring-boot-starter-web

• spring-boot-starter-websocket

• spring-boot-starter-ws

25

Page 26: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Spring Boot – „Hello World“-Class

26

Page 27: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 27

„Wie sieht bei 30 Deploys

pro Tag die

Rollback-Strategie aus?

Page 28: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 28

Page 29: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 29

Page 30: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 30

Page 31: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 31

Vertrauen Sie dem Backup und der Anwendung

nicht dem Rollback!

Page 32: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 32

“Chuck Norris does not deploy, he develops on the production environment.”

Page 33: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 33

DEV

Reviewer

Page 34: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 34

DEV

Reviewer

QA

Page 35: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 35

DEV

Reviewer

QA Monitoring

Prod server

Page 36: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 36

Page 37: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 37

Page 38: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 38

Page 39: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 39

Controller

ServiceImpl

Page 40: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 40

https://github.com/thorstenmaier/architecture-layer-check/

Controller

ServiceImpl

DaoImpl

Page 41: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 41

Page 42: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 42

(Service) - [DEPENDS_ON] -> (Controller)

Page 43: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 43

MATCH (s:Service)-[:DEPENDS_ON]->(c:Controller) return s,c

Page 44: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 44

Page 45: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 45

Wollen Sie das alles?

Page 46: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 46 46

Wollen Sie das alles?

Will Ihr Kunde das???

Page 47: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Dann benötigen wir

kontrollierte Änderungen

der Datenbank

ohne Downtime

47

Page 48: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Continuous Delivery ist genial

Wir müssen (fast) alles anders machen

Keine Downtime

DB kontrolliert ändern

48

DB kontrolliert ändern

Page 49: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Code und Datenbank müssen synchron bleiben

49

Page 50: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Kennen Sie das?

50

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

Page 51: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

2 Lösungsmöglichkeiten

hbm2ddl.auto=update

Manuelle SQL-Skripte

51

Page 52: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

hbm2ddl.auto=update?

52

Page 53: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

hbm2ddl.auto=update?

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

53

Page 54: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

2 Lösungsmöglichkeiten

hbm2ddl.auto=update

Manuelle SQL-Skripte

54

Page 55: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Manuelle SQL-Skripte

1.0 schema.sql

55

Page 56: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Manuelle SQL-Skripte

1.0 schema.sql

1.1 10_to_11.sql

56

Page 57: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Manuelle SQL-Skripte

1.0 schema.sql

1.1 10_to_11.sql

1.0.1 10_to_101.sql

101_to_11.sql

57

Page 58: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Manuelle SQL-Skripte

1.0 schema.sql

1.1 10_to_11.sql

1.0.1 10_to_101.sql

101_to_11.sql

1.0.2

101_to_102.sql

102_to_11.sql

58

Page 59: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Manuelle SQL-Skripte

1.0 schema.sql

1.1 10_to_11.sql

1.0.1 10_to_101.sql

101_to_11.sql

1.0.2

101_to_102.sql

102_to_11.sql

59

Page 60: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Eigentlich noch komplizierter

60

Page 61: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Die Lösung

61

Page 62: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Liquibase

62

Page 63: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Changelog.xml

63

Page 64: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Metadaten in der Datenbank

64

Page 65: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Liquibase beim Starten der Anwendung automatisch ausführen!

65

Page 66: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 66

Page 67: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 67

Warum nehmen wir eigentlich keine

schemalose NoSQL DB?

Page 68: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Relationale Datenbanken

skalieren nicht

Warum?

Normalisierung => Joins

Forderung nach Konsistenz => Transaktionen

68

Page 69: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

NoSQL =

Relationale Datenbank

- Transaktionen - Normalisierung - Joins - Konsistenz - hartes Schema

(+) Skalierung

(+) Performance

69

Page 70: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Datenmodellierung

70

• Relationale Datenbank

– Welche Antworten habe ich?

– Allgemeine Datenmodellierung für möglichst viele Fragenstellungen

• NoSQL

– Welche Frage möchte ich beantworten?

– Konkret für einen Anwendungsfall

– Denormalisierung und Duplizierung ist der Normalfall

Page 71: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Datenmodellierung in Key-Value-Stores

Index-Tabelle und Aggregation

71

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

1 John Doe, 1975-08-29, …

2 Richard Miles, 1982-03-14, …

Page 72: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Datenmodellierung in Key-Value-Stores

Zusammengesetzte Schlüssel

72

user:1:firstname John

user:1:lastname Doe

user:1:birthday 1975-08-29

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

Page 73: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Datenmodellierung: Reduktion der Dimension

73

Page 74: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 74

Nochmal Twitter

Viel Aktion beim Schreiben, wenig beim Lesen

300.000 reads/sec

6000 writes/sec

Page 75: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 75

Tweet speichern in Key-Value-Store

Page 76: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 76

Follower aus Graph-DB laden

Page 77: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 77

Tweet-ID in Key-Value-Store speichern

Page 78: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

The Architecture Twitter

78

{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 von

User 12?

12

17

123

Tweet wird unter der

ID 4711 eingetragen

Für jeden Follower

wird die Tweet-ID

in die Timeline

eingetragen

Page 79: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 79

Joins

Fluch oder Segen?

Page 80: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Document

80

http://docs.mongodb.org/manual/core/crud-introduction/

Page 81: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Collection

81

http://docs.mongodb.org/manual/core/crud-introduction/

Page 82: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Embedded Data Models

82

http://docs.mongodb.org/manual/core/data-model-design/

Page 83: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Normalized Data Models

83

http://docs.mongodb.org/manual/core/data-model-design/

Achtung:

Kein DB-seitiger JOIN möglich!

Page 84: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 84

NoSQL?

Ja, falls die Anforderungen passen!

Page 85: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Continuous Delivery ist genial

Wir müssen (fast) alles anders machen

Keine Downtime

DB kontrolliert ändern

85

Keine Downtime

Page 86: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Blue-Green-Deployment

86

Router

Blue Server

Green Server DB

Page 87: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH 87

Ersetze die Spalte Name

durch die Spalten

Vorname und Nachname

Page 88: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

1) Neue Version zum Schema hinzufügen

2) In beide Versionen schreiben

3) Historische Daten auffüllen

4) Von neuer Version lesen

5) Nicht mehr in die alte Version schreiben

88

Page 89: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

1) Neue Version zum Schema hinzufügen

2) In beide Versionen schreiben

3) Historische Daten auffüllen

4) Von neuer Version lesen

5) Nicht mehr in die alte Version schreiben

89

Page 90: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Datenbank Design © 2015 Orientation in Objects GmbH

Continuous Delivery ist genial

Wir müssen (fast) alles anders machen

Keine Downtime

DB kontrolliert ändern

90

Page 91: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

? ?

? ?

? Fragen ?

Page 92: It's time to rethink Datenbank-Design in der schönen neuen ... · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de – It's time to rethink –

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

Vielen Dank für ihre

Aufmerksamkeit !