Data Model¶
Understanding how ByteFreezer organizes your data.
Hierarchy Overview¶
Account (Organization)
└── Tenant (Data Source / Environment)
└── Dataset (Data Stream / Collection)
└── Events (Individual Records)
Accounts¶
An Account represents your organization or a customer organization. Accounts are the top-level container for all data and configuration.
| Property | Description |
|---|---|
| ID | Unique identifier (UUID) |
| Name | Human-readable account name |
| Status | Active or Inactive |
| Deployment | Managed (ByteFreezer cloud) or On-Prem |
Tenants¶
Tenants represent distinct data sources or environments within an account. Common use cases:
- Different applications (web-app, mobile-app, backend-api)
- Different environments (production, staging, development)
- Different data sources (firewall-logs, application-logs, metrics)
| Property | Description |
|---|---|
| ID | User-defined identifier (alphanumeric + hyphens) |
| Account ID | Parent account |
| Name | Human-readable tenant name |
| Status | Active or Inactive |
Naming Convention
Choose tenant IDs that are meaningful and stable. They appear in webhook URLs and cannot be changed after creation.
Datasets¶
Datasets are individual data streams within a tenant. Each dataset:
- Has its own webhook endpoint for data ingestion
- Can have custom transformation pipelines
- Is stored and processed independently
| Property | Description |
|---|---|
| ID | User-defined identifier (alphanumeric + hyphens) |
| Tenant ID | Parent tenant |
| Name | Human-readable dataset name |
| Status | Active or Inactive |
| Retention | Data retention period in days |
Webhook URL Format¶
Events¶
Events are individual records within a dataset. ByteFreezer accepts events in JSON or JSON Lines format.
// Single event
{"timestamp": "2024-01-15T10:30:00Z", "level": "info", "message": "User logged in"}
// Multiple events (JSON Lines)
{"timestamp": "2024-01-15T10:30:00Z", "level": "info", "message": "User logged in"}
{"timestamp": "2024-01-15T10:30:01Z", "level": "warn", "message": "Rate limit approaching"}
Best Practices¶
| Practice | Description |
|---|---|
| Account per organization | Each customer or business unit should have its own account |
| Tenant per data source type | Group related data streams under the same tenant |
| Dataset per unique schema | Data with different structures should be in separate datasets |
| Consistent naming | Use lowercase with hyphens (e.g., web-app, error-logs) |