True cross-store ACID is rare and expensive. Most teams use local transactions plus reliable messaging—complete the SQL commit, then publish an event; consumers update the document store and handle retries safely.

  • Pass idempotency keys from API gateways through workers to both stores.
  • Model compensating actions: void invoice, mark order failed, alert finance.
  • Test partition behavior: what if Mongo is up but Postgres read replica lags?

Redis locks can help short critical sections but are not a distributed transaction engine—keep scope tiny.