...
To define key points of the protocol design, let's look at some features, which can be provided by the product, and value them from 1 to 3, where 3 means maximum importance for product success.
Let's take a look at each feature in detail and give it a value.
...
This is the most intuitive way to use transactions. I measure it with 3
...
This is a general property of a transactional protocol, defining how many transactions will be restarted in case of serialization conflict, causing a work progress loss. For example, optimistic CC causes more frequent restarts under contention, because a conflict check is delayed until a commit. Avoiding cascade aborts also reduces a number of restarts. I measure it with 1
...
Very useful feature for load-balancing, especially in conjunction with the previous. I measure it with 3
...
Geo-distributed clusters are gaining popularity. While they suffer from network latency issues due to light of speed limit, they are the best for high availability. So, the protocol should minimize a number of messages send between regions. I measure it with 2
...
Some databases limit the number and total size of records enlisted in a transaction. This is not convenient for a user. I measure it with 3
...
It's important to know how many node failures we can tolerate until declaring the unavailability due to temporary data loss (or full in case of in-memory deployment). More is better. I measure it with 2
...
There are two main things - CC and atomic commitment.
...