oracle*coherence*hotcache*coherence.java.net/assets/pdf/2014-11-07-dave-felcey-real-time... ·...

31

Upload: others

Post on 08-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*
Page 2: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 3: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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#

Page 4: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 5: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 6: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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

Page 7: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 7*

How*Oracle*GoldenGate*Works*

Page 8: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 8*

Differen>ator's#Oracle*GoldenGate**

Page 9: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 9*

Oracle*GoldenGate*Supported*Databases*

Page 10: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 11: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 12: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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#

Page 13: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 14: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 15: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 16: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 17: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 18: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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”*

Page 19: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 20: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 21: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 22: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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

Page 23: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 24: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 25: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 26: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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()*

Page 27: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

Monitoring*HotCache*

Page 28: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 29: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

DemonstraIon*HotCache#in#Ac>on#

Oracle*ConfidenIal*–*Internal/Restricted/Highly*Restricted* 29*

Page 30: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*

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*

Page 31: Oracle*Coherence*HotCache*coherence.java.net/assets/pdf/2014-11-07-Dave-Felcey-Real-time... · Copyright*©*2014,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*TopLink*