Inhaltsverzeichnis26 Abschnitte
- Was ist Delta Sharing?
- Delta-Sharing-Architektur
- Delta Sharing mit Unity Catalog aufsetzen
- Schritt 1: Delta Sharing im Metastore aktivieren
- Schritt 2: Share erstellen
- Schritt 3: Recipient erstellen
- Schritt 4: Access gewähren
- Geteilte Daten konsumieren: Recipient-Seite
- Option A: Databricks Unity Catalog (kein Token nötig)
- Option B: Python (pandas / PyArrow)
- Option C: Power BI
- Option D: Apache Spark (non-Databricks)
- Advanced: Time Travel und Versions-Sharing
- Security und Governance
- Zugriffs-Auditing
- Access widerrufen
- Row-Level-Filtering (Advanced)
- Delta Sharing vs Alternativen
- Produktive Überlegungen
- FAQ
- Ist Delta Sharing wirklich vendor-neutral?
- Wie behandle ich DSGVO-Anforderungen beim Sharing?
- Was kostet Delta Sharing?
- Wie behandle ich Versionierung bei Recipients?
- Lässt sich Delta Sharing mit Iceberg-Tabellen nutzen?
- Schluss
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:
| Eigenschaft | Detail |
|---|---|
| Offenes Protokoll | Kein Vendor-Lock; implementiert von Databricks, pandas, Apache Spark, Power BI usw. |
| Keine Daten-Duplikation | Empfänger fragen direkt in deinem Storage via Signed URLs ab |
| Live-Daten | Empfänger sehen immer die neueste Version (oder eine spezifische, die du teilst) |
| Feingranulare Kontrolle | Teile spezifische Tabellen, Partitionen oder Row-/Column-Subsets |
| Audit-Logging | Volle 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:
- Get Data → Delta Sharing
- Activation-URL einfügen
- 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
| Ansatz | Datenkopie? | Realtime? | Multi-Plattform? | Governance |
|---|---|---|---|---|
| Delta Sharing | Nein | Ja | Ja | Eingebaut |
| S3/ADLS-File-Dump | Ja | Nein | Ja | Manuell |
| Custom-REST-API | Nein | Ja | Ja | Manuell |
| Snowflake Data Share | Nein | Ja | Nur Snowflake | Eingebaut |
| BigQuery Analytics Hub | Nein | Ja | Nur GCP | Eingebaut |
Delta-Sharings Differentiator ist echte Offenheit — Provider und Recipient können jede kompatible Plattform nutzen.
Produktive Überlegungen
- Bandwidth-Kosten: Recipients, die große Tabellen lesen, erzeugen Egress-Kosten bei dir (Provider). Mit Audit-Logs monitoren.
- Token-Rotation: Für Open-Sharing-Recipients Tokens periodisch rotieren.
- Partitions-Strategie: Nur nötige Partitionen sharen, um versehentliche Full-Scans zu minimieren.
- 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.
Geschrieben von
Harbinger Team
Cloud-, Data- und AI-Engineer in DACH. Schreibt seit 2018 über infrastrukturkritische 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.