GORDA Architecture and Programming Interface
The GORDA Architecture and Programming Interface (GAPI) allows portable replication protocols to be easily implemented and reused with different database management systems. It is designed to be provided either natively by the database server or by a server wrapper.
The included functionality supports a variety of replication protocols, both master-slave or multi-master, synchronous or asynchronous. It should also be useful to build other data management tools.
The GAPI uses reflection, as abstract transaction processing concepts appear as objects in the target data model and programming language, and is based on widely used and tested design patterns and APIs (e.g. JDBC).
The GAPI specification and source code are available for download. The interfaces are distributed under an open source BSD-like license. Note that a complete replicated system requires: (1) an implementation of the GAPI and (2) a replication protocol built as a GAPI application.
For a complete discussion of the design of the GAPI look at the accompanying technical report and the following publications:
- Alfranio Correia Jr., José Pereira, Luís Rodrigues, Nuno Carvalho, Ricardo Vilaça, Rui Oliveira and Susana Guedes. GORDA: An Open Architecture for Database Replication. In Proc. 6th IEEE Intl. Symp. on Network Computing and Applications (NCA '07), Boston, MA, USA. 2007.
- Nuno Carvalho, Alfranio Correia Jr., José Pereira, Luís Rodrigues, Rui Oliveira and Susana Guedes. On the use of a reflective architecture to augment Database Management Systems. Journal of Universal Computer Science, to appear.
The GORDA interface is also implemented in the Sequoia 3.0 JDBC wrapper, which should be easily ported to any JDBC compliant DBMS. Currently has been tested on MySQL.
The ESCADA Replication Server is a portable and flexible replication system based on group communication that fully takes advantage of the GAPI.
There is also a number of tutorial examples self-tuning concurrency controller; publishing of updates to JMS destinations; primary-backup replication; on-line backup; and query caching.
Release 0.4, the GAPI is missing:
- support for 2PC and LOBs;
- native log access;
- injection interfaces;
Bugs fixed and changes:
Release 0.4 of the GAPI changed a large number of cosmetic issues. A complete change log is included in the source package.
Release 0.3 of the GAPI fixed the following bugs:
- DbmsMetaData.getCpuHint() was removed.
- DbmsMetada.getDbmsVersion() was replaced by DbmsMetada.getDbmsMajorVersion().
We welcome your feedback using the community mailing list.
Last modified 2007-08-10 12:02 PM