Replicating application data into materialized views

24
Replicating Application Data Into Materialized Views -or- Why You Should Publish Data Changes to Kafka Zach Cox @zcox Jack Henry & Associates Iowa Code Camp Dec 2015

Transcript of Replicating application data into materialized views

Page 1: Replicating application data into materialized views

Replicating Application DataInto Materialized Views

-or-Why You Should Publish Data Changes to Kafka

Zach Cox @zcoxJack Henry & Associates

Iowa Code Camp Dec 2015

Page 2: Replicating application data into materialized views
Page 3: Replicating application data into materialized views
Page 5: Replicating application data into materialized views
Page 6: Replicating application data into materialized views
Page 7: Replicating application data into materialized views
Page 8: Replicating application data into materialized views
Page 9: Replicating application data into materialized views
Page 10: Replicating application data into materialized views
Page 13: Replicating application data into materialized views
Page 14: Replicating application data into materialized views
Page 15: Replicating application data into materialized views
Page 16: Replicating application data into materialized views

def getUser(id: String): User =

readUserFromCache(id) match {

case Some(user) => user

case None =>

val user = readUserFromDatabase(id)

writeUserToCache(user)

user

}

Page 17: Replicating application data into materialized views

def getUser(id: String): User =

readUserFromCache(id) match {

case Some(user) => user

case None => //cache miss!

val user = readUserFromDatabase(id)

writeUserToCache(user)

user

}

Page 18: Replicating application data into materialized views

def getUser(id: String): User =

readUserFromCache(id) match {

case Some(user) => user //stale?

case None => //cache miss!

val user = readUserFromDatabase(id)

writeUserToCache(user)

user

}

Page 19: Replicating application data into materialized views

def getUser(id: String): User =

readUserFromCache(id) match { //network latency

case Some(user) => user //stale?

case None => //cache miss!

val user = readUserFromDatabase(id)

writeUserToCache(user)

user

}

Page 21: Replicating application data into materialized views
Page 22: Replicating application data into materialized views