At this point, all transactions go through a single transaction coordinator that uses 2PC to coordinate all transactions. This makes many aspects of coordination fast, reliable and simple. It works well because OLTP systems typically have few DDLs an hour, if that (although we tested with hundreds of DDLs per second, just to be sure).
When we look at other types of transactions, OLTP systems need to handle many orders of magnitude more. Even small apps typically have hundreds of transactions an hour, while large systems require millions of TPS.
Getting from the current architecture to something that handles all transactional load of an OLTP system will be a journey. And arguably one better served with a different architecture, one not based on 2PC.
at first glance, the 2pc ddl seems very similar in architecture to citus[1]. does pg_karnak provide advantages over citus here?
[1] https://docs.citusdata.com/en/stable/develop/reference_ddl.h...
is this proprietary or opensource? if opensource where is the source?
We are planning to open source it soon. Last few cleanups :)
Looks so cool! Will this be extensible to supporting transactions across logical DBs/tenants?
This is a great question.
At this point, all transactions go through a single transaction coordinator that uses 2PC to coordinate all transactions. This makes many aspects of coordination fast, reliable and simple. It works well because OLTP systems typically have few DDLs an hour, if that (although we tested with hundreds of DDLs per second, just to be sure).
When we look at other types of transactions, OLTP systems need to handle many orders of magnitude more. Even small apps typically have hundreds of transactions an hour, while large systems require millions of TPS.
Getting from the current architecture to something that handles all transactional load of an OLTP system will be a journey. And arguably one better served with a different architecture, one not based on 2PC.