golconde


Golconde is a Loosely Coupled Data Distribution System for PostgreSQL

Golconde (gŏl-kŏn'də) is a queue based replication solution for PostgreSQL written in Python 2.6.

It is designed to be loosely coupled and rely upon existing enterprise messaging systems that have STOMP protocol support. Designed to scale easily and with multi-data center implementations in mind, the application and message queues for distribution live outside of the database. By decoupling Golconde from PostgreSQL it is differentiated from existing replication solutions, moving the workload from the database tier, where CPU, RAM and IO overhead can be very expensive, to a commodity layer where the operational cost for performing the data distribution work is much less expensive. In a typical Golconde target database, the PostgreSQL operational overhead is similar to the canonical database write workload.

The preferred method of operation is to use one of the Golconde client classes, currently available for PHP and Python. The Golconde client classes allow you to perform write level activity such as adding, deleting, setting and updating data. Example flow diagrams and code can be found on the GolcondeExamples page.

Alternatively, you may use the golconde_util.py script to generate on update/delete/insert triggers which will kick off the data distribution cycle within PostgreSQL. You can see an example of this flow on the GolcondeTrigger page.

It is designed to be modular, allowing for different behaviors based upon the target database, including a 2-phase commit like behavior on failure of distribution to any node. Because it is designed for eventual consistency and loosely-coupled operation, it is most similar to BASE as described by Dan Pritchett.

Here is the presentation from pgCon 2009.

Golconde is named for the famous painting by René Magritte.

http://golconde.googlecode.com/svn/wiki/media/magritte-golconde.jpg

Project Information

Labels:
PostgreSQL Replication Python