Causally consistent distributed storage systems have received significant recent attention due to the potential for providing a low latency data access as compared with linearizability. Current causally consistent data stores use partial or full replication to ensure data access to clients over a distributed setting. In this paper, we develop, for the first time, an erasure coding based algorithm called CausalEC that ensures causal consistency for a collection of read-write objects stored in a distributed set of nodes over an asynchronous message passing system. CausalEC can use an arbitrary linear erasure code for data storage, and ensures liveness and storage properties prescribed by the erasure code. CausalEC retains a key benefit of previously designed replication-based algorithms - every write operation is local, that is, a server performs only local actions before returning to a client that issued a write operation. For servers that store certain objects in an uncoded manner, read operations to those objects also return locally. In general, a read operation to an object can be returned by a server on contacting a small subset of other servers so long as the underlying erasure code allows for the object to be decoded from that subset. As a byproduct, we develop EventualEC, a new eventually consistent erasure coding based data storage algorithm. A novel technical aspect of CausalEC is the use of cross-object erasure coding, where nodes encode values across multiple objects, unlike previous consistent erasure coding based solutions. CausalEC navigates the technical challenges of cross-object erasure coding, in particular, pertaining to re-encoding the objects when writes update the values and ensuring that reads are served in the transient state where the system transitions to storing the codeword symbols corresponding to the new object versions.
翻译:与线性代码相比, CausalsalEC 可能提供低延迟数据访问,因此最近受到显著关注。 目前因果一致的数据存储使用部分或全面复制,以确保在分布式设置下客户访问数据。 在本文中,我们首次开发了一种基于删除编码的算法,称为CausalEC, 以确保在非同步信息传递系统上存储的一组分布式节点中存储读写对象的因果一致性。 CausaalEC 可以为数据存储使用任意的线性删除代码,并确保删除代码规定的动态和存储属性。 CausaalEC 保留了先前设计的基于复制的算法的关键好处,以确保客户在分布式设置时能够访问数据。 对于以未编码化的方式存储某些对象的服务器,读到这些对象的操作也可以返回本地。 一般来说, 与其它服务器的小组连接的读数级删除代码可以返回到另一个服务器, 等根基时代变量的变量的运行和存储变异性变异的值值, 将一个稳定的存储器运行到一个稳定的存储器。