Understanding sets
So far, the entire cluster has been used. Everybody was able to replicate data to everybody else. In many cases, this is not what is desired. BDR provides quite some flexibility in this area.
Unidirectional replication
BDR can perform not only bidirectional replication but also unidirectional replication. In some cases, this can be very handy. Consider a system that is just there to serve some reads. A simple unidirectional slave might be what you need.
BDR provides a simple function to register a node as a unidirectional slave:
bdr.bdr_subscribe(local_node_name, subscribe_to_dsn, node_local_dsn, apply_delay integer DEFAULT NULL, replication_sets text[] DEFAULT ARRAY['default'], synchronize bdr_sync_type DEFAULT 'full')
Of course, it is also possible to remove a node from unidirectional replication again:
bdr.bdr_unsubscribe(local_node_name)
The setup process is fairly simple and fits nicely into BDR's fundamental design principles.