22b1b069df
Initialize CLAUDE.md schema, index, and log; ingest three architecture sources (system overview, Teltonika ingestion design, official Teltonika data-sending protocols) into 7 entity pages, 8 concept pages, and 3 source pages with wikilink cross-references.
41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
---
|
|
title: PostgreSQL + TimescaleDB
|
|
type: entity
|
|
created: 2026-04-30
|
|
updated: 2026-04-30
|
|
sources: [gps-tracking-architecture]
|
|
tags: [infrastructure, business-plane, database]
|
|
---
|
|
|
|
# PostgreSQL + TimescaleDB
|
|
|
|
The durable storage layer. PostgreSQL with the TimescaleDB extension. Holds the positions hypertable and all business schema owned by [[directus]].
|
|
|
|
## Writers
|
|
|
|
- **[[processor]]** — sole writer for high-volume telemetry (positions hypertable) and writer for derived business entities (events, violations, alerts).
|
|
- **[[directus]]** — writes from the admin UI, custom endpoints, and Flows. Owns schema definition and migrations.
|
|
|
|
[[react-spa]] never writes (or reads) directly. [[tcp-ingestion]] does not touch the database.
|
|
|
|
## Schema authority
|
|
|
|
Schema is **defined and migrated through [[directus]]** — see that page for why. The Processor inserts rows respecting that schema; it does not create tables.
|
|
|
|
## Operational note
|
|
|
|
The database is the **only single point of failure** in the architecture. Everything else is restartable, replaceable, or naturally redundant. Operational attention concentrates here:
|
|
|
|
- Replication
|
|
- Backups
|
|
- Point-in-time recovery via TimescaleDB
|
|
|
|
## Scaling
|
|
|
|
- **Vertical** for write throughput.
|
|
- **Read replicas** for analytics workloads.
|
|
|
|
## Deployment
|
|
|
|
Internal-only container. Persistence volume. Regular backups. Accessed only by [[directus]] and [[processor]].
|