Skip to content
About
Main content

Asset identity: what is the row keyed on?

Why does keying metadata on a name turn every rename into a silent delete?

Everything here is a join across systems, and the join key is the . So the first question is not "what metadata should we store?" but "what is each record keyed on?"

Suppose identity is a path or a name, such as catalog.schema.table, or worse a folder prefix. Then a rename is a delete plus a create. Every edge in every graph keyed on the old name silently breaks. Nothing raises an error:

  • the lineage graph becomes two disconnected pieces;
  • the ownership record points at a name that no longer exists;
  • the usage history restarts at zero, which makes the table look unused, and therefore deletable.

That is exactly Hana's problem 1 and 2. The cause is informational: , because the two properties conflict. Names change because meaning changes.

The fix is always the same: give each asset a meaningless stable ID at creation, treat the name as an ordinary attribute, and resolve names to IDs at access time. (This is called : the name is looked up when used, not fixed in advance.)

You may know this mechanism already:

GranularityName-based approachID-based approach
Rownatural key (email address)surrogate key (an auto-number)
Columnfind a column by its name in the filefind it by a column ID stored in the table metadata
Tablecatalog.schema.tableasset UUID

That is three appearances of one mechanism: stable meaningless identity, late-bound names.

asset_id  : 7f3a-91c2-...         (never changes)
name      : sales_orders          (changed from "orders" last week; just an attribute)
owner     : team:checkout-data    (resolved at query time)
lineage edges, usage history, tags all reference asset_id, never the name

The cost is the usual one: an that nobody can read by eye, plus a resolution service (name to ID) that is itself a catalog with its own availability requirement.

Cross-system identity remains unsolved. The same physical table has one identity in the , another in the job scheduler, another in the BI tool and another in the lineage store. The join between them is a naming convention (often a URN, a standard text form for an identifier), and conventions are asserted, not enforced. That is why every metadata interchange standard spends most of its text on naming and still does not fully fix it.

Identity is the join key of the whole topic.