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