NoSQL Einsatzszenarien in transaktionalen

Werbung
NoSQL-Einsatzszenarien
in der transaktionalen
Enterprise-IT
Wir haben hier nur ein in Java implementierte Frontends vor einer
hostbasierten Businesslogic, wir profitieren nicht von NoSQL in unserer
Architektur.' - Falsch!
Die Session demonstriert Szenarien in denen auch in klassischen
transaktionalen(ACID) Architekturen Bedarf und Platz für Optimierung durch
nichtrelationale Storages mit Support für ACID-Transaktionen besteht.
Caching, parallele Ausführung oder die Unterstützung von MapReduceAlgorithmen werden als komplementäre Konzepte von NoSQL-Storages
gezeigt, die auch im relational dominierten transaktionalen Umfeld
Orientation in Objects GmbH
Optimierungsoptionen bieten.
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
„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
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
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?
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
8
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
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
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
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
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
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
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
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
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
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
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
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
31
Key-Value Systeme - Vertreter
• Redis
• Amazon Dynamo und S3
• Voldemort
• Riak
• Berkeley DB
• MemcacheDB
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
32
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
33
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
34
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
35
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
36
Gliederung
• Transaktionale Storages, NoSQL und das CAP-Theorem
• Transaktionale NoSQL-Szenarien
• Fallstudien
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
37
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
1.x Store A1
• Secondary Store
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
38
Architektur by Peer to Peer
Vollst.
Replikation
Distributed 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
39
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
40
Zusätzliche Features …
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
-
Off-Heap Memory
© 2015 Orientation in Objects GmbH
-
NoSQL in transaktionalen Enterprisesystemen
41
OR/M Integration
Java Virtual Machine
PersistenceManager
Anwendung
Transient
1.Level Cache
Instanz
Instanz
Instanz
Transient
Transient
Transient
Transient
© 2015 Orientation in Objects GmbH
Transaction
Connection
QueryFacility
DB
2.Level Cache
Entity Cache
QueryCache
Instanz
Instanz
Instanz
Instanz
Timestamp
Cache
NoSQL in transaktionalen Enterprisesystemen
42
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
43
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
© 2015 Orientation in Objects GmbH
Timestamp
Update
18:12:2014 15:45:54:13 - Person
NoSQL in transaktionalen Enterprisesystemen
44
Functional Caching
JEE
UI
Application
0./5. call
Data Access
1. get
6. get
Cache
2. call
Function Modul
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
45
Functional Caching
JEE
UI
4.1 invalidate
Application
0./5. call
Data Access
1. get
6. get
Cache
Function Modul
2. call
4. update
Secondary
Storage
Function Modul
2.X query
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
46
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
47
Distributed Cache I
JEE
JEE
JEE
Cache
Cache
UI
Application
0./4. Query
Data Access
5. put
2. get
Cache
3./6. load/Store
• Secondary Store
© 2015 Orientation in Objects GmbH
NoSQL in transaktionalen Enterprisesystemen
48
Distributed Cache II
JVM
Application
Data Access
JVM
JVM
Cache
Cache
Load/Store
© 2015 Orientation in Objects GmbH
•
Secondary Store
NoSQL in transaktionalen Enterprisesystemen
49
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
50
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
51
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
52
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
53
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
54
Distributed Cache Execution als LB Strategy
Distributed
Cache
Node1
lock 1 |
lock 2 |
Weblayer
command
submitToKeyOwner
(lock 1)
autodetection
Die Ausführung erfolgt auf
den Knoten welcher den Key
hält
© 2015 Orientation in Objects GmbH
DB
Node 2
lock 3 |
lock 4 |
lock 5 |
NoSQL in transaktionalen Enterprisesystemen
55
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
56
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
57
? ? ?
?
?
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
58
Vielen Dank für ihre
Aufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
Herunterladen