Your SlideShare is downloading. ×
0
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Infinispan - NoSQL für den Enterprise Java Alltag

258

Published on

Vortrag auf dem Expertenkreis Java von …

Vortrag auf dem Expertenkreis Java von
Christian Dedek, Orientation in Objects GmbH

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
258
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Infinispan - NoSQL für den Enterprise Java Alltag Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.2 www.oio.de info@oio.de
  • 2. Ihr Sprecher Christian Dedek Trainer, Berater, Entwickler Schwerpunkte Softwarearchitektur Qualitätsmanagement Performanceoptimierung © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 2
  • 3. Gliederung • NoSQL und Java EE • Infinispan • Integrationsszenarien • Ausblick © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 3
  • 4. Gliederung • NoSQL und Java EE • Infinispan • Integrationsszenarien • Ausblick © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 4
  • 5. NoSQL vs. Java EE • NoSQL – – – – Datenspeicher ohne festgelegte Tabellenschemata skalieren horizontal keine strenge Spezifikation( viele gut diskutierte/erprobte Konzepte) viele Implementierungen auf verschiedenen Konzepten basierend • Java EE – strenge Spezifikation einer Softwarearchitektur – transaktionsbasierte Ausführung von Java-Komponenten – auf transkaktionsbasiertem Konzept beruhende Teilstandards • JTA/JCA/JPA/JMS/JDBC – Horizontale Skalierung als Konzept für High Availability • Antwortzeiten • Ausfall von Knoten – (insbesondere gedacht für Web-Anwendungen) © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 5
  • 6. NoSQL • Dokumentenorientierte Datenbanken • Graphendatenbanken • Key-Value-Stores – Diskbasiert – RAM-Cache – Sortierte Key-Value-Stores • • • • Eventually Consistent Stores MultivalueDatenbanken Objektdatenbanken Spaltenorientierte Datenbank © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 6
  • 7. CAP-Theorem (nach E. Brewer PODC Symposium 2000) • Consistency – roughly meaning that all clients of a data store get responses to requests that ‘make sense’. For example, if Client A writes 1 then 2 to location X, Client B cannot read 2 followed by 1. • Availability – all operations on a data store eventually return successfully. We say that a data store is ‘available’ for, e.g. write operations. • Partition tolerance – “The network will be allowed to lose arbitrarily many messages sent from one node to another” – if the network stops delivering messages between two sets of servers, will the system continue to work correctly? © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 7
  • 8. CAP Theorem und JTA Consistency JTA JTA n.a. Availability Partion Tolerance BASE © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 8
  • 9. Data Grid vs. Distributed DBMS Consistency Data Grid Distributed DBMS n.a. Availability Partion Tolerance BASE © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 9
  • 10. JSR 107(347) Elastic Data Grid für Java EE Appserver Data Grid JSR 107 Servlet JSR 107 Node 1 EJB Node 1 Node 2 JSR 107 Secondary Store JSF Node 2 Node 3 Node 3 © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 10
  • 11. JSR 107 API - Standard für einen Distributed HashTable • Distributed HashTable – javax.cache.Cache • ähnlich java.util.ConcurrentMap • Managementschnittstellen – javax.cache.CacheManager – javax.cache..CacheListener • Annotationen z.B. – @CacheResult,@CacheKeyParam,@CacheRemove. © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 11
  • 12. javax.cache.CacheLoader JEE Application 1. Get Cache CacheLoader 2. load • Secondary Store © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 12
  • 13. javax.cache.CacheWriter JEE Application 1. Put Cache CacheWriter 2. store • Secondary Store © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 13
  • 14. Expiration get Cache Y M X I put D F © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 14
  • 15. Gliederung • NoSQL und Java EE • Infinispan • Integrationsszenarien • Ausblick © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 15
  • 16. Infinispan • Key-Value-Store – – – – Distributed HashTable(JSR 107/347) Transactional (JTA) Low-latency (RAM) Optional persist to disk • Open Source Data Grid Plattform (LGPL) – JBoss/Red Hat • Java and Scala • Nicht nur für die JVM gedacht • in verschiedenen Modi einsetzbar – Embedded – Client/Server(Data Grid) © 2014 Orientation in Objects GmbH Consistency Infinispan n.a. Availability Distributed DBs Partion Tolerance BASE Infinispan - NoSQL für den Enterprise Java Alltag 16
  • 17. Demo © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 17
  • 18. Local Embedded Mode JEE UI Application 0./3. Query Data Access 1. get 4. Read Cache 2. Read Secondary Store © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 18
  • 19. Local Embedded Mode II • Code in der gleiche VM wie infinispan • wenig Konfigurationsarbeit – Mit default Einstellungen DefaultCacheManager cacheManager = new DefaultCacheManager(); Cache<String, String> cache = cacheManager.getCache(); – Mit eigenen Einstellungen z.B: Clustereinstellungen DefaultCacheManager cacheManager = new DefaultCacheManager(„cluster.xml"); Cache<String, String> cache = cacheManager.getCache(); © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 19
  • 20. Infinispan 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 © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 20
  • 21. Clustered Embedded Mode JEE JEE JEE UI UI UI Application Application Application 0./4. Query Data Access 5. put n. n+k. Data Access Data Access Cache Cache 2. get Cache 3./6. load/Store • Secondary Store © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 21
  • 22. Demo © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 22
  • 23. Replication JEE JEE JEE Application Application Application 0. query Data Access Data Access Data Access 2. Put © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag
  • 24. Invalidation JEE JEE JEE Application Application Application 0. query 3. query Data Access 4. get Data Access Data Access 1. Put Cache © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 24
  • 25. Distribution [numOwner=2] JEE JEE JEE Application Application Application 0. query Data Access Data Access Data Access 2. get Cache © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 25
  • 26. Client/Server Mode JEE JSE Non Java Application Application Application Data Access Data Access Plenty Hotrod JVM JVM Cache Cache memcached Load/Store • © 2014 Orientation in Objects GmbH Secondary Store Infinispan - NoSQL für den Enterprise Java Alltag 26
  • 27. Demo © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 27
  • 28. Client/Server Mode II • Starten des Servers erfordert die Angabe des Protokolls – bin/clustered.sh -Djboss.socket.binding.port-offset=xxx Djboss.node.name=nodeX • org.infinispan.client.hotrod.RemoteCacheManager RemoteCacheManager rcm = new RemoteCacheManager("192.168.3.120"); RemoteCache remoteCace = rcm.getCache(); String key = "hello"; remoteCace.put(key, "world"); © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 28
  • 29. Client/Server Remoting Remote Endpoint Protokoll Smart Routing Load Balancing Memcached Text - Vordefinierte Liste ReSTful Text - http Loadbalancer HotRod Binary + Dynamische Topologie JEE Application Groovy Application Data Access Data Access JVM Cache © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 29
  • 30. CacheStore JEE Application 1. Put Cache CacheStore 2. store • Secondary Store © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 30
  • 31. Eviction get Cache Y M X D F I put Memorymeter © 2014 Orientation in Objects GmbH Strategie z.B. LRU Infinispan - NoSQL für den Enterprise Java Alltag 31
  • 32. Storage JPA Cache Store • Implementierung mit JPA 2 • Speicherung mit applikationsspezifischem Datenmodell • Key muss Primärschlüssel der Entität sein – @Id, @EmbeddedId • Keine generierten Ids Cache<String, User> usersCache = cacheManager.getCache("myJPACache"); // configured for User entity class usersCache.put(„Gosling_James", new User()); Cache<Integer, Teacher> teachersCache = cacheManager.getCache("myJPACache"); // cannot do this when this cache is configured to use a JPA cache store teachersCache.put(1, new Teacher()); © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 32
  • 33. Storage JPA Cache Store <namedCache name=„ myJPACache"> <loaders passivation="false" shared="true" preload="true"> <jpaStore persistenceUnitName="org.infinispan.loaders.jpa.confi gurationTest" entityClassName="org.infinispan.loaders.jpa.entity.Us er" /> </loaders> </namedCache> © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 33
  • 34. Gliederung • NoSQL und Java EE • Infinispan • Integrationsszenarien • Ausblick © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 34
  • 35. DI-Container Integration © 2014 Orientation in Objects GmbH CacheStore Cache DAO Service TransactionIntereptor RemoteConnector DI Container Infinispan - NoSQL für den Enterprise Java Alltag 35
  • 36. Spring Integration • Spring 3.1 Cache Abstraktion • Infinispan Provider • Integration mit Spring DI für CacheManager und Cache <bean id="cacheManager" class="org.infinispan.spring.provider.SpringEmbeddedCacheManagerF actoryBean" p:configurationFileLocation="classpath:META-INF/oio-infinispanconfig.xml"> </bean> • Aktivieren des Cache – <cache:annotation-driven /> © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 36
  • 37. Spring Integration • Cache Annotation @Cacheable("nachrichtenCache") public List<Nachricht> findAlleUngeleseneNachrichten() {…} @Cacheable("nachrichtenCache", key=#"projektId") public List<Nachricht> findNachrichtenFuerProjekt(BigInteger projektId) {…} • Deklarative Eviction @CacheEvict(value = "nachrichtenCache", allEntries = true) public void nachrichtMarkieren(BigInteger nachrichtId, boolean ungelesen) {…} © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 37
  • 38. CDI • Konfiguration und Injizierung des Infinispan Cache – Cache Injizierung @Inject private Cache<String, String> cache; @Inject RemoteCache<String, String> remoteCache; • Partielle Unterstützung vom JSR 107 Annotationen © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 38
  • 39. CDI • Eigene Cache Qualifier @javax.inject.Qualifier @Target({ElementType.FIELD, ElementType.PARAMETER, ElementType. METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface NachrichtenCache {} public class CacheCreator { @ConfigureCache("nachrichtencache") // cache name. @NachrichtenCache // cache qualifier. @Produces public Configuration specialCacheCfg() { return new ConfigurationBuilder() .eviction() .strategy(EvictionStrategy.LRU) .maxEntries(10) .build(); } } © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 39
  • 40. CDI • Injizierung des eigenen Caches public class MyCDIComponent { @Inject @NachrichtenCache Cache<String, String> nachrichtenCache; } © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 40
  • 41. OR/M Integration Java Virtual Machine PersistenceManager Anwendung Transient 1.Level Cache Instanz Instanz Instanz Transient Transient Transient Transient Transaction Connection QueryFacility DB 2.Level Cache Entity Cache Instanz Instanz Instanz Instanz © 2014 Orientation in Objects GmbH QueryCache Timestamp Cache Infinispan - NoSQL für den Enterprise Java Alltag 42
  • 42. Hibernate 2nd Level Cache • Entity Cache – Key der Primärschlüssel – Cache lokal(default) oder repliziert – Replizierter Cache nicht empfohlen • Query Cache – Key ist query-name und Parameter Hash – Cache lokal(default) oder repliziert • Timestamps Cache – asynchrone Replikation(default) – keine eviction/expiration © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 43
  • 43. Hibernate second level cache • JTA Transaktion Manager – Hibernate soll/muss JTA Manager nutzen. <property name="hibernate.cache.use_second_level_cache" value="true"/> <property name="hibernate.cache.use_query_cache" value="true"/> <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.InfinispanRegionFactory"/ > <property name="hibernate.cache.infinispan.cfg" value="/oioinfinispan-config.xml"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTSStandaloneTransactionMa nagerLookup"/> © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 44
  • 44. Gliederung • NoSQL und Java EE • Infinispan • Integrationsszenarien • Ausblick © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 45
  • 45. Infinispan Ausblick • Map/Reduce Support • Versioned Entries • Support Eventual Consistency (7.0 ?) • Optimierungen: – Transaktionen – Locking – RPC © 2014 Orientation in Objects GmbH Infinispan - NoSQL für den Enterprise Java Alltag 46
  • 46. ? ? ? ? ? Fragen ? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de 47
  • 47. Vielen Dank für ihre Aufmerksamkeit ! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de

×