JAOOEvolving the Key/Value Programming Model to a Higher Level

time to read 2 min | 376 words

Billy Newport is talking about Redis, showing some of the special APIs that Redis offers.

  • Redis gives us first class List/Set operation, simplify many tasks involving collections. It is easy to get into big problems afterward.
  • Can do 100,000 operations per second.
  • Redis encourage a column oriented view, you use things like:
R.set("user:123@firstname", "billy")
R.set("user:123@surname", "newport")
R.set("uid:bewport", 123)

Ayende’s comment: I really don’t like that. No transactions or consistency, and this requires lots of remote calls. 

  • Bugs in your code can corrupt the entire data store. Causing severe issues in development.
  • There is a sample Twitter like implementation, and the code is pretty interesting, it is a work-on-write implementation.
  • List/set operations are problems. What happen when you have a big set? Case in point, Ashton has 4 million followers, work-on-write doesn’t work in this case.
  • 100,000 operations per second doesn’t mean much when a routine scenario result in millions of operations.
  • This is basically the usual SELECT N+1 issue.
  • Async approach is required, processing large operations in chunks.
  • Changing the way we work, instead of getting the data and working on it, send the code to the data store and execute it there (execute near the data).
    • Ayende’s note: That is still dangerous, what happen if you send a piece of code  to the data store and it hungs?
  • Usual problems with column oriented issues, no reports, need export tools.
  • Maybe use closures as a way to send the code to the server?

Ayende’s thoughts:

I need to think about this a bit more, I have some ideas based on this presentation that I would really like to explore more.

More posts in "JAOO" series:

  1. (06 Oct 2010) The Go Programming Language
  2. (20 Oct 2009) More on Evolving the Key/Value Programming Model to a Higher Level from Billy Newport
  3. (07 Oct 2009) OR/M += 2
  4. (05 Oct 2009) Evolving the Key/Value Programming Model to a Higher Level
  5. (05 Oct 2009) Working Effectively with Legacy Code 2 – Michael Feathers