I'm asking for advice and hints regarding terms in database replication, especially WRT Postgres-R. (Sorry for crossposting, but I fear not reaching enough people on the Postgres-R ML alone)

I'm struggling on how to classify the Postgres-R algorithm. Up until recently, most people thought of it as synchronous replication, but it's not synchronous in the strong (and very common) sense. I.e. after a node confirms to have committed a transaction, other nodes didn't necessarily commit already. (They only promise that they *will* commit without conflicts).

This violates the common understanding of synchrony, because you can't commit on a node A and then query another node B and expect it be coherent immediately.

None the less, Postgres-R is eager (or pessimistic?) in the sense that it replicates *before* committing, so as to avoid divergence. In [1] I've tried to make that distinction clear, and I'm currently advocating for using synchronous only in the very strong (and commonly used) sense. I've choosen the word 'eager' to mean 'replicates before committing'.

According to that definitions, Postgres-R is async but eager.

Do these definitions violate any common meaning? Maybe in other areas like distributed storage or lock managers?



[1]: Terms and Definitions of Database Replication

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?


Reply via email to