Public Service Announcement. Reading research papers is so important for your growth and career, please put in a process to do it at least once in a month or two. (I will try to write a blog post about why it is important, and how to go about it, since I see there is a big need for this.)
Papers We Love is a great resource, https://paperswelove.org/, if you like to get involved in a community to dip your feet into reading papers first.
At https://muratbuffalo.blogspot.com/ I distill and summarize distributed systems and database systems research paper. I recently got over 600 posts.
The main benefit of the blog for me was to crystallize my understanding. Having forced myself to post in public, I try to write a simple and accessible summary. This leads me to realize the gaps in my understanding, and fill them. This also strengthens my understanding, because by explaining the work in my own words, I internalize the concepts better. When I revisit a paper I have read before, the difference between a paper I wrote a post about and one I just read for myself is clear as day and night. I have a much better recall about the paper I posted. For a paper I wrote a summary, I just go to my summary and am able to cache back in all my understanding of the paper to my brain with a quick re-read of my summary.
This being said, I also benefited in terms of networking and collaboration. Through the blog post discussions on Twitter, I made many friends who work on distributed systems and databases. I think the blog was also useful for getting me a sabbatical at Microsoft Azure CosmosDB in 2018.
Finally, it feels really good to share my learnings, and put my rough ideas in the open. I learn from other blogs, and it feels good to give back. Every couple months I would get an email, thanking me for my blog, and that means the world to me.
I get it now. It is all thanks to separating the operation as
1. agreeing on WAL,
2. executing after waiting all WAL agreements stabilizing.
There is a separation between the two. This can introduce waits (which could be theoretically unbounded for EPaxos but Tempo and Accord bounds this).
Maybe in some sense this is in the same spirit of Calvin's serializing WAL first and executing it later. But Accord avoids a single entity doing the serialization and achieves it via a leaderless Paxos approach which uses dependency graphs for WAL serialization, and later using another protocol for WAL execution after settlement.
Why is it not possible for r to take a dependency on w2 and no dependency on w1?
w2 may hit different nodes than w1 in a sharded database?
Or is the leader-Paxos approach in Accord operate over all nodes in the database regardless of the shards the keys fall into? (I guess that is the only explanation.) But then scalability of these global transactions would be limited, no?