Middle-R: A Middleware for Database Replication
================================================

This directory contains the source code distribution of Middle-R.

Middle-R is a middleware for transparent database replication.
In order to replicate a database a copy of the database and an instance of
Middle-R are run at each site. We call this pair a replica.
Middle-R provides eager replication and uses a read-one/write-all schema [BHG87].
Eager replication ensures data consistency among replicas propagating
transaction updates to all sites as part of the original transaction.
Read-one/write-all implies that queries are executed at a single replica
while updates are installed at all the replicas.
Middle-R uses asymmetric processing to boost scalability.
Asymmetric processing consists in processing a given update transaction at
one replica (the master of the transaction) and propagating the resulting updates
to the remaining replicas. An update transaction can involve many reads
in order to write some elements. The cost of processing the SQL statement,
generating the query plan, (probably) performing many reads, etc is saved at
the remaining replicas, which just installs the resulting updates.
This spare capacity at other replicas can be used to process additional transactions
and scale beyond what is achievable in a symmetric approach, where the whole
update transaction is executed at all the replicas [JPKA02]. In order to share
the load among all the replicas, data is naturally partitioned into tables.
Each table is assigned a master replica that will be in charge of executing updates
on that table and propagate the resulting updates. Update transactions are known
by all the replicas in Middle-R in order to tolerate failures and for load
balancing purposes, although they are completely executed at a single site [PJKA00].

References:
[BHG87] Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman.
"Concurrency Control and Recovery in Database Systems". Addison-Wesley 1987, ISBN 0-201-10715-5
[PJKA00] M. Patiño-Martínez, R. Jiménez-Peris, B. Kemme, and G. Alonso. 
"Scalable Replication in Database Clusters". In Proc. of Distributed Computing Conf., DISC 00.
Toledo, Spain, volume LNCS 1914, pages 315 329, October 2000.
[JPKA02]R. Jiménez-Peris, M. Patiño-Martínez, B. Kemme, and G. Alonso.
"Improving the Scalability of Fault-Tolerant Database Clusters". In Int. Conf. 
on Distributed Computing Systems (ICDCS'02), pages477-484. July 2-5, 2002, Vienna, Austria. 

See the INSTALL file for instructions on how to build and install Middle-R.
That file also lists supported operating systems and hardware platforms and
contains information regarding any other software packages that are required
to build or run the Middle-R system.
Changes between all Middle-R releases are recorded in the file HISTORY.
Copyright and license information can be found in the file COPYRIGHT.
A comprehensive documentation set is included in this distribution.

The latest version of this software may be obtained at
http://adapt.ls.fi.upm.es/Downloads.htm. For more information look at our web
site located at http://adapt.ls.fi.upm.es/adapt.htm
