It’s great that someone familiar with PostgreSQL is considering how to make it adopt some of the valuable aspects of NoSQL. But all of the comparison to MongoDB makes me quite nervous. Anything MongoDB does well, someone else does as well or better. It’s a poorly written and architected system and should not be copied.
I’d like to see the PostgreSQL transaction log become part of the API. The PoC I’d try to do with that is build a CRDT layer where each machine running PostgreSQL takes writes and then another service follows the transaction log and replicates it out. Limiting everything to CRDTs means you don’t have to expose much of anything interesting to the clients to resolve conflicts. From that one could then try to implement a service infront of the PostgreSQL that manages leader election. Then if the log is broken up into ongoing transactions and committed ones (where an external service can control when a commit happens) you can build something like RAFT on top of PostgreSQL. And that would be pretty neat.
It’s great that someone familiar with PostgreSQL is considering how to make it adopt some of the valuable aspects of NoSQL. But all of the comparison to MongoDB makes me quite nervous. Anything MongoDB does well, someone else does as well or better. It’s a poorly written and architected system and should not be copied.
I’d like to see the PostgreSQL transaction log become part of the API. The PoC I’d try to do with that is build a CRDT layer where each machine running PostgreSQL takes writes and then another service follows the transaction log and replicates it out. Limiting everything to CRDTs means you don’t have to expose much of anything interesting to the clients to resolve conflicts. From that one could then try to implement a service infront of the PostgreSQL that manages leader election. Then if the log is broken up into ongoing transactions and committed ones (where an external service can control when a commit happens) you can build something like RAFT on top of PostgreSQL. And that would be pretty neat.