These days, many applications utilize multiple data stores for various reasons. This could be due to each data store specializing in a specific task or because the application was developed by multiple teams over time. However, coordinating operations across these stores can be challenging. While transactions guarantee consistency within a single database, they don’t work across multiple data stores. The traditional solution is two-phase commit, which is not supported by newer data stores like MongoDB and Elasticsearch. In this blog post, the author introduces Epoxy, a new protocol that enables ACID transactions across different data stores. Epoxy uses a primary database to coordinate transactions among itself and multiple secondary stores. The protocol employs multi-version concurrency control (MVCC) to enforce snapshot isolation and provides atomicity and durability. While Epoxy has limitations, it shows promise for simplifying the management of multiple data stores.
https://petereliaskraft.net/blog/epoxy