NoSQL-Einsatzszenarien in transaktionalen Enterprise

Werbung
11.05.2015
NoSQL-Einsatzszenarien
in transaktionalen
Enterprise-Systemen
„Wir haben hier nur ein paar Java-Clients vor einem Host, wir profitieren nicht
von NoSQL in unserer Architektur." Falsch! Der Vortrag zeigt, dass es auch in
klassischen transaktionalen (ACID) Architekturszenarien Bedarf und Platz für
Optimierung durch nicht relationale Storages mit Support für ACIDTransaktionen gibt. Konzepte wie Caching, parallele Ausführung oder die
Unterstützung von MapReduce-Algorithmen können komplementäre Ansätze
von NoSQL-Storages sein, die auch im relational dominierten transaktionalen
Umfeld Vorteile erbringen.“
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 1.1
www.oio.de
[email protected]
Gliederung
•
Transaktionale Storages, NoSQL und das CAP-Theorem
•
Transaktionale NoSQL-Szenarien
•
Fallstudien
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
2
1
11.05.2015
„Klassische“ Enterprise-Vertreter
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
3
Relationale Datenbanken (RDBMS)
•
Organisation von Daten in zweidimensionalen Tabellen (Arrays)
– zeilenweise Speichern der Daten
– eindeutiger Primärschlüssel je Zeile
– einheitliche Datentypen in Zellen einer Spalte, jede Spalte hat
eindeutigen Namen (Schema)
•
Kontrollieren von parallelen Zugriffen über Transaktionen
•
Standardisiert: Im Kern sind alle relationalen DBs sehr ähnlich
– SQL, ...
– einer der Erfolgsgaranten
•
Fremdschlüsselbeziehungen, referentielle Integrität, Joins,
Indexierung, Trigger, Views, ...
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
4
2
11.05.2015
Was sind mögliche Probleme von klassischen
Enterprise-Storages?
Big Data (Bewegungsdaten)
Performance
Skalierung
Mobile Frontend-Anbindung
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
5
Scale-in vs. Scale-out
!?!?
Zisch ...
Vertikal skalieren
© 2015 Orientation in Objects GmbH
Horizontal skalieren
NoSQL in transaktionalen Enterprisesystemen
6
3
11.05.2015
These
Relationale Datenbanken skalieren in OOEntwicklungsszenarien nicht mehr
ausreichend.
Warum?
Was tun ?
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
7
NoSQL = kein SQL mehr?
SQL
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
8
4
11.05.2015
Nicht nur SQL!
Not only
NoSQL
SQL
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
9
NoSQL Datenbanken
•
•
•
Dokumentenorientierte Datenbanken
Graphendatenbanken
Key-Value-Stores
– Diskbasiert
– RAM-Cache
– Sortierte Key-Value-Stores
•
•
•
•
Eventually Consistent Stores
MultivalueDatenbanken
Objektdatenbanken
Spaltenorientierte Datenbank
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
10
5
11.05.2015
NoSQL – industrieerprobte Skalierbarkeit
Dynamo
BigTable
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
11
Nachteile
•
Vielfalt, kein gemeinsamer „Standard“ wie SQL
– Fehlendes Know-How
– Schwaches/spezifisches Tooling
•
Im Gegensatz zu SQL
– Eingeschränkte Querying-Möglichkeiten (Ad-hoc fixing?)
– Spezifische Reporting-Möglichkeiten (Ad-hoc reporting?)
•
Datenmigration kann schwieriger sein
– Unterschiedliche Technologien
– Unterschiedliche Konzepte
– Export-Funktionen unterschiedlich stark
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
12
6
11.05.2015
Probleme mit NoSQL
•
unübersichtlich, große Auswahl
•
sehr anwendungsfall-spezifisch
•
viel Bewegung im Markt
•
Schemalosigkeit
•
(In-) Konsistenz von Daten
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
13
CAP Theorem von Eric Brewer (2000)
Consistency
(Konsistenz)
C
A
Availability
(Verfügbarkeit)
P
Partition Tolerance
(Partitionstoleranz)
Nur zwei der Eigenschaften können gleichzeitig erfüllt sein,
nicht alle drei!
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
14
7
11.05.2015
Verfügbarkeit
Client
Client
Client
1. write
2.read
3. read
Storage
Storage
Storage
1.1synchronize
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
15
Konsistenz
Client
Client
Client
1.write
3. read
2. write
Storage
Storage
1.1 synchronize
© 2015 Orientation in Objects GmbH
Storage
2.1 synchronize
NoSQL in transaktionalen Enterprisesystemen
16
8
11.05.2015
Partitionstoleranz
Client
Client
Client
1.write
3. read
2. write
Storage
Storage
1.1 synchronize
© 2015 Orientation in Objects GmbH
Storage
2.1 synchronize
NoSQL in transaktionalen Enterprisesystemen
17
Konsistenz
Alle Knoten sehen zur gleichen
Zeit die gleichen Daten.
C
A
P
Strikte Konsistenz,
wenn sie sofort
sichergestellt ist (ACID).
Oder gewisses
Zeitfenster der
Inkonsistenz (BASE).
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
18
9
11.05.2015
Eventually Consistence
•
•
•
•
Daten sind irgendwann konsistent geschrieben
Bis dahin liefern Lesezugriffe nur eventuell konsistente Daten
Verwendung in NoSQL Datenbanken
Absichtlicher Verstoss gegen ACID
(Atomarität, Konsistenz, Isoliertheit und Dauerhaftigkeit)
Neue Nachricht wird
Knoten 1-3
Lesezugriff
Message,12:07
Client 1
© 2015 Orientation in Objects GmbH
um 13:12 geschrieben
Message,12:07
Message,13:12
Client 2
Message,12:07
Message,13:12
Client 3
NoSQL in transaktionalen Enterprisesystemen
19
Eventually Consistent – Konsequenzen ?
•
Strong consistency: ACID (Atomicity, Consistency, Isolation,
Durability)
•
Weak consistency: BASE (Basically Available, Soft-state, Eventual
consistency) – Availability first
•
= BASE vs. ACID ?
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
20
10
11.05.2015
Gliederung
•
Transaktionale Storages, NoSQL und das CAP-Theorem
•
Transaktionale NoSQL-Szenarien
•
Fallstudien
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
21
These
NOSQL
BASE- Storages
Datenmenge
NOSQL
CA-Storages
Scale in
klassische
CA-Storages
Durchsatz/Verfügbarkeit
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
22
11
11.05.2015
These
Relationale Datenbanken skalieren in OOEntwicklungsszenarien nicht mehr
ausreichend.
Warum?
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
23
Objektrelationale Unverträglichkeit (Impedance
Mismatch)
Objektorientierte
Sicht
Objektrelationales
Mapping (ORM)
Relationale
Sicht
JDBC
EJB (<= 2.1)
JDO
Hibernate
JPA
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
24
12
11.05.2015
Aufspalten des Aggregats auf Zeilen von Tabellen
orders
addresses
order lines
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
25
These
Relationale Datenbanken skalieren in OOEntwicklungsszenarien nicht mehr
ausreichend.
Warum?
Impedanzmismatch => Joins, viele lesende Transaktionen
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
26
13
11.05.2015
Große Clientanzahl/Verteilte Transaktionen
EIS
© 2015 Orientation in Objects GmbH
EIS
NoSQL in transaktionalen Enterprisesystemen
27
Große Clientanzahl/Verteilte Transaktionen
EIS
© 2015 Orientation in Objects GmbH
EIS
NoSQL in transaktionalen Enterprisesystemen
28
14
11.05.2015
These
Relationale Datenbanken skalieren in OOEntwicklungsszenarien nicht mehr
ausreichend.
Warum?
Impedanzmismatch => Joins, viele lesende Transaktionen
Große Anzahl von Clients
Lange (verteilte) Transaktionen
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
29
Applicationserver (not dead)
Applicationserver
EIS
© 2015 Orientation in Objects GmbH
EIS
NoSQL in transaktionalen Enterprisesystemen
30
15
11.05.2015
Key-Value Systeme - Vertreter
•
Redis
•
Amazon Dynamo und S3
•
Voldemort
•
Riak
•
Berkeley DB
•
MemcacheDB
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
31
Die beliebtesten Key-Value-Stores
2% 1%
3% 2%
1%
5%
3%
38%
5%
6%
8%
26%
Redis
Memcached
Riak
Ehcache
DynamoDB
Berkeley DB
SimpleDB
Hazelcast
Coherence
Oracle NoSQL
Infinispan
Sonstige
Quelle: http://db-engines.com, Stand: Januar 2014
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
32
16
11.05.2015
Java EE 7 Services
Java EE
JTA/JTS/
JCA
CDI/
Beanvalidation
Java Mail
Concurrency
Utils
JAX-RS
JPA
JBatch
JMS
Websocket
Enterprise
Application
JNDI
JAAS/JACC
/JSR196
JAXP
SAAJ
JDBC
Common
Annotations
© 2015 Orientation in Objects GmbH
JAX-WS
JAXB
JAF
NoSQL in transaktionalen Enterprisesystemen
33
Java EE Middleware
•
•
•
strenge Spezifikation einer Softwarearchitektur
transaktionsbasierte Ausführung von Java-Komponenten
auf transkaktionsbasiertem Konzept beruhende Teilstandards
– JTA/JCA/JPA/JMS/JDBC
•
Horizontale Skalierbarkeit der Anfragen innerhalb des
Lösungskonzepts für High Availability
– garantierte Antwortzeiten machbar
– Ausfall von Knoten kompensierbar
– (insbesondere gedacht für Web-Anwendungen)
•
Skalierung der Datenmenge problematisch
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
34
17
11.05.2015
Elastic Data Grid für Java EE
•
Niedrige Latenzzeit
– RAM 100fach schneller als Disk
•
•
Horizontal skalierbar
Elastisch
– Knoten können kontrolliert ein/ausgeschaltet werden
•
optionaler ACID Support
– Read Commited/Repeatable Read
•
Standardisiertes API –JSR 107(347)
Appserver
Data Grid
JSR 107
Servlet
JSR 107
EJB
Node 1
Node 1
JSF
Node 2
Node 2
JSR 107
RDBMS
Node 3
Node 3
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
35
Gliederung
•
Transaktionale Storages, NoSQL und das CAP-Theorem
•
Transaktionale NoSQL-Szenarien
•
Fallstudien
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
36
18
11.05.2015
JCACHE und Java EE Clustering
JEE
JEE
UI
UI
Application
Application
0./4. Query
0. Update
Data Access
Data Access
1. get
5. get
Cache
Cache
2. Read A
•
© 2015 Orientation in Objects GmbH
1.x Store A1
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
37
Architektur by Peer to Peer
•
Vollst.
Replikation
Distibuted Hash
Table
Ehcache
x
-
Hazelcast
-
x
Infinispan
x
x
Netzwerkprotokolle
–
–
–
–
Jgroups: Infinispan, Ehcache
UDP Multicast: bestandteil von Jgroups, standalone in Hazelcast
RMI: Ehcache
JMS: Ehcahe, Infinispan Near cache Invalidation
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
38
19
11.05.2015
Architektur by Client Server
Ehcache
Hazelcast
Infinispan
Hardware
Konfiguration in
Client-Server
Mode
x
-
-
Elastic
deployment in
Client-Server
Mode
-
x
x
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
39
Zusätzliche Features …
Off-Heap Memory
Ehcache
Hazelcast
Infinispan
x
x
-
Persistent Caches x
-
-
Full-Text Search
x
-
x
WAN Replication
x
x
???
Gui Tools
x
x
-
JMX Management x
x
x
Messaging and
Processing
x
-
© 2015 Orientation in Objects GmbH
-
NoSQL in transaktionalen Enterprisesystemen
40
20
11.05.2015
OR/M Integration
Java Virtual Machine
PersistenceManager
Anwendung
1.Level Cache
Instanz
Instanz
Instanz
Transient
Transaction
Connection
Transient
QueryFacility
Transient
Transient
Transient
DB
2.Level Cache
Entity Cache
QueryCache
Instanz
Instanz
Instanz
Instanz
Timestamp
Cache
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
41
Caching – Second Level Cache
Second-Level Cache
Cache Concurrency Strategie
Class Cache
Region
„
© 2015 Orientation in Objects GmbH
Cache Provider
Collection Cache
Region
„
Physical Cache
Query cache
Query Cache
Region
Update
Timestamp
NoSQL in transaktionalen Enterprisesystemen
42
21
11.05.2015
Caching – Second Level Cache
•
•
•
•
Applikationsweiter Cache
Provider spezifische Implementierung
clusterfähig
Evt. Dateiauslagerung
1Lvl Cache
EntityManager
2nd Level Cache
Datenbank
EntityManager
1Lvl Cache
© 2015 Orientation in Objects GmbH
Filesystem
NoSQL in transaktionalen Enterprisesystemen
43
Query Cache
Applikation
from Person p where p.name = :name
Query Cache
Key:select * from Person where NAME= ‚MAIER‘
Value: 1, 25
ID
VORNAME NAME
1
Thorsten
Maier
2
Ben
Bartho
25
Tobias
Maier
© 2015 Orientation in Objects GmbH
- 18:12.2014 15:14:45:01
Timestamp
NoSQL in transaktionalen Enterprisesystemen
44
22
11.05.2015
Query Cache
Applikation
from Person p where p.name = :name
Query Cache
Key:select * from Person where NAME= ‚MAIER‘
Update Person
Value: 1, 25
- 18:12.2014 15:14:45:01
Check for updates
ID
ID
1
1
VORNAME
VORNAME
Thorsten
Thorsten
NAME
NAME
Maier
Maier
2
2
25
25
Ben
Ben
Tobias
Tobias
Bartho
Bartho
Kieninger
Maier
Timestamp
Update
© 2015 Orientation in Objects GmbH
18:12:2014 15:45:54:13 - Person
NoSQL in transaktionalen Enterprisesystemen
45
NoSQL in transaktionalen Enterprisesystemen
46
Functional Caching
JEE
UI
Application
0./5. call
Data Access
1. get
6. get
Cache
2. call
Function Modul
© 2015 Orientation in Objects GmbH
23
11.05.2015
Functional Caching
JEE
UI
4.1 invalidate
Application
0./5. call
Data Access
Function Modul
1. get
6. get
Cache
2. call
4. update
Secondary
Storage
Function Modul
2.X query
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
47
Functional Caching
JEE
UI
Application
0./5. call
0.1 /5.1 call
Data Access
1. get
6. get
Cache
Secondary
Storage
2.call
Modul A
Modul B
2.X query/update
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
48
24
11.05.2015
Distributed Cache I
JEE
JEE
JEE
Cache
Cache
UI
Application
0./4. Query
Data Access
5. put
2. get
Cache
3./6. load/Store
•
© 2015 Orientation in Objects GmbH
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
49
Distributed Cache II
JVM
Application
Data Access
JVM
JVM
Cache
Cache
Load/Store
© 2015 Orientation in Objects GmbH
•
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
50
25
11.05.2015
Distributed Cache – Data Grid
JVM
Application
Data Access
JVM
JVM
JVM
JVM
Cache
Cache
Cache
Cache
•
© 2015 Orientation in Objects GmbH
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
51
Hashing Algorithmus
•
z.B. basierend auf „consistent hashing“/Amazon Dynamo Paper
•
Key Space in mehreren Segmenten(Anzahl Segmente ist
konfigurierbar)
•
Jedes Hash Segment ist gemapped auf eine Menge von
Knoten(owners)
– Reihenfolge ist wichtig.
– Primary owner hat spezielle Aufgaben bei vielen Operationen(z.B: Locking)
– Andere Knoten heißen backup owners
•
Ausgleich der Anzahl Segmente auf den Knoten
•
Minimierung der Anzahl der Segmente, die sich bewegen müssen falls:
– Neuer Knoten zum Cluster hinzukommt
– Bestehender Knoten Cluster verlässt
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
52
26
11.05.2015
Hashing Algorithmus
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
53
Distributed Cache Execution Konzept
JVM
Application
Data Access
update
query
JVM
JVM
Cache
Cache
Load/Store
•
© 2015 Orientation in Objects GmbH
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
54
27
11.05.2015
Distributed Cache Execution Konzept
•
Execution Code (Callable)….
– auf einem a spezifischen explizit gewählten cluster knoten
• Anwendungsspezifische Algorithmik
– auf dem cluster knoten dem der Key zugeordnet ist (with lockid)
• datenlokale Verarbeitung
– auf einem vom cache gewählten cluster knoten (without lockid)
• resourcenoptimale Verarbeitung
– auf allen Knoten bzw. einem Subset
• Massenverarbeitung
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
55
Execution on Key Owner example(Hazelcast)
Callable<String> task = new Command(input);
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IExecutorService executorService = hz.getExecutorService("default");
Future<String> future = executorService.submitToKeyOwner(task, key);
String commandResult = future.get();
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
56
28
11.05.2015
Distributed Cache Execution als LB Strategy
Distributed
Cache
Node1
lock 1 |
lock 2 |
Weblayer
submitToKeyOwner
(lock 1)
command
autodetection
Node 2
lock 3 |
lock 4 |
lock 5 |
Die Ausführung erfolgt auf
den Knoten welcher den Key
hält
© 2015 Orientation in Objects GmbH
DB
NoSQL in transaktionalen Enterprisesystemen
57
Distributed Execution Webscaling – key =
SessionID
JEE
JEE
JEE
JEE
JEE
JEE
Application
Application
Application
Application
Application
Application
Data Access
Data Access
Data Access
Data Access
Data Access
Data Access
JEE
JEE
JEE
JEE
JEE
JEE
Application
Application
Application
Application
Application
Application
Data Access
Data Access
Data Access
Data Access
Data Access
Data Access
JEE
JEE
JEE
JEE
JEE
JEE
Application
Application
Application
Application
Application
Application
Data Access
Data Access
Data Access
Data Access
Data Access
Data Access
JVM
JVM
JVM
JVM
Cache
Cache
Cache
Cache
•
© 2015 Orientation in Objects GmbH
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
58
29
11.05.2015
Distributed Execution Layered Update – key =
SessionID
JEE
JEE
JEE
JEE
JEE
JEE
Application V2
Application V2
Application V2
Application V2
Application V2
Application V2
Data Access
Data Access
Data Access
Data Access
Data Access
Data Access
JEE
JEE
JEE
JEE
JEE
JEE
Application
Application
Application
Application
Application
Application
Data Access
Data Access
Data Access
Data Access
Data Access
Data Access
JEE
JEE
JEE
JEE
JEE
JEE
Application
Application
Application
Application
Application
Application
Data Access
Data Access
Data Access
Data Access
Data Access
Data Access
JVM
JVM
JVM
JVM
Cache
Cache
Cache
Cache
•
© 2015 Orientation in Objects GmbH
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
59
Mehr von OIO zum Thema…
•
Schulung: NoSQL mit Java im Überblick
• http://www.oio.de/seminar/entscheider/training-nosql-schulungdatenbank-seminar-einfuehrung-kurs.htm
•
Java Persistence Performance Tuning (Datenbank Performance)
• http://www.oio.de/seminar/java/training-datenbank-kurs-performanceschulung.htm
•
Schulung: Java im Web für Architekten
• http://www.oio.de/seminar/entscheider/training-architekten-schulungjava-seminar-web-kurs.htm
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
60
30
11.05.2015
? ?
?
? ?
? ?
?
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
61
Vielen Dank für ihre
Aufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
31
Herunterladen