A logical grouping of related data assets
A data domain is a unit of data ownership aligned to a business area, where the team closest to the data is responsible for it as a product. It is the organising idea of data mesh, in which responsibility for analytical data moves to the domain teams who generate and understand it.
Zhamak Dehghani, then at ThoughtWorks, introduced data mesh in May 2019, with the foundational essays published on Martin Fowler's site and later expanded in the book Data Mesh (2022). The concept rests on four principles: domain-oriented decentralised ownership, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Domain ownership is the first and the load-bearing one: responsibility for analytical data moves from a central team into the hands of the domain teams who generate and understand it.
The lineage runs straight through domain-driven design. Dehghani borrowed Eric Evans's notion of the bounded contextBounded ContextEngineeringA DDD bounded context defining a service boundaryView reference →, arguing that a business domain's boundary is a natural seam for distributing data ownership, the same way it is for distributing services. Decomposing along business domains keeps the impact of change local to where the domain's people already work.
Reis and Housley frame this from the engineer's side in *Fundamentals of Data Engineering* (2022), where the data engineering lifecycle opens with *generation* — data originating in source systems owned by operational teams the data engineer does not control. Their point is that a data engineer's leverage begins at ingestion, not at the source, and that the quality and semantics of what arrives depend entirely on whoever owns the upstream system. The data domain concept answers that problem at the organisational level: by making domain teams accountable for their data as a product, it closes the gap between the people who understand the data's meaning and the people responsible for its quality downstream.
A retailer once piped every event into one warehouse owned by a central team that knew the pipelines but not the meaning. Under a domain model, three domains take shape: Orders, Inventory, and Customer. The Orders domain owns its order-event data end to end, publishes a clean "orders" data productData ProductData & AnalyticsA curated, reusable data assetView reference → with a documented schema and freshness guarantee, and defines the glossary termGlossary TermData & AnalyticsA defined term for shared understandingView reference → "fulfilled order" so the rest of the company stops arguing about it. When checkout logic changes, the Orders team updates its own data product, and the blast radius stays inside one bounded context.
In the Unified Product Graph, a Data Domain anchors the data and analytics region. The product organises into domains through Productorganised intoData Domainhierarchy, and each domain reaches its outputs and inputs through product_organised_into_data_domainData DomainproducesData Producthierarchy, data_domain_produces_data_productData DomaincontainsData Sourcehierarchy, and data_domain_contains_data_sourceData DomaindefinesGlossary Termhierarchy. That fan-out encodes the data mesh thesis structurally: ownership lives at the domain, and products, sources, and shared vocabulary all hang off the team accountable for them.data_domain_defines_glossary_term
Worked example: Trellis
The governed set of operational records and their full change history that the Trellis agent is scoped to act within forms a bounded data domain. Keeping it bounded is what makes scoped permissions coherent and what ensures the audit trail and rollback capabilityCapabilityStrategyAn ability that enables value deliveryView reference → in Guardrails and audit cover exactly the right surface, no more and no less.
Confidential Sensitive; restricted to a need-to-know basis.
Type-specific fields on BaseNode
stewardstringAccountable person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable.
domain_typeenumDomain contents classification. `master` = canonical entity data (customers, products). `operational` = live transactional data. `analytical` = warehouse / BI data. `reference` = slow-changing lookup data.
sensitivityenumSensitivity band applied across the domain
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
6 edge types connected to this entity.
product_organised_into_data_domaindata_domain_produces_data_productdata_domain_contains_data_sourcedata_domain_defines_glossary_termdata_domain_modelled_in_data_modeldata_domain_visualised_in_dashboard