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]