Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
Continuous Database Design
Entwicklertag Karlsruhe
Mai 2017
2.0
Continuous Database Design© Orientation in Objects GmbH
Ihr Sprecher
2
Thorsten Maier
Trainer, Berater, Entwickler
Continuous Database Design© Orientation in Objects GmbH 3
Die Welt der Entwickler
Continuous Database Design© Orientation in Objects GmbH 4
Die Welt des Betriebs
Continuous Database Design© Orientation in Objects GmbH 5
Die Welt der Entwickler Die Welt des Betriebs
Continuous Database Design© Orientation in Objects GmbH 6
Continuous Delivery
Continuous Database Design© Orientation in Objects GmbH 7
Wann Continuous Delivery?
Schnelle Reaktion auf Anforderungsänderungen
Continuous Database Design© Orientation in Objects GmbH 8
Was brauchen wir dazu?
Automatisierung
Modularisierung
Continuous Database Design© Orientation in Objects GmbH 9
3 Bausteine
Continuous Database Design© Orientation in Objects GmbH
Anwendung mit 3 Bausteinen
10
Continuous Database Design© Orientation in Objects GmbH 11
Deployment auf einem Server
Anwendung mit 3 Bausteinen
Continuous Database Design© Orientation in Objects GmbH 12
Anwendung mit 3 Bausteinen
Baustein wird 4 mal benötigt
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
Continuous Database Design© Orientation in Objects GmbH 14
Unabhängige ArtefakteAnwendung mit 3 Bausteinen
Baustein wird 4 mal benötigt
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
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
Continuous Database Design© Orientation in Objects GmbH 17
Was brauchen wir noch?
Umdenken was ein Feature ist
30 Feature pro Tag?
Continuous Database Design© Orientation in Objects GmbH 18
Deploy ≠ Feature Launch
Continuous Database Design© Orientation in Objects GmbH 19
Wir brauchen noch mehr
Zustandslose Anwendung
Continuous Database Design© Orientation in Objects GmbH 20
RedisAPI
GATEWAY
@EnableRedisHttpSessionpublic class SpringSessionConfig {
@Beanpublic JedisConnectionFactory connectionFactory() {
return new JedisConnectionFactory();}
}
Continuous Database Design© Orientation in Objects GmbH 21
Wie viele Datenbanken haben wir eigentlich?
Eine? Mehrere?
Continuous Database Design© Orientation in Objects GmbH 22
DB
APIGATEWAY
Continuous Database Design© Orientation in Objects GmbH 23
DB
DB
APIGATEWAY
BoundedContext
Continuous Database Design© Orientation in Objects GmbH 24
Schemaänderungen
Wie ändern wir das Schema?
Continuous Database Design© Orientation in Objects GmbH 25
Continuous Database Design© Orientation in Objects GmbH 26
Continuous Database Design© Orientation in Objects GmbH 27
http://stackoverflow.com/questions/221379/hibernate-hbm2ddl-auto-update-in-production
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.“
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
Continuous Database Design© Orientation in Objects GmbH
Eigentlich noch komplizierter
30
Continuous Database Design© Orientation in Objects GmbH
Die Lösung
31
Continuous Database Design© Orientation in Objects GmbH
Liquibase
32
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>
Continuous Database Design© Orientation in Objects GmbH
Metadaten in der Datenbank
34
Continuous Database Design© Orientation in Objects GmbH
Liquibase aktualisiert
beim Starten der Anwendung
automatisch die Datenbank.
35
Continuous Database Design© Orientation in Objects GmbH 36
BEISPIEL
Continuous Database Design© Orientation in Objects GmbH 37
Ersetze die Spalte Name durch die Spalte
Vorname
Continuous Database Design© Orientation in Objects GmbH 38
Continuous Database Design© Orientation in Objects GmbH 39
DB
Wer ändert wann die DB?
It depends ;-)
Continuous Database Design© Orientation in Objects GmbH 40
Zu viele Köche
Ab einer gewissen Größe nur noch so! DB
DB
Continuous Database Design© Orientation in Objects GmbH 41
Warum nehmen wir eigentlich keine
schemalose NoSQL DB?
Continuous Database Design© Orientation in Objects GmbH
Relationale Datenbankenskalieren nicht
Warum?
Normalisierung => Joins
Forderung nach Konsistenz => Transaktionen
42
Continuous Database Design© Orientation in Objects GmbH
NoSQL=
Relationale Datenbank - Transaktionen - Normalisierung - Joins - Konsistenz - hartes Schema
(+) Skalierung
(+) Performance
43
Continuous Database Design© Orientation in Objects GmbH
Datenmodellierung NoSQL
Konkret für den Anwendungsfall
Denormalisierung und Duplizierung sind normal
44
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, …
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, …
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
Continuous Database Design© Orientation in Objects GmbH 48
01
23
Key
Key
0
Continuous Database Design© Orientation in Objects GmbH 49
Viel Aktion beim Schreiben,wenig beim Lesen
300.000 reads/sec6000 writes/sec
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!
Continuous Database Design© Orientation in Objects GmbH 51
NoSQL?
Falls die Anforderungen passen!
Anwendung kümmert sich um das „Schema“
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
? ?
??
?Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
Vielen Dank für ihre
Aufmerksamkeit !