02.03.2015 NoSQL in transaktionalen Enterprisesystemen „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 nichtrelationale 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 02.03.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 02.03.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 02.03.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 02.03.2015 Nicht nur SQL! Not only NoSQL SQL © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 9 Einfache Formel NoSQL = Relationale Datenbank - Transaktionen - Normalisierung - Joins - Konsistenz - hartes Schema (+) Skalierung (+) Performance © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 10 5 02.03.2015 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 11 NoSQL – industrieerprobte Skalierbarkeit Dynamo BigTable © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 12 6 02.03.2015 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 13 NoSQL in transaktionalen Enterprisesystemen 14 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 7 02.03.2015 CAP Theorem von Eric Brewer (2000) Consistency (Konsistenz) C A P Partition Tolerance Availability (Partitionstoleranz) (Verfügbarkeit) Nur zwei der Eigenschaften können gleichzeitig erfüllt sein, nicht alle drei! © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 15 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 16 8 02.03.2015 Konsistenz Client Client Client 1.write 3. read 2. write Storage Storage 1.1 synchronize Storage 2.1 synchronize © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 17 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 18 9 02.03.2015 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 19 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 20 10 02.03.2015 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 21 Gliederung • Transaktionale Storages, NoSQL und das CAP-Theorem • Transaktionale NoSQL-Szenarien • Fallstudien © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 22 11 02.03.2015 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 23 These Relationale Datenbanken skalieren in OOEntwicklungsszenarien nicht mehr ausreichend. Warum? © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 24 12 02.03.2015 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 25 Aufspalten des Aggregats auf Zeilen von Tabellen orders addresses order lines © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 26 13 02.03.2015 These Relationale Datenbanken skalieren in OOEntwicklungsszenarien nicht mehr ausreichend. Warum? Impedanzmismatch => Joins, viele lesende Transaktionen © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 27 Große Clientanzahl/Verteilte Transaktionen EIS © 2015 Orientation in Objects GmbH EIS NoSQL in transaktionalen Enterprisesystemen 28 14 02.03.2015 Große Clientanzahl/Verteilte Transaktionen EIS © 2015 Orientation in Objects GmbH EIS NoSQL in transaktionalen Enterprisesystemen 29 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 30 15 02.03.2015 Applicationserver (not dead) Applicationserver EIS © 2015 Orientation in Objects GmbH EIS NoSQL in transaktionalen Enterprisesystemen 31 Gliederung • Transaktionale Storages, NoSQL und das CAP-Theorem • Transaktionale NoSQL-Szenarien • Fallstudien © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 32 16 02.03.2015 NoSQL CA-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 33 Graph-DB Konzept Node Node ID 12 ID 47 username jdoe username smith birthday 1975 1975-08-01 01 Node ID © 2015 Orientation in Objects GmbH 123 NoSQL in transaktionalen Enterprisesystemen 34 17 02.03.2015 Kernelemente • Fokussiert auf Beziehungen • verschiedene Abfragemöglichkeiten • verwendet ACID • Skalierung begrenzt © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 35 Die beliebtesten Graph-Datenbanken 7% 7% 9% Neo4j OrientDB Titan Sonstige 77% Quelle: http://db-engines.com, Stand: Januar 2014 © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 36 18 02.03.2015 Graphen bestehen aus Person • Knoten • Beziehungen • Eigenschaften • Labels Dieter Develop gehalt: 1000 steuer: IV hat angestellt am: 01.01.99 arbeitet bei seit: 01.01.99 Person Bernd Boss alter:48 geschlecht: M geführt Firma gehört OIO gegründet: 1998 Sitz: Mannheim © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 37 NoSQL in transaktionalen Enterprisesystemen 38 Suchen von Mustern © 2015 Orientation in Objects GmbH 19 02.03.2015 Key-Value Systeme - Vertreter • Redis • Amazon Dynamo und S3 • Voldemort • Riak • Berkeley DB • MemcacheDB © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 39 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 40 20 02.03.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 41 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 42 21 02.03.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 Node 2 JSF Node 2 JSR 107 RDBMS Node 3 Node 3 © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 43 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 44 22 02.03.2015 OR/M Integration Java Virtual Machine PersistenceManager Anwendung 1.Level Cache Instanz Instanz Instanz Transient Transient Transaction Connection 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 45 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 46 23 02.03.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 47 NoSQL in transaktionalen Enterprisesystemen 48 Functional Caching JEE UI Application 0./5. call Data Access 1. get 6. get Cache 2. call Function Modul © 2015 Orientation in Objects GmbH 24 02.03.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 49 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 50 25 02.03.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 51 Distributed Cache II JVM Application Data Access JVM JVM Cache Cache Load/Store © 2015 Orientation in Objects GmbH • Secondary Store NoSQL in transaktionalen Enterprisesystemen 52 26 02.03.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 53 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 54 27 02.03.2015 Hashing Algorithmus © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 55 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 56 28 02.03.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 57 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 58 29 02.03.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 59 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 60 30 02.03.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 61 ? ? ? ? ? ? ? ? Fragen ? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] 31 02.03.2015 Folien zum Vortrag • Die Folien werden auf unserer Website veröffentlicht – http://oio.de/tiny/orientierungspunkt-archiv © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 63 Kommende Orientierungspunkte • Spring Boot Freitag, 27. März 2015 - 17:00-18:00 Uhr • Pipelines zeichnen ist nicht schwer, Pipelines bauen dagegen... Freitag, 24. April 2015 - 17:00-18:00 Uhr © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 32 02.03.2015 Vielen Dank für ihre Aufmerksamkeit ! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] TODO Wrap up Impedanz mistmatch - Graphendatenbanken ? - Neu (Query alngugage) wenig anbieter + Modellierung Aldtanbestände 2nd level - Naiver Ansatz - Begrenzter Nutzen - 3 Probleme - Functional - Distributed Execution © 2015 Orientation in Objects GmbH NoSQL in transaktionalen Enterprisesystemen 66 33