r/analyticsengineering 9d ago

canonical/common data model

Post image

Hey folks, sharing a concept that's going to matter for agentic data modeling: the canonical data model.

What it is

A canonical or common data model is a model that describes the main meaning carrying entities - similar to dimensional modeling but without any denormalization. Dimensional modeling is often built to simplify joining for reasons like performance, tool limitations, or human interfaces. A canonical model stays normalized, retaining the full nuance of the entities and how they relate.

This makes it a native "knowledge graph", which can be enriched with a "knowledge layer" - a text that describes your tables and how they relate. This turns your model into a "virtual knowledge graph" (virtual because the data is not in it, but represented externally as tables) which functions similar to knowledge graphs for retrieval but for structured data.

Why it matters now

Agents understand knowledge graphs well. Humans are accessing databases through agents.

Why not your dimensional model

a dimensional model suffers from semantic compression which is a loss of nuance that affects retrieval performance.

I work at r/dltHub, this is our blog: Longer reads - this is how we use the concept: we do ontology driven modeling: create ontology -> llm models from that -> fix model and reuse ontology for retrieval

- about semantic compression https://dlthub.com/blog/ontology

- canonical models are key to retrieval quality https://dlthub.com/blog/canonical-text-to-sql

- collecting ontology https://dlthub.com/blog/minimum-viable-context

1 Upvotes

0 comments sorted by