Configuration Change: The SyncSubscriptionGroup resource type has been removed. Subscriptions are now defined directly in the database configuration.
Subscriptions use Ditto Query Language (DQL) to specify exactly which
documents to sync, helping optimize bandwidth and storage usage.
Basic Configuration
database:
db_id: "YOUR_APP_ID"
device_name: "edge-device-1"
auth:
# ... auth configuration
subscriptions:
- "SELECT * FROM collection_name"
- "SELECT * FROM users WHERE active = true"
Subscription Field
Subscriptions are configured as part of the database configuration:
| Field | Type | Description |
|---|
subscriptions | array | List of DQL subscriptions to apply (optional, defaults to empty array) |
Each subscription in the subscriptions array can be either:
Simple String Query
subscriptions:
- "SELECT * FROM tasks"
- "SELECT * FROM users WHERE active = true"
Query with Arguments
database:
db_id: "YOUR_APP_ID"
device_name: "edge-device-1"
auth:
# ... auth configuration
subscriptions:
- query: "SELECT * FROM tasks WHERE assignee = :user_id"
args:
user_id: "user123"
- query: "SELECT * FROM events WHERE region = :region AND priority >= :min_priority"
args:
region: "us-west"
min_priority: 3
subscriptions:
# Simple string queries
- "SELECT * FROM config"
- "SELECT * FROM users"
# Parameterized queries
- query: "SELECT * FROM tasks WHERE status = :status"
args:
status: "active"
Complete Examples
Database with Subscriptions
database:
db_id: "12345678-1234-4123-1234-123456789012"
device_name: "edge-device-1"
auth:
server:
access_token: "YOUR_TOKEN"
auth_url: "https://your-app.cloud.dittolive.app"
provider: "__playgroundProvider"
subscriptions:
- "SELECT * FROM sensor_data WHERE location = 'warehouse_a'"
- "SELECT * FROM alerts WHERE severity >= 3"
- query: "SELECT * FROM inventory WHERE category = :category"
args:
category: "electronics"
Complex Subscriptions Example
database:
db_id: "33333333-3333-4333-3333-333333333333"
device_name: "edge-device"
auth:
server:
access_token: "TOKEN"
auth_url: "https://auth.dittolive.app"
provider: "customProvider"
subscriptions:
# Simple queries
- "SELECT * FROM config"
- "SELECT * FROM users WHERE active = true"
# Parameterized queries
- query: "SELECT * FROM devices WHERE region = :region AND last_seen > :cutoff_date"
args:
region: "us-west"
cutoff_date: "2024-12-01T00:00:00Z"
- query: "SELECT * FROM metrics WHERE device_id IN :device_list AND metric_type = :type"
args:
device_list: ["device1", "device2", "device3"]
type: "temperature"
Configuration Location
Subscriptions are always defined directly in the database configuration:
database:
db_id: "12345678-1234-4123-1234-123456789012"
device_name: "edge-device-1"
auth:
server:
access_token: "YOUR_TOKEN"
auth_url: "https://your-app.cloud.dittolive.app"
provider: "__playgroundProvider"
subscriptions: # Subscriptions defined inline
- "SELECT * FROM tasks"
- query: "SELECT * FROM users WHERE role = :role"
args:
role: "admin"
Best Practices
-
Use DQL best practices.
-
Group Related Subscriptions: Logically organize related subscriptions together in the subscriptions array.
-
Minimize Overlap: Avoid overlapping subscriptions that would sync the same data multiple times.
Important Notes
- Subscription Scope: Subscriptions only affect what data is synchronized to this Edge Server instance, not what data exists elsewhere in the mesh.
- Query Validation: Invalid DQL queries will cause the subscription to fail during Edge Server startup.
- Configuration Updates: Changes to subscription configuration require Edge Server restart to take effect.
- Query Arguments: The
args object supports various data types including strings, numbers, booleans, arrays, and nested objects.