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?
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:
- (06 Oct 2010) The Go Programming Language
- (20 Oct 2009) More on Evolving the Key/Value Programming Model to a Higher Level from Billy Newport
- (07 Oct 2009) OR/M += 2
- (05 Oct 2009) Evolving the Key/Value Programming Model to a Higher Level
- (05 Oct 2009) Working Effectively with Legacy Code 2 – Michael Feathers