Data Engineering

Delta Sharing erklärt: Cross-Organisation-Datenaustausch ohne Datenkopien

Deep-Dive in Delta Sharing — das offene Protokoll für Live-Delta-Lake-Daten-Sharing über Organisationen, Clouds und Plattformen hinweg, ohne Daten zu duplizieren.

Harbinger Team3. April 20266 Min. LesezeitAktualisiert 14.5.2026
  • databricks
  • delta-sharing
  • data-sharing
  • unity-catalog
  • open-source
  • data-mesh
Inhaltsverzeichnis26 Abschnitte

TL;DR: Delta Sharing ist ein offenes Protokoll (nicht Databricks-only), das Live-Delta-Lake-Tabellen über Organisationsgrenzen sharing-bar macht — ohne Datenkopien, ohne FTP-Dumps, ohne Custom-API-Integrationen. Empfänger lesen via Signed URLs direkt aus deinem Storage. Unity Catalog managed Shares, Recipients und Audit-Logs.

Datensharing zwischen Organisationen war historisch schmerzhaft: FTP-Dumps, gemailte CSVs, Custom-API-Integrationen oder teure Daten-Marktplätze. Delta Sharing ändert das mit einem offenen, REST-basierten Protokoll, das Live-Delta-Lake-Tabellen an jeden Empfänger teilt — unabhängig von dessen Plattform, Cloud-Provider oder Tech-Stack.


Was ist Delta Sharing?

Delta Sharing ist ein Open-Source-Protokoll (kein Databricks-Proprietary-Format) für sicheres Daten-Sharing über Organisationsgrenzen hinweg. Kerneigenschaften:

EigenschaftDetail
Offenes ProtokollKein Vendor-Lock; implementiert von Databricks, pandas, Apache Spark, Power BI usw.
Keine Daten-DuplikationEmpfänger fragen direkt in deinem Storage via Signed URLs ab
Live-DatenEmpfänger sehen immer die neueste Version (oder eine spezifische, die du teilst)
Feingranulare KontrolleTeile spezifische Tabellen, Partitionen oder Row-/Column-Subsets
Audit-LoggingVolle Zugriffs-Historie für Compliance

Delta-Sharing-Architektur

Provider (Du)                         Recipient (externe Org)
---------------                       -----------------------
Unity Catalog                         Jeder kompatible Client
      |                                       |
      v                                       |
Delta Sharing Server  <----- REST API ----->  |
      |                                       |
      v                                       v
Cloud Storage  ------ Signed URLs -----> Direkter Read
(S3/ADLS/GCS)                            (keine Kopie)

Der Empfänger bekommt nie deine Daten — er bekommt zeitlich begrenzte, signierte URLs, die ihn direkt die Parquet-Files lesen lassen. Deine Daten verlassen deinen Storage-Bucket nicht.


Delta Sharing mit Unity Catalog aufsetzen

Unity Catalog ist der empfohlene Weg, Delta Sharing auf Databricks zu managen (auf allen Cloud-Providern verfügbar).

Schritt 1: Delta Sharing im Metastore aktivieren

-- Check if Delta Sharing is enabled
SHOW METASTORE;

-- Enable Delta Sharing on your metastore (admin required)
ALTER METASTORE SET ENABLE_DELTA_SHARING = TRUE;

Schritt 2: Share erstellen

Ein Share ist eine benannte Sammlung von Daten-Assets, die du verteilen willst:

-- Create a share
CREATE SHARE market_data_share
  COMMENT 'Live market data for external partners';

-- Add tables to the share
ALTER SHARE market_data_share
  ADD TABLE prod.gold.daily_prices;

-- Add a specific partition (e.g., only public data)
ALTER SHARE market_data_share
  ADD TABLE prod.gold.company_filings
  PARTITION (data_classification = 'public');

-- Add a table with an alias for the recipient
ALTER SHARE market_data_share
  ADD TABLE prod.silver.events
  AS prod_events_public
  COMMENT 'Anonymized event data';

Schritt 3: Recipient erstellen

Ein Recipient repräsentiert eine externe Entität (anderes Unternehmen, Team, Anwendung):

-- Recipient with Unity Catalog (another Databricks workspace)
CREATE RECIPIENT acme_corp_recipient
  USING ID 'databricks.acme_corp_metastore_id';

-- Recipient without Unity Catalog (open sharing, uses tokens)
CREATE RECIPIENT external_partner_recipient
  COMMENT 'External analytics partner without Databricks';

-- Get the activation link for non-UC recipients
DESCRIBE RECIPIENT external_partner_recipient;
-- Returns an activation_link — send this to your recipient securely

Schritt 4: Access gewähren

-- Grant the share to the recipient
GRANT SELECT ON SHARE market_data_share TO RECIPIENT acme_corp_recipient;
GRANT SELECT ON SHARE market_data_share TO RECIPIENT external_partner_recipient;

-- Verify grants
SHOW GRANTS ON SHARE market_data_share;

Geteilte Daten konsumieren: Recipient-Seite

Option A: Databricks Unity Catalog (kein Token nötig)

Wenn der Recipient ebenfalls Databricks mit Unity Catalog nutzt, fügt er den Provider hinzu und greift nahtlos zu:

-- Recipient: create a provider (references your metastore)
CREATE PROVIDER acme_data_provider
  USING ID 'databricks.your_metastore_share_id';

-- List available shares from the provider
SHOW SHARES IN PROVIDER acme_data_provider;

-- Create a catalog from the shared data
CREATE CATALOG shared_market_data
  USING SHARE acme_data_provider.market_data_share;

-- Query shared tables like any other table
SELECT * FROM shared_market_data.prod_gold.daily_prices
WHERE trade_date >= '2024-01-01'
LIMIT 100;

Option B: Python (pandas / PyArrow)

Recipients ohne Databricks nutzen die delta-sharing-Python-Library:

# pip install delta-sharing
import delta_sharing

# Load the profile file (downloaded from activation link)
profile_file = "path/to/config.share"

# List available tables
client = delta_sharing.SharingClient(profile_file)
shares = client.list_shares()
schemas = client.list_schemas(shares[0])
tables = client.list_tables(schemas[0])

print(f"Available tables: {[t.name for t in tables]}")

# Load as pandas DataFrame
df = delta_sharing.load_as_pandas(
    f"{profile_file}#market_data_share.prod_gold.daily_prices"
)
print(df.head())

# Load as Spark DataFrame (for large datasets)
spark_df = delta_sharing.load_as_spark(
    f"{profile_file}#market_data_share.prod_gold.daily_prices"
)
spark_df.filter("trade_date >= '2024-01-01'").show()

Option C: Power BI

Power BI hat nativen Delta-Sharing-Support. Recipients verbinden direkt in Power BI Desktop:

  1. Get Data → Delta Sharing
  2. Activation-URL einfügen
  3. Geteilte Tabellen als DirectQuery oder Import laden

Option D: Apache Spark (non-Databricks)

# Works with any Spark 3.x cluster
spark.conf.set("spark.sql.extensions", "io.delta.sharing.spark.DeltaSharingSparkExtension")

df = spark.read.format("deltaSharing") \
    .load("path/to/config.share#market_data_share.prod_gold.daily_prices")

df.filter("trade_date >= '2024-01-01'").show()

Advanced: Time Travel und Versions-Sharing

Spezifische historische Versionen für Point-in-Time-Konsistenz teilen:

-- Share a specific table version (snapshot)
ALTER SHARE market_data_share
  ADD TABLE prod.gold.daily_prices
  AS daily_prices_snapshot_v100
  VERSION AS OF 100;

-- Share as of a specific timestamp
ALTER SHARE market_data_share
  ADD TABLE prod.gold.daily_prices
  AS daily_prices_jan_2024
  TIMESTAMP AS OF '2024-01-31T23:59:59Z';

Recipients können auch Change Data Feed nutzen, um inkrementelle Änderungen zu bekommen:

# Recipient: read only new changes since last sync
df = delta_sharing.load_table_changes_as_pandas(
    f"{profile_file}#market_data_share.prod_gold.daily_prices",
    starting_version=150,
    ending_version=200
)
# Returns added/deleted rows with _change_type column
print(df[df["_change_type"] == "insert"])

Security und Governance

Zugriffs-Auditing

SELECT
  event_time,
  event_type,
  source_ip_address,
  user_name,
  request_params.share_name,
  request_params.table_name
FROM system.access.audit
WHERE service_name = 'deltaSharingServer'
  AND event_date >= CURRENT_DATE - 30
ORDER BY event_time DESC;

Access widerrufen

-- Revoke a recipient's access to a share
REVOKE SELECT ON SHARE market_data_share FROM RECIPIENT external_partner_recipient;

-- Or drop the recipient entirely
DROP RECIPIENT external_partner_recipient;

Row-Level-Filtering (Advanced)

Für DSGVO- oder vertragliche Compliance: nur Zeilen sharen, die bestimmte Kriterien erfüllen:

ALTER SHARE market_data_share
  ADD TABLE prod.gold.company_profiles
  PARTITION (is_public = 'true');

Delta Sharing vs Alternativen

AnsatzDatenkopie?Realtime?Multi-Plattform?Governance
Delta SharingNeinJaJaEingebaut
S3/ADLS-File-DumpJaNeinJaManuell
Custom-REST-APINeinJaJaManuell
Snowflake Data ShareNeinJaNur SnowflakeEingebaut
BigQuery Analytics HubNeinJaNur GCPEingebaut

Delta-Sharings Differentiator ist echte Offenheit — Provider und Recipient können jede kompatible Plattform nutzen.


Produktive Überlegungen

  1. Bandwidth-Kosten: Recipients, die große Tabellen lesen, erzeugen Egress-Kosten bei dir (Provider). Mit Audit-Logs monitoren.
  2. Token-Rotation: Für Open-Sharing-Recipients Tokens periodisch rotieren.
  3. Partitions-Strategie: Nur nötige Partitionen sharen, um versehentliche Full-Scans zu minimieren.
  4. SLA-Abstimmung: Recipients, die deine Daten abfragen, konkurrieren mit deinen eigenen Workloads — dedizierte Storage-Tiers überlegen.

Tools wie Harbinger Explorer helfen tracken, welche Shares am häufigsten zugegriffen werden, und Zugriffs-Patterns mit Storage-Kosten korrelieren.


FAQ

Ist Delta Sharing wirklich vendor-neutral?

Ja — die Spec ist auf GitHub offen. Recipients können pandas, Apache Spark, Power BI, Trino oder Custom-Clients nutzen, ohne Databricks-Lizenz.

Wie behandle ich DSGVO-Anforderungen beim Sharing?

Drei Hebel: Row-Level-Filtering (PARTITION (...)), Recipient-spezifische Aliase, Audit-Logs für Auskunftsrecht. Bei PII-Sharing: Datenverarbeitungsvereinbarung (DPA) mit dem Recipient.

Was kostet Delta Sharing?

Provider-Seite: Egress-Kosten + (in Databricks) DBU-Anteile fürs Sharing-Server. Recipient-Seite: nur dessen eigene Compute-Kosten. Kein Lizenz-Aufpreis.

Wie behandle ich Versionierung bei Recipients?

Default: Recipients sehen Live-Daten. Für deterministische Snapshots: VERSION AS OF oder TIMESTAMP AS OF im ADD TABLE-Statement. Für inkrementelle Sync: Change Data Feed (CDF).

Lässt sich Delta Sharing mit Iceberg-Tabellen nutzen?

Ja, mit Unity Catalog und der UniForm-Funktion. Iceberg-Reads gegen geteilte Delta-Tabellen sind ab Databricks-Runtime 14+ stabil unterstützt.


Schluss

Delta Sharing macht Datenkollaboration so einfach wie ein Google-Doc zu teilen — nur für massive, Live-Datasets. Das offene Protokoll bedeutet: deine Partner sind nicht an Databricks gebunden, und du behältst volle Kontrolle mit Unity-Catalog-Governance.

Mit der Verbreitung von Data-Mesh-Architekturen wird Delta Sharing zum Rückgrat von Inter-Domain-Datenverträgen. Mit einem Pilot starten: eine Gold-Tabelle an einen externen Stakeholder teilen und sehen, wie dramatisch das den Workflow vereinfacht im Vergleich zu File-Dumps.


Stand: 14. Mai 2026.

H

Geschrieben von

Harbinger Team

Cloud-, Data- und AI-Engineer in DACH. Schreibt seit 2018 über infrastruktur­kritische Tech-Entscheidungen — keine Marketing- Folien, sondern echte Trade-offs aus Production-Workloads.

Hat dir das geholfen?

Jede Woche ein neuer Artikel über DACH-Cloud, Data und AI — direkt in dein Postfach. Kein Spam, kein Marketing-Sprech.

Kein Spam. 1-Klick-Abmeldung. Datenschutz bei Loops.so.