SlideShare ist ein Scribd-Unternehmen logo
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
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
Gliederung

• NoSQL und Java EE
• Infinispan
• Integrationsszenarien
• Ausblick

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

3
Gliederung

• NoSQL und Java EE
• Infinispan
• Integrationsszenarien
• Ausblick

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

4
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
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
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
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
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
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
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
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
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
Expiration

get

Cache
Y
M

X

I

put

D

F

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

14
Gliederung

• NoSQL und Java EE
• Infinispan
• Integrationsszenarien
• Ausblick

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

15
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
Demo

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

17
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
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
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
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
Demo

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

22
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
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
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
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
Demo

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

27
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
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
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
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
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
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
Gliederung

• NoSQL und Java EE
• Infinispan
• Integrationsszenarien
• Ausblick

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

34
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
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
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
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
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
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
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
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
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
Gliederung

• NoSQL und Java EE
• Infinispan
• Integrationsszenarien
• Ausblick

© 2014 Orientation in Objects GmbH

Infinispan - NoSQL für den Enterprise Java Alltag

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
? ? ?
?
?
Fragen ?

Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
info@oio.de

47
Vielen Dank für ihre
Aufmerksamkeit !

Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
info@oio.de

Weitere ähnliche Inhalte

Was ist angesagt?

Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12c
Ileana Somesan
 
Nosql Hintergründe und Anwendungen
Nosql Hintergründe und AnwendungenNosql Hintergründe und Anwendungen
Nosql Hintergründe und Anwendungen
Andy Whole
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Karin Patenge
 
Einblicke in Zend Server Cluster Manager
Einblicke in Zend Server Cluster ManagerEinblicke in Zend Server Cluster Manager
Einblicke in Zend Server Cluster Manager
Zend by Rogue Wave Software
 
Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS
esentri AG
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
luckec
 
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-ApplikationenPRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
luckec
 
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Trivadis
 
Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016
Digicomp Academy AG
 

Was ist angesagt? (9)

Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12c
 
Nosql Hintergründe und Anwendungen
Nosql Hintergründe und AnwendungenNosql Hintergründe und Anwendungen
Nosql Hintergründe und Anwendungen
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
Einblicke in Zend Server Cluster Manager
Einblicke in Zend Server Cluster ManagerEinblicke in Zend Server Cluster Manager
Einblicke in Zend Server Cluster Manager
 
Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-ApplikationenPRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen
 
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
 
Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016
 

Andere mochten auch

Leichtgewichtige Microservices mit Java EE 7
Leichtgewichtige Microservices mit Java EE 7Leichtgewichtige Microservices mit Java EE 7
Leichtgewichtige Microservices mit Java EE 7
gedoplan
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
gedoplan
 
CDI
CDICDI
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
gedoplan
 
Spring Boot
Spring BootSpring Boot
Spring Boot
gedoplan
 
Testen im EE-Umfeld – Seien Sie feige!
Testen im EE-Umfeld – Seien Sie feige!Testen im EE-Umfeld – Seien Sie feige!
Testen im EE-Umfeld – Seien Sie feige!
gedoplan
 
Speeding up Java Persistence
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistence
gedoplan
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0
gedoplan
 
Neuerungen in JavaServer Faces 2.0
Neuerungen in JavaServer Faces 2.0Neuerungen in JavaServer Faces 2.0
Neuerungen in JavaServer Faces 2.0
gedoplan
 
What's new in Java EE 7
What's new in Java EE 7What's new in Java EE 7
What's new in Java EE 7
gedoplan
 
Photo talk
Photo talkPhoto talk
Photo talk
JAMAATON
 
Java Persistence in Action – Einsatz von JPA 2.x in Java-EE-Anwendungen
Java Persistence in Action – Einsatz von JPA 2.x in Java-EE-AnwendungenJava Persistence in Action – Einsatz von JPA 2.x in Java-EE-Anwendungen
Java Persistence in Action – Einsatz von JPA 2.x in Java-EE-Anwendungen
gedoplan
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
gedoplan
 
Sonas Housing Annual Review 2011
Sonas Housing Annual Review 2011Sonas Housing Annual Review 2011
Sonas Housing Annual Review 2011
Sonas_Housing
 
Jpa queries
Jpa queriesJpa queries
Jpa queries
gedoplan
 
Kernel Masters inauguration slideshare
Kernel Masters inauguration slideshareKernel Masters inauguration slideshare
Kernel Masters inauguration slideshare
Kernel Masters
 
Java Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's StapelnJava Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's Stapeln
gedoplan
 
KM Placement Assistance Program
KM Placement Assistance ProgramKM Placement Assistance Program
KM Placement Assistance Program
Kernel Masters
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
gedoplan
 

Andere mochten auch (19)

Leichtgewichtige Microservices mit Java EE 7
Leichtgewichtige Microservices mit Java EE 7Leichtgewichtige Microservices mit Java EE 7
Leichtgewichtige Microservices mit Java EE 7
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
 
CDI
CDICDI
CDI
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Testen im EE-Umfeld – Seien Sie feige!
Testen im EE-Umfeld – Seien Sie feige!Testen im EE-Umfeld – Seien Sie feige!
Testen im EE-Umfeld – Seien Sie feige!
 
Speeding up Java Persistence
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistence
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0
 
Neuerungen in JavaServer Faces 2.0
Neuerungen in JavaServer Faces 2.0Neuerungen in JavaServer Faces 2.0
Neuerungen in JavaServer Faces 2.0
 
What's new in Java EE 7
What's new in Java EE 7What's new in Java EE 7
What's new in Java EE 7
 
Photo talk
Photo talkPhoto talk
Photo talk
 
Java Persistence in Action – Einsatz von JPA 2.x in Java-EE-Anwendungen
Java Persistence in Action – Einsatz von JPA 2.x in Java-EE-AnwendungenJava Persistence in Action – Einsatz von JPA 2.x in Java-EE-Anwendungen
Java Persistence in Action – Einsatz von JPA 2.x in Java-EE-Anwendungen
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
 
Sonas Housing Annual Review 2011
Sonas Housing Annual Review 2011Sonas Housing Annual Review 2011
Sonas Housing Annual Review 2011
 
Jpa queries
Jpa queriesJpa queries
Jpa queries
 
Kernel Masters inauguration slideshare
Kernel Masters inauguration slideshareKernel Masters inauguration slideshare
Kernel Masters inauguration slideshare
 
Java Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's StapelnJava Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's Stapeln
 
KM Placement Assistance Program
KM Placement Assistance ProgramKM Placement Assistance Program
KM Placement Assistance Program
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
 

Ähnlich wie Infinispan - NoSQL für den Enterprise Java Alltag

Citrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahCitrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nah
Digicomp Academy AG
 
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
Swiss IPv6 Council
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
AOE
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
ICS User Group
 
GWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem PrüfstandGWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVA
 
Startimpuls at Microsoft w/ IFJ
Startimpuls at Microsoft w/ IFJStartimpuls at Microsoft w/ IFJ
Startimpuls at Microsoft w/ IFJ
Reto Laemmler
 
Presentation bp7 - citrix xen desktop
Presentation   bp7 - citrix xen desktopPresentation   bp7 - citrix xen desktop
Presentation bp7 - citrix xen desktop
xKinAnx
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
AOE
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
ICS User Group
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
Klaus Bild
 
ANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat AnsibleANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat Ansible
CarolineAuerMarcher
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
OPITZ CONSULTING Deutschland
 
Suse in der neuen Welt des Rechenzentrums - ein Beispiel
Suse in der neuen Welt des Rechenzentrums - ein BeispielSuse in der neuen Welt des Rechenzentrums - ein Beispiel
Suse in der neuen Welt des Rechenzentrums - ein Beispiel
ATIX AG
 
Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014
Gunther Pippèrr
 
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
confluent
 
Portale 2.0 mit Liferay
Portale 2.0 mit LiferayPortale 2.0 mit Liferay
Portale 2.0 mit Liferay
inovex GmbH
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
oraclebudb
 
Oracle AVDF in der Praxis
Oracle AVDF in der PraxisOracle AVDF in der Praxis
Oracle AVDF in der Praxis
Trivadis
 
Geänderte Anforderungen an eine Data-Warehouse-Landschaft
Geänderte Anforderungen an eine Data-Warehouse-LandschaftGeänderte Anforderungen an eine Data-Warehouse-Landschaft
Geänderte Anforderungen an eine Data-Warehouse-Landschaft
ISR Information Products AG
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performance
glembotzky
 

Ähnlich wie Infinispan - NoSQL für den Enterprise Java Alltag (20)

Citrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahCitrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nah
 
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 
GWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem PrüfstandGWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
 
Startimpuls at Microsoft w/ IFJ
Startimpuls at Microsoft w/ IFJStartimpuls at Microsoft w/ IFJ
Startimpuls at Microsoft w/ IFJ
 
Presentation bp7 - citrix xen desktop
Presentation   bp7 - citrix xen desktopPresentation   bp7 - citrix xen desktop
Presentation bp7 - citrix xen desktop
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
ANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat AnsibleANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat Ansible
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
 
Suse in der neuen Welt des Rechenzentrums - ein Beispiel
Suse in der neuen Welt des Rechenzentrums - ein BeispielSuse in der neuen Welt des Rechenzentrums - ein Beispiel
Suse in der neuen Welt des Rechenzentrums - ein Beispiel
 
Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014
 
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
 
Portale 2.0 mit Liferay
Portale 2.0 mit LiferayPortale 2.0 mit Liferay
Portale 2.0 mit Liferay
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Oracle AVDF in der Praxis
Oracle AVDF in der PraxisOracle AVDF in der Praxis
Oracle AVDF in der Praxis
 
Geänderte Anforderungen an eine Data-Warehouse-Landschaft
Geänderte Anforderungen an eine Data-Warehouse-LandschaftGeänderte Anforderungen an eine Data-Warehouse-Landschaft
Geänderte Anforderungen an eine Data-Warehouse-Landschaft
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performance
 

Infinispan - NoSQL für den Enterprise Java Alltag

  • 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
  • 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