Newer Older
58 lines | 2.361kb
Bogdan Timofte authored 4 days ago
1
# Table: `mdns_observations`
2

            
3
Stores observed mDNS records.
4

            
5
## Columns
6

            
7
| Column | Type | Null | Default | Notes |
8
|--------|------|------|---------|-------|
9
| `observation_key` | `TEXT` | no | none | Stable observation key. Primary key. |
10
| `worker_id` | `TEXT` | no | none | Collector worker. References `data_workers(worker_id)`. |
11
| `host_fqdn` | `TEXT` | yes | `NULL` | Matched host if known. References `hosts(fqdn)`. |
12
| `observed_name` | `TEXT` | no | none | Observed mDNS name. |
13
| `ip_address` | `TEXT` | no | none | Observed IP address. |
14
| `rr_type` | `TEXT` | no | `'A'` | DNS record type. |
15
| `ttl` | `INTEGER` | no | `0` | Observed TTL. |
16
| `first_seen` | `TEXT` | no | none | First observation timestamp. |
17
| `last_seen` | `TEXT` | no | none | Last observation timestamp. |
18
| `seen_count` | `INTEGER` | no | `1` | Number of times observed. |
19
| `last_peer` | `TEXT` | no | `''` | Last sender peer. |
20
| `raw` | `TEXT` | no | `''` | Raw source payload or diagnostic text. |
21

            
22
## Keys And Indexes
23

            
24
- Primary key: `observation_key`
25
- `idx_mdns_observations_name` on `observed_name`
26
- `idx_mdns_observations_ip` on `ip_address`
27
- `idx_mdns_observations_worker_last_seen` on `(worker_id, last_seen)`
28

            
29
## Relationships
30

            
31
- `worker_id` references `data_workers(worker_id)` with `ON UPDATE CASCADE ON DELETE RESTRICT`
32
- `host_fqdn` references `hosts(fqdn)` with `ON UPDATE CASCADE ON DELETE SET NULL`
33

            
34
## Definition
35

            
36
```sql
37
CREATE TABLE IF NOT EXISTS mdns_observations (
38
    observation_key TEXT PRIMARY KEY,
39
    worker_id TEXT NOT NULL,
40
    host_fqdn TEXT,
41
    observed_name TEXT NOT NULL,
42
    ip_address TEXT NOT NULL,
43
    rr_type TEXT NOT NULL DEFAULT 'A',
44
    ttl INTEGER NOT NULL DEFAULT 0,
45
    first_seen TEXT NOT NULL,
46
    last_seen TEXT NOT NULL,
47
    seen_count INTEGER NOT NULL DEFAULT 1,
48
    last_peer TEXT NOT NULL DEFAULT '',
49
    raw TEXT NOT NULL DEFAULT '',
50
    FOREIGN KEY (worker_id) REFERENCES data_workers(worker_id) ON UPDATE CASCADE ON DELETE RESTRICT,
51
    FOREIGN KEY (host_fqdn) REFERENCES hosts(fqdn) ON UPDATE CASCADE ON DELETE SET NULL
52
);
53

            
54
CREATE INDEX IF NOT EXISTS idx_mdns_observations_name ON mdns_observations(observed_name);
55
CREATE INDEX IF NOT EXISTS idx_mdns_observations_ip ON mdns_observations(ip_address);
56
CREATE INDEX IF NOT EXISTS idx_mdns_observations_worker_last_seen
57
ON mdns_observations(worker_id, last_seen);
58
```