musings and one liners

Scaling Out without Partitioning

Todd Hoff mentions Hyder – Scaling Out without Partitioning. Hyder is  a research database at Microsoft, in which the database is the log, no partitioning is required, and the database is multi-versioned. Basically a shared Flash device for the logs:

For transaction execution, each server has a cache of the last committed state. That cache is going to be close to the latest and greatest state since each server is constantly replaying the log to keep the local state accurate [recall the assumption that there are lots of cores per server and it’s OK to spend cycles from the extra cores]. So, each transaction running in a single server reads a snapshot and generates an intention log record. The transaction gets a pointer to the snapshot and generates an intention log record. The server generates updates locally appending them to the log (recall that an append is sent to the log controller which returns the log-id with its placement in the log). Updates are copy-on-write climbing up the binary tree to the root.