BDR User Guide

From PostgreSQL wiki

Revision as of 17:45, 23 May 2012 by Andresfreund (Talk | contribs)

Jump to: navigation, search

BDR stands for BiDrectional Replication. At the PgCon2012CanadaInCoreReplicationMeeting an inital version of the design was presented.

A presentation containing reasons leading to the current design and a prototype of it, including preliminary performance results, is available.


Project Aims

  • in core
  • fast
  • reusable individual parts (see below), usable by other projects (slony, ...)
  • basis for easier sharding/write scalability

Independent Modules


Reads and filters the wal. For the purpose of BDR all purely physical and index changes can be filtered out.

Using the existing code in xlog.c was considered to be to complex because it very tightly integrates into its current usage.


Reconstructs whole transactions from a stream of interspersed individual changes. Handles subtransactions and merges them into the main transaction if the were successful.

Command Triggers

Used to make DDL work accross nodes.

Embedded List

Small support module thats used to make low-overhead list manipulations without additional memory management/pointer indirection overhead easy.

Personal tools