Showing posts from December, 2021

Seven Reading Suggestions for the Holidays

One time I asked a very experienced engineer about his favorite technical books. He told me: "I barely read technical books. I have learned what I know mostly through experience while building useful things". I totally agree; experience is very important. Nothing can replace experience; no university degree, certificate, or amount of knowledge can compensate for the lack of experience. So next time you see a job posting with 10+ years of experience requirement, don't get upset if you don’t have it, because certain things just take time.  Having said that, I think it is still a good idea to constantly read technical books/papers for several reasons. Firstly, it is fun. Personally, nothing gives me more pleasure than being exposed to new ideas and organizing my knowledge around a subject. Also, we don't want to reinvent the wheel. Every year, some of very smart people publish the results of their hard work through conferences and journals. Why ignoring them and trying t

Amazon DynamoDB: ACID Transactions using Timestamp Ordering

Amazon DynamoDB uses a lightweight transaction protocol via timestamp ordering. Although both Spanner and DynamoDB use timestamps in their transaction protocol, DynamoDB seems significantly simpler than Spanner; while Spanner uses 2PL and MVCC and needs TrueTime, DynamoDB only relies on timestamp ordering and does not use any locking or MVCC scheme. In this post, we want to review the DynamoDB transaction protocol and compare it with Google Spanner.