Hierarchical Structure
The data model follows a clear hierarchy:Shares
A share is the top-level logical grouping used to distribute data to recipients. Shares define the access boundary for data sharing.Key Characteristics
Access Control
Recipients can access all resources within a share they’re granted access to
Multi-Recipient
A single share can be shared with one or multiple recipients
Multi-Schema
A share may contain multiple schemas for organizing related data
Unique Identity
Each share has an optional immutable ID (UUID format recommended)
Share Metadata
Shares include the following metadata:| Field | Type | Required | Description |
|---|---|---|---|
| name | String | Yes | Share name (max 255 chars, case-insensitive) |
| id | String | No | Unique immutable identifier (UUID recommended) |
| displayName | String | No | Human-friendly name for display (max 255 chars) |
| comment | String | No | Description or notes (max 65536 chars) |
| properties | Map<String, String> | No | Custom key-value metadata (max 50 pairs) |
The
id field, when provided, remains immutable throughout the share’s lifecycle, enabling stable references even if the share name changes.Example Share
Schemas
A schema is a logical grouping of tables within a share. Schemas help organize related tables and provide namespace separation.Key Characteristics
- Namespace: Provides logical separation between different table collections
- Organization: Groups related tables together for easier discovery
- Hierarchical: Belongs to exactly one share
- Case-Insensitive: Schema names are case-insensitive across the protocol
Schema Metadata
| Field | Type | Required | Description |
|---|---|---|---|
| name | String | Yes | Schema name (max 255 chars, no periods) |
| share | String | Yes | Parent share name |
Example Schema
Schema names must not contain the period (
.) character to avoid conflicts with table references.Tables
A table represents a Delta Lake table or a view on top of a Delta Lake table. Tables are the actual data containers that recipients access.Key Characteristics
Delta Format
All tables are Delta Lake tables stored in Parquet format
Versioned
Tables track version history for time travel queries
Partitioned
Support for partition columns to optimize queries
Stateful
Include per-file statistics for query optimization
Table Metadata
| Field | Type | Required | Description |
|---|---|---|---|
| name | String | Yes | Table name (max 255 chars, no periods) |
| schema | String | Yes | Parent schema name |
| share | String | Yes | Parent share name |
| id | String | No | Unique table identifier within share (UUID) |
| shareId | String | No | Immutable share identifier |
| location | String | No* | Root directory path (required for dir access) |
| auxiliaryLocations | Array<String> | No | Additional storage locations |
| accessModes | Array<String> | No | Supported access modes (url, dir) |
Example Table
Table Schema and Format
Each table has a detailed schema definition and format specification:Schema Definition
Table schemas use a JSON representation compatible with Apache Spark SQL:Supported Data Types
- Primitive Types
- Complex Types
- string: UTF-8 encoded text
- long: 8-byte signed integer
- integer: 4-byte signed integer
- short: 2-byte signed integer
- byte: 1-byte signed integer
- float: 4-byte floating-point
- double: 8-byte floating-point
- boolean: true/false
- binary: Binary data
- date: Calendar date (year-month-day)
- timestamp: Microsecond precision timestamp
- decimal: Fixed precision decimal numbers
Partition Columns
Tables can be partitioned to optimize query performance:| Type | Format | Example |
|---|---|---|
| date | {year}-{month}-{day} | 2021-04-28 |
| timestamp | {year}-{month}-{day} {hour}:{minute}:{second} | 2021-04-28 23:33:48 |
| numeric | String representation | 123 |
| boolean | true or false | true |
| null | Empty string | "" |
Naming Conventions
All Delta Sharing objects must follow these naming rules:Valid Examples
Invalid Examples
Querying the Hierarchy
Clients can navigate the hierarchy using REST APIs:Pagination Support
All list operations support pagination for large result sets:maxResults: Maximum items per page (optional)pageToken: Token from previous response to get next page
The server may return fewer items than
maxResults even if more are available. Always check for nextPageToken to determine if additional pages exist.Complete Example
Here’s a full example showing the hierarchy:Next Steps
Access Modes
Learn about URL-based and directory-based access patterns
Protocol Overview
Understand the REST API and authentication
Profile Files
Configure recipient access with profile files
API Reference
Explore detailed API documentation