RFC: Analysis-oriented database schema
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Iniziare dall’issue correlata #1383 e dallo schema attuale di build/test della proposta, quindi esaminare come vengono usate le API legacy e le tabelle denormalizzate come tree_listing, hardware_status e i rollup. L’issue non indica file o test e lascia aperti il livello di granularità della definizione, le estrazioni JSON e il comportamento dei rollup; per considerarla completata servirebbero un design concordato, benchmark validati e un piano di migrazione incrementale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Related: #1383
Problem
The dashboard must support historical and comparative analysis, not only current-state browsing. Today, large builds and tests tables mix stable definition data with per-run execution data. Important fields also live in JSON blobs, which limits indexing and aggregation.
Proposal (direction, not final design)
Move toward a star-schema-style layout: narrow fact tables (runs) keyed to shared dimensions (commits, definitions). Early POC work suggests this can shrink hot rows and speed long-range queries.
| Surface | Current schema avg | Proposed schema avg | Faster |
|---|---|---|---|
| tree_listing_60d | 2.839s | 0.362s | proposed, ~7.8× |
| tree_by_checkout_5 | 0.058s | 0.033s | proposed, ~1.8× |
| notification_history | 13.018s | 4.900s | proposed, ~2.7× |
| hardware_tree_heads | 0.192s | 0.142s | proposed, ~1.35× |
| hardware_listing | 6.508s | 2.254s | proposed, ~2.9× |
| hardware_details_summary | 0.026s | 0.031s | current, marginal |
| hardware_details_full | 0.013s | 0.017s | current, marginal |
Proposed schema = star-schema POC read path (build_runs / test_runs fact tables), not the current monolithic builds / tests tables.
- It is important to point this is just a small experiment, and more analysis could bring further improvement for slower queries (some of those queries today, are pre cached to avoid slow compute).
We expect to migrate incrementally (expand → backfill → validate → cut over), not in one breaking change.
1. Split definitions from runs
- Build/test definitions — relatively static fields (e.g. config grain, test path).
- Build/test runs — execution facts: status, timestamps, lab/platform, mostly foreign keys.
tests in particular can grow very large; separating definition from run should keep fact tables smaller and cheaper to scan.
Open: exact definition grain. Community input welcome before we lock migrations.
2. Materialize structured fields
Promote frequently queried data out of JSON (environment_misc, large misc blobs) into typed columns or explicit relations where it measurably helps queries—especially hardware and platform listing.
Open: which extractions are worth the ingestion and storage cost; we will gate optional normalizations on query benchmarks, not assumptions.
3. Commit as a first-class dimension
Introduce a commits dimension (tree + repository + branch + hash) and link checkouts to it, so revision-scoped analysis does not depend on denormalized checkout text fields.
4. Daily rollups on runs
Pre-aggregate build and test runs by day (and existing rollup tables where they already help) to accelerate wide time-range dashboards.
Trade-off: rollups add ingestion work. If cost grows, we can reconcile periodically instead of on every write—feedback on acceptable latency vs query speed is useful.
Risks
- Ingestion: more tables and enrichment (e.g. commit metadata) may increase per-submission cost. We will monitor ingest throughput and keep git/network work outside DB transactions.
- Migration: legacy APIs and denormalized tables (
tree_listing,hardware_status, rollups) must keep working until new paths are validated.
Feedback requested
Please comment on:
- Definition vs run split.
- Definition keys — checkout-scoped vs commit-scoped build grouping; test path + environment handling.
- JSON materialization — which fields we need filterable or aggregatable?
- Rollups — which time grains and dimensions matter for workflows? Is daily aggregation enough?
Alternative layouts are welcome. The goal is a schema that serves real analysis questions.
- Lingua principale
- Python
- Stelle
- 10
- Fork
- 32
- Merge medio
- 3g 19h
- PR unite (30g)
- 33
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di kernelci/dashboard
-
notifications
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni
-
[Labs] filter tree, hardware, and issue reads by labForse già presa @alanpeixinho l’ha presa 5 giorni fa. Aperta
kernelci/dashboard#2209 · 1 assegnatario ·
I maintainer di solito rispondono entro 2 giorni
-
HW-list: keep listing origin and lab filters on hardware detailsForse già presa @alanpeixinho l’ha presa 70 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 2 giorni
-
HW-list: origin and lab filters on the listingForse già presa @alanpeixinho l’ha presa 5 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
kernelci/dashboard#2204 · 1 assegnatario ·
I maintainer di solito rispondono entro 2 giorni
-
Backend
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di kernelci/dashboard
Issue simili
-
Backend issue lists report in-patch warnings and out-of-patch errors as not publishableForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
mozilla/code-review#3794 ·
I maintainer di solito rispondono entro 1 giorno
-
[oblt-aw][autodoc] Update docs that still describe the security registry as emptyForse già presa @github-actions l’ha presa oggi. Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] adb backup script reports "Done" & exits 0 when the backup failsForse già presa @bhattmanthan l’ha presa oggi. Apertarequest-issue-assignment
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
OWASP/mastg#4034 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
agent-ui bug p2
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
correction metadata
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
acl-org/acl-anthology#10768 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno