Transactional memory (TM) [8] is consistently making its way into mainstream programming, being already deployed by some of the major CPU manufacturers [11] and in several reference compilers [5]. 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 [2, 10]. 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 [1] 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 [6], 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 [7], and even though these work on in-memory data and support transactions, they present significant di↵erences 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 e↵ective alternative.
[1]
Ricardo Jiménez-Peris,et al.
Boosting Database Replication Scalability through Partial Replication and 1-Copy-Snapshot-Isolation
,
2007,
13th Pacific Rim International Symposium on Dependable Computing (PRDC 2007).
[2]
Maged M. Michael,et al.
Evaluation of Blue Gene/Q hardware support for transactional memories
,
2012,
2012 21st International Conference on Parallel Architectures and Compilation Techniques (PACT).
[3]
Fernando Pedone,et al.
Optimistic Algorithms for Partial Database Replication
,
2006,
OPODIS.
[4]
Luís E. T. Rodrigues,et al.
When Scalability Meets Consistency: Genuine Multiversion Update-Serializable Partial Data Replication
,
2012,
2012 IEEE 32nd International Conference on Distributed Computing Systems.
[5]
Fernando Pedone,et al.
Partial replication in the Database State Machine
,
2001,
Proceedings IEEE International Symposium on Network Computing and Applications. NCA 2001.
[6]
Luca Benini,et al.
Towards Transactional Memory Support for GCC
,
2009
.
[7]
Paolo Romano,et al.
SCORe: A Scalable One-Copy Serializable Partial Replication Protocol
,
2012,
Middleware.
[8]
Nir Shavit,et al.
Software transactional memory
,
1995,
PODC '95.
[9]
Luís E. T. Rodrigues,et al.
A Generic Framework for Replicated Software Transactional Memories
,
2011,
2011 IEEE 10th International Symposium on Network Computing and Applications.
[10]
Binoy Ravindran,et al.
HyFlow: a high performance distributed software transactional memory framework
,
2011,
HPDC '11.
[11]
Gustavo Alonso,et al.
Supporting partial data accesses to replicated data
,
1994,
Proceedings of 1994 IEEE 10th International Conference on Data Engineering.
[12]
Ricardo J. Dias,et al.
Efficient Support for In-Place Metadata in Transactional Memory
,
2012,
Euro-Par.
[13]
Fernando Pedone,et al.
P-Store: Genuine Partial Replication in Wide Area Networks
,
2010,
2010 29th IEEE Symposium on Reliable Distributed Systems.
[14]
João Lourenço.
Uma Infraestrutura para Suporte de Memória Transacional Distribuída
,
2012
.
[15]
Kunle Olukotun,et al.
STAMP: Stanford Transactional Applications for Multi-Processing
,
2008,
2008 IEEE International Symposium on Workload Characterization.