
Pg_paxos: High Availability Data Replication for PostgreSQL - ryandotsmith
https://www.citusdata.com/blog/14-marco/335-pgpaxos-high-availability-table-replication-postgresql
======
theptip
I'm always skeptical when I see a new Paxos implementation surface without
rigorous consistency test results published front and center.

Per Google's "Paxos Made Live" paper [1], which opens with the wonderful
understatement "Despite the existing literature in the field, building such a
database proved to be non-trivial...", and finishes with "Despite the large
body of literature in the field, algorithms dating back more then 15 years,
and experience of our team (one of us has designed a similar system before and
the others have built other types of complex systems in the past), it was
significantly harder to build this system then originally anticipated..."

IOW if Google writes a 15-page paper about a problem being hard, you are going
to need to provide a large body of evidence that your implementation is
correct before I'll go near it.

[1]: [http://www.cs.cmu.edu/~15-440/READINGS/paxos-made-
live.pdf](http://www.cs.cmu.edu/~15-440/READINGS/paxos-made-live.pdf)

~~~
rdtsc
Definitely should at least unleash Aphyr's Knossos on it and see what happens.

But on Google thing. It is a good point, however, that was also 10 years ago.
Sometimes things get easier in technology in that time frame.

------
takeda
I'm wondering if they taken a look at BookKeeper[1] for this? It's basically a
system on top of ZK to handle replication log in a decentralized way.

[1]
[https://bookkeeper.apache.org/index.html](https://bookkeeper.apache.org/index.html)

Edit: It would be a nice to tell me why my my post have been downvoted.
BookKeeeper is not a competing solution, but something that was written for
that purpose and they could utilize it.

------
assface
Does anybody actually use any of CitusData's stuff in production? I've heard
that their free extensions are mostly junk and then when they don't work they
try to get you to buy their proprietary components.

~~~
pella
just a note: the next version (CitusDB 5.0) will be Open Source:
[https://twitter.com/frsyuki/status/667031289506062336](https://twitter.com/frsyuki/status/667031289506062336)

video: "Keynote by Umur Cubukcu of Citus Data at PGConf Silicon Valley 2015" :
[https://youtu.be/_nun2S6EdWo?t=513](https://youtu.be/_nun2S6EdWo?t=513)

\---

CitusDB 5.0 Pre-Beta Signup

"CitusDB 5.0 transforms PostgreSQL into a horizontally scalable, distributed
database. It enables you to perform both real-time inserts/updates and multi-
core, parallel analytics, in a way that is transparent to the application. It
will:

\- Allow you to deploy CitusDB as a standard PostgreSQL extension

\- Be compatible with the latest version of PostgreSQL, v9.5

\- Have an open source community edition "

[http://info.citusdata.com/CitusDB-5-Pre-
Beta.html](http://info.citusdata.com/CitusDB-5-Pre-Beta.html)

~~~
bkeroack
"Have an open source community edition" is not the same as "will be Open
Source".

------
rpedela
Are there plans to support DDL in 9.5 with the new event trigger
functionality? [1]

1\. [http://www.postgresql.org/docs/devel/static/functions-
event-...](http://www.postgresql.org/docs/devel/static/functions-event-
triggers.html#PG-EVENT-TRIGGER-DDL-COMMAND-END-FUNCTIONS)

------
Palomides
no license in the github repo? just says copyright 2015?

~~~
takeda
The META.json says that it is LGPL 3.0, perhaps lack of LICENSE file was
overlooked?

------
tbrock
How is this not part of Postgres proper already?

~~~
Sanddancer
Distribution is one of those issues where an implementation has to be
opinionated, and weigh out the pros and cons of each implementation. How do
you handle partition events? How do you handle conflicts between two nodes,
especially when resolving one conflict can generate other conflicts. How do
you handle latency? How do you handle failover?

Extensions like this are how Postgres has traditionally handled interesting
opinionated technologies. The mailing lists will mull over the various
implementations, scratch their chin a lot, and finally come to a conclusion
after much discussion. It's why the database is so strong and stable, and why
some seemingly obvious features take a while to get into the core database.

~~~
gtirloni
There should be sensible defaults for anyone deploying a small cluster. Right
now it's a full research project to figure this out for PgSQL while for
MariaDB/MySQL not so much (even though it might not be 'perfect' as many
commentators here expect things to be with PgSQL).

