oracle*coherence*hotcache*coherence.java.net/assets/pdf/2014-11-07-dave-felcey-real-time... ·...
TRANSCRIPT
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Oracle*Coherence*HotCache*An#Overview#
Dave*Felcey*Coherence*Product*Manager**November*2014*
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Agenda*
Overview*
HotCache*
Data*Mappings*and*TransformaIons*
Performance,*Scalability*and*HA*
DemonstraIon*
1#
2#
3#
4#
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 3*
5#
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Agenda*
Overview*
HotCache*
Database*Mappings*and*TransformaIons*
Performance,*Scalability*and*HA*
DemonstraIon*
1#
2#
3#
4#
5#
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 4*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Oracle*Coherence*HotCache*Components*• Oracle*Coherence*12.1.2+*• Oracle*GoldenGate*and*Java*Adaptor*• JPA*(Java*Persistence*API)*• Oracle*TopLink*(Oracle*JPA*provider*bundled*with*Coherence)*• Database*(currently*only*Oracle*Database*supported)*
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 5*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Oracle*GoldenGate*Defined*
• Oracle*GoldenGate*is*a*realZIme,*logZbased*change*data*capture*and*replicaIon*so[ware*pla\orm*• The*so[ware*provides:*– Capture*– RouIng*– TransformaIon*– Delivery**
• of*transacIonal*data*across*heterogeneous*data*sources*in*real*Ime*
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 6*
No1Impact,#Real1Time#Data#Integra>on#&#Transac>onal#Replica>on##
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 7*
How*Oracle*GoldenGate*Works*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 8*
Differen>ator's#Oracle*GoldenGate**
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 9*
Oracle*GoldenGate*Supported*Databases*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
• Defines:*– How*Java*objects*are*stored*in*relaIonal*database*
– A*programmer*API*for*reading,*wriIng,*and*querying*persistent*Java*objects*(“EnIIes”)*
– A*full*featured*query*language*in*JP*QL*– A*container*contract*that*supports*plugging*any*JPA*runIme*in*to*any*compliant*container*
Java*Persistence*API*(JPA)*Z*in*a*Nutshell*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
JPA*Mappings*• Java*standard*Java*Persistence*API*(JPA)*mappings*to*map*from*database*changes*to*affected*objects*
<entity class="example.model.Employee"> <attributes> <id name="id"> <generated-value /> </id> </attributes> </entity> *
XML*Mappings* Java*AnnotaIons*
OR*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Oracle*TopLink*
• Comprehensive*Java*Persistence*SoluIon*– Java*Persistence*(JPA*2.0*Reference*ImplementaIon),*Java*Architecture*for*XML*Binding*(JAXB*2.x),*Database*Web*Service*(DBWS)*
• Strong*Developer*Support*– Developed*in*open*source*EclipseLink*project*at*Eclipse.org*– Tool*support*in*OEPE*(Eclipse*EE),*NetBeans,*JDeveloper*
• Performance*– Key*contributor*to*Oracle's*SpecJ*World*Record*– Superior*results*across*the*board*against*key*compeItors*in*internal*benchmarks*
Object#Rela>onal#Mapping#
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Agenda*
Overview*
HotCache*
Database*Mappings*and*TransformaIons*
Performance,*Scalability*and*HA*
DemonstraIon*
1#
2#
3#
4#
5#
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 13*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
• Database*access/update*via*CacheStore*read/write*• Works*well*when*Coherence*applicaIon*is*the*only*source*of*database*changes**
Database*Backed*Coherence*ApplicaIon*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
• Coherence*applicaIons*backed*by*a*relaIonal*database*can*suffer*from*stale*caches*due*to*3rd*party*database*updates.*• ExisIng*Coherence*soluIons:*– Cache*Expiry*• Inefficient—expires*fresh*data*
– Refresh*Ahead*• Inefficient*pull*model*refreshes*fresh*data*• Possible*high*latency*
Challenge:*Shared*Database*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
“Custom”*AlternaIve*Approaches*• Custom*SoluIons*– Queuing*and*triggers*– Dual*updates*– Oracle*JDBC*DCN*– Polling*
• All*have*some*or*all*of*the*below*limitaIons*– Require*database*changes*– Have*limited*scalability*or*latency*characterisIcs*– Are*database*specific*(like*Oracle*AQ)*– Can*miss*transacIons*– Need*duplicates*to*be*dealt*with*to*provide*HA*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
• Ideally*– Event*Driven*– Low*Latency*– Efficient*– Non*invasive*– Understand#what#objects#in#what#caches#are#affected#by#a#change#to#a#given#column#in#a#given#table.#
*
Ideal*SoluIon:*Update*Cache*on*database*change*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
• Built*on*TopLink,*it*integrates*with*GoldenGate*to*push*database*changes*into*Coherence*cache*– Maps*data*changes*to*affected*objects*using*JPA*metadata*– Zero*to*minimal*change*to*Coherence*applicaIon*– Efficient*push*model—only*stale*data*is*processed*– Low*latency—push*happens*on*change*– No*database*changes*required*
Coherence*“HotCache”*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Coherence*HotCache*and*JPA*• Coherence*GoldenGate*Adapter*idenIfies*what*objects*in*what*cache*need*to*be*updated*based*on*database*change*• Coherence*Entry*Processors*are*used*to*update*data*in*place*• JPA*opImisIc*locking*supported*– Only*applies*change*if*newer*than*cache*value*– Sequence*or*Imestamp*fields*can*be*
• JPA*converter's*can*be*used*to*transform*data*types*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Agenda*
Overview*
HotCache*
Database*Mappings*and*TransformaIons*
Performance,*Scalability*and*HA*
DemonstraIon*
1#
2#
3#
4#
5#
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 20*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Data*TransformaIon*with*Coherence*Live*Events*
AA*
Object/Cache*Mapping*
HotCache*Live*Events*
BC* PH*
K V
K V
K V
AA*
BC*
PH*
Coherence*Data*Grid* Legacy*Schema*
K V
K V
K V
K V
Addr*
BA*
Cust*
Svc*
Canonical*Domain*Model*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Update*Dependent*Objects*with*Event*Interceptors*
private(Double(currentAccountBalance;private(Date(billingEffectiveDt;private(Date(paymentDueDt;((....
PaymentHistory
!!
private(int(billCycle;private(Integer(cycleCloseDay;(((private(Integer(nextCycleCloseDay;....
BillCycle
!!
private(Long(addressAssignmentId;private(Long(entityId;private(String(entityTypeCd;private(Long(addressId;private(Date(effectiveEndDt;....
AddressAssignment
Event(Interceptor
Event(Interceptor
Event(Interceptor
private(Integer(billingAccountNum;private(String(billingAccountTypeCd;private(Double(currentAccountBalance;private(int(billCycle;private(Long(addressId;....
BillingAccount
Stage(Cache
Target(Cache
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Data*TransformaIons*in*a*Database*Intermediate*Database*for*Staging*Tables*
• RealZIme*cache*to*protect*enterprise*resources*
• Intermediate*database*used*to*transform*and*deZnormalize*shared*data*
• 2*stage*replicaIon*by*GoldenGate**
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 23*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Agenda*
Overview*
HotCache*
Database*Mappings*and*TransformaIons*
Performance,*Scalability*and*HA*
DemonstraIon*
1#
2#
3#
4#
5#
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 24*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Scaling*HotCache*via*Parallel*Data*Flows*
• DB*schema*must*be*amenable*(related*tables*in*same*trail)*• One*HotCache*throughput:*700Z3000*TPS*depending*on*HW,*configuraIon*• This*approach*has*been*tested*to*18,000*TPS*
Coherence*Data*Grid*
Extract*1* Trail*1*K V
K V
K V
HotCache*1*
Extract*2* Trail*2* HotCache*2*
Extract*N* Trail*N* HotCache*N*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
HotCache*High*Availability*• Coherence*is*already*HA*• Oracle*Clusterware*manages*redundant*GoldenGate*HotCache*processes*• hsp://www.oracle.com/technetwork/middleware/goldengate/overview/haZgoldengateZwhitepaperZ128197.pdf*
AcIve*
GoldenGate*
Manager*
HotCache*
Passive*
GoldenGate*
Manager*
HotCache*
Oracle*Clusterware*
check()*
stop()* start()*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Monitoring*HotCache*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
Agenda*
Overview*
HotCache*
Database*Mappings*and*TransformaIons*
Performance,*Scalability*and*HA*
DemonstraIon*
1#
2#
3#
4#
5#
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 28*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*
DemonstraIon*HotCache#in#Ac>on#
Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 29*
Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 30*
WebLogic)Server)Domain)(base_domain))
Admin)Server)
cache_server1)))))
)cache_server2)
)))))
)webapp_server1)
))))))
)webapp_server2)
))))))
Cache)Server)WLS)Cluster)(storage)enabled))
WebApp)WLS)Cluster)(storage)disabled))
JCache)GUI))(Coherence)Extend)client))
Coherence))Cluster)
ExampleGAR.gar)
)proxy_server1)
)))))
)proxy_server2)
)))))
Proxy)WLS)Cluster)(storage)disabled))
ExampleGAR.gar)
ExampleEAR.ear)))ExampleGAR.gar)
ExampleListenerEAR.ear)))ExampleGAR.gar)
ExampleGAR.gar) ExampleGAR.gar)
Node)Manager)
ExampleEAR.ear)))ExampleGAR.gar)
HotCache)(Coherence)Client)) JVisualVM)
Plugin)for))monitoring)
Management)Node)
Database*changes*replicated*using*HotCache*
Cache*changes*wrisen*to*database*through*a*cache*store*
Independent*applicaIon*changes*database*