FEAT: Partitionnement PostgreSQL de la table events + index critiques #18

Closed
opened 2026-08-10 21:02:20 +02:00 by nonobis · 0 comments
Owner

🎯 Contexte

La spec exige un partitionnement de la table events dÚs le jour 1 et des index spécifiques. La table actuelle est une simple table EF Core.

📚 RĂ©fĂ©rence spec (MASTER_SPECIFICATION.md v2.0)

2.3 Index PostgreSQL Essentiels :

  • Partitionnement PARTITION BY RANGE (timestamp) + partitions mensuelles (via Hangfire ou pg_cron) — Correctif D7
  • Index : idx_events_camera_time (camera_id, timestamp DESC), idx_events_site_time, idx_events_type_time, idx_events_track_id, idx_events_detection_hash, idx_events_parent_id, GIN idx_events_metadata (si requĂȘtes Metadata)
  • idx_recordings_cleanup (camera_id, timestamp), idx_recordings_storage_path, idx_agents_heartbeat (site_id, last_heartbeat) WHERE status='Online', idx_persons_unknown (is_unknown, created_at)

🔍 État actuel (vĂ©rifiĂ© dans le code)

Migration InitialCreate : table events simple. Aucun partitionnement, aucun index composite/GIN/partiel défini. (Quelques index EF de base existent via conventions.)

đŸ§© À faire

  • Migration : partitionner events par RANGE (timestamp)
  • Job de crĂ©ation des partitions mensuelles (Hangfire) ou pg_cron
  • Ajouter les index composites/partiels/GIN listĂ©s
  • VĂ©rifier les performances en test (EXPLAIN)

đŸ§Ș CritĂšres d'acceptation

  • events partitionnĂ©e, partitions mensuelles créées
  • Index prĂ©sents dans la migration
  • make test vert (adaptations requĂȘtes Ă©ventuelles)

📁 Fichiers concernĂ©s

src/Heimdall.Infrastructure/Migrations/, src/Heimdall.Infrastructure/Data/AppDbContext.cs, src/Heimdall.Infrastructure/BackgroundJobs/JobSetup.cs

## 🎯 Contexte La spec exige un partitionnement de la table events dĂšs le jour 1 et des index spĂ©cifiques. La table actuelle est une simple table EF Core. ## 📚 RĂ©fĂ©rence spec (MASTER_SPECIFICATION.md v2.0) **2.3 Index PostgreSQL Essentiels** : - Partitionnement `PARTITION BY RANGE (timestamp)` + partitions mensuelles (via Hangfire ou pg_cron) — Correctif D7 - Index : `idx_events_camera_time (camera_id, timestamp DESC)`, `idx_events_site_time`, `idx_events_type_time`, `idx_events_track_id`, `idx_events_detection_hash`, `idx_events_parent_id`, GIN `idx_events_metadata` (si requĂȘtes Metadata) - `idx_recordings_cleanup (camera_id, timestamp)`, `idx_recordings_storage_path`, `idx_agents_heartbeat (site_id, last_heartbeat) WHERE status='Online'`, `idx_persons_unknown (is_unknown, created_at)` ## 🔍 État actuel (vĂ©rifiĂ© dans le code) Migration InitialCreate : table `events` simple. Aucun partitionnement, aucun index composite/GIN/partiel dĂ©fini. (Quelques index EF de base existent via conventions.) ## đŸ§© À faire - [ ] Migration : partitionner `events` par RANGE (timestamp) - [ ] Job de crĂ©ation des partitions mensuelles (Hangfire) ou pg_cron - [ ] Ajouter les index composites/partiels/GIN listĂ©s - [ ] VĂ©rifier les performances en test (EXPLAIN) ## đŸ§Ș CritĂšres d'acceptation - [ ] `events` partitionnĂ©e, partitions mensuelles créées - [ ] Index prĂ©sents dans la migration - [ ] `make test` vert (adaptations requĂȘtes Ă©ventuelles) ## 📁 Fichiers concernĂ©s src/Heimdall.Infrastructure/Migrations/, src/Heimdall.Infrastructure/Data/AppDbContext.cs, src/Heimdall.Infrastructure/BackgroundJobs/JobSetup.cs
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#18
No description provided.