SHAFT: Serializable, Highly Available and Fault Tolerant Concurrency Control For Large-Scale Datastores