Transactional memory (TM) is consistently making its way into mainstream programming, being already deployed by some of the major CPU manufacturers and in several reference compilers. To cope with requirements such as scalability and dependability, recent proposals explore the combination of TM with data replication, bringing TM to distributed environments - conceiving distributed transactional memory (DTM). However, current DTM frameworks support only full data replication. They provide the best possible level of tolerance to data loss, but limit the system's total storage capacity to the capacity of the node with fewer resources, and require coordination among all the system's nodes, an approach bound to hamper scalability in large scale systems. In this context, a partial data replication strategy can help to lessen these shortcomings. Each node replicates only a subset of the system's dataset, an approach that aims at combining the best of data distribution and full replication, while trying to attenuate their disadvantages. The key idea is to allow the dataset to be distributed among the participating nodes and to decrease the number of nodes that have to participate in a transaction's confirmation, as any given transaction only has to be confirmed by the nodes that replicate the data items in its read and write sets. By distributing the data and reducing the coordination cost among nodes, partial data replication leverages the system's scalability. Although this strategy has already been explored by the distributed databases research field, it is yet to be addressed in the context of (D)TM. More specifically, partial data replication has been broadly applied in key-value stores, and even though these work on in-memory data and support transactions, they present significant differences when compared with DTM systems for general purpose programming languages. To this extent, we propose PARdstm, to the best of our knowledge, the first DTM framework to include support for partial data replication. As such, the contributions of this work are: a reasoning on how partial data replication shall be supported in general purpose programming languages (Java, in particular), and a modular software framework that embeds such principles to provide a highly expressive and non-intrusive programming API. Initial experimental results give evidence that our approach may enhance scalability in large scale systems, when compared to full data replication. An ongoing comprehensive study will allow us to assess in which contexts of use (workloads, number of nodes, etc.) partial data replication may be an effective alternative.
|Publication status||Published - 1 Jan 2014|