Say this first: One Delta gold layer with UniForm enabled, published through Unity Catalog's Iceberg REST catalog, with per-engine service principals and a documented freshness lag.
Remember these
- One write path in Delta; Iceberg metadata published for readers
- UC Iceberg REST catalog plus credential vending for every external engine
- Publish a narrow, contracted set of gold tables, not the whole catalog
- State the Iceberg freshness lag in the contract, do not leave it implied
Why: The physical design is one set of Parquet files written by Databricks, with Delta as the write format and Iceberg metadata published alongside. Unity Catalog is the single catalog: external engines come through the Iceberg REST endpoint with credential vending rather than storage keys, so grants, lineage, and audit cover every reader. The organizational design matters as much as the technical one: declare which tables are published, hold them to a schema contract, and state the Iceberg lag in the contract so nobody builds a reconciliation job on an assumption of exact parity. Publish a narrow set of gold tables rather than the whole catalog, because every published table is an interface you now have to keep stable. The copies you still accept are deliberate ones — a reader that needs sub-second latency or a format you do not publish.
GRANT USE CATALOG ON CATALOG prod TO `trino-reader`;
GRANT USE SCHEMA ON SCHEMA prod.gold TO `trino-reader`;
GRANT SELECT ON TABLE prod.gold.orders TO `trino-reader`
Senior depth: The architecture question is not 'can these engines read Delta' — UniForm answers that. It is 'how many interfaces am I willing to support'. So I would publish a small, versioned gold surface, make UC the only access path, and refuse requests to expose silver. Then I would instrument it: audit reads per principal, watch which published tables nobody has queried in ninety days, and retire them. The failure mode of multi-engine lakehouses is not storage cost, it is a hundred implicit contracts you cannot change because you do not know who depends on them.
Common mistake: Enabling UniForm catalog-wide and calling it a data product strategy, with no contract or ownership.
Follow-up they will ask: Which engine would you still let keep its own copy, and why?