zernel/zql/
schema.rs

1// Copyright (C) 2026 Dyber, Inc. — Proprietary
2
3// ZQL schema — defines the available tables and their columns.
4//
5// Tables:
6//   experiments — all tracked experiments
7//   telemetry  — eBPF telemetry data
8//   models     — model registry entries
9//   jobs       — distributed training jobs
10
11pub struct TableSchema {
12    pub name: &'static str,
13    pub columns: &'static [ColumnDef],
14}
15
16pub struct ColumnDef {
17    pub name: &'static str,
18    pub data_type: DataType,
19}
20
21pub enum DataType {
22    Text,
23    Number,
24    Timestamp,
25}
26
27pub const EXPERIMENTS_SCHEMA: TableSchema = TableSchema {
28    name: "experiments",
29    columns: &[
30        ColumnDef {
31            name: "id",
32            data_type: DataType::Text,
33        },
34        ColumnDef {
35            name: "name",
36            data_type: DataType::Text,
37        },
38        ColumnDef {
39            name: "status",
40            data_type: DataType::Text,
41        },
42        ColumnDef {
43            name: "loss",
44            data_type: DataType::Number,
45        },
46        ColumnDef {
47            name: "accuracy",
48            data_type: DataType::Number,
49        },
50        ColumnDef {
51            name: "learning_rate",
52            data_type: DataType::Number,
53        },
54        ColumnDef {
55            name: "batch_size",
56            data_type: DataType::Number,
57        },
58        ColumnDef {
59            name: "created_at",
60            data_type: DataType::Timestamp,
61        },
62    ],
63};
64
65pub const TELEMETRY_SCHEMA: TableSchema = TableSchema {
66    name: "telemetry",
67    columns: &[
68        ColumnDef {
69            name: "job_id",
70            data_type: DataType::Text,
71        },
72        ColumnDef {
73            name: "avg_gpu_utilization",
74            data_type: DataType::Number,
75        },
76        ColumnDef {
77            name: "dataloader_wait_p99",
78            data_type: DataType::Number,
79        },
80        ColumnDef {
81            name: "cuda_launch_p50",
82            data_type: DataType::Number,
83        },
84        ColumnDef {
85            name: "nccl_allreduce_p50",
86            data_type: DataType::Number,
87        },
88    ],
89};