PG Session 17, Janvier 2025, Paris
Julien ROUHAUD, Pierre GIRAUD
Julien ROUHAUD (Taipei, Taiwan) Nile ![]() @rjuju123 Blog: rjuju.github.io |
Pierre GIRAUD (Chambéry, France) Dalibo ![]() @pgira |
PoWA
=
PostgreSQL Workload Analyzer
Sur une seule instance, entièrement autonome (quelques limitations)
Moderniser le code
Améliorer l’expérience utilisateur
(Esthétique et
utilisabilité)
Début du développement courant de l’été 2022, temps R&D Dalibo.
Backbone.js Foundation Rickshaw Bower |
→ |
VueJS Vuetify D3.js ViteJS |
Fonctionnement initial conservé et amélioré
Structure arborescente en JSON
Composants responsables de leurs données
{
"dashboard": {
"title": "All databases",
"type": "dashboard",
"widgets": [
[{
"title": "All databases",
"type": "tabcontainer",
"tabs": [{
"title": "General Overview",
"type": "dashboard",
"widgets": [
[{
"server": "1",
"title": "Query runtime per second (all databases)",
"metrics": ["all_databases.avg_runtime", "all_databases.load", ...],
"axistype": "time",
"stack": false,
"type": "graph"
}, {
...
}]
}, {
...
}]
}],
[{
"server": "1",
"title": "Details for all databases",
"metrics": ["by_database.plantime", "by_database.calls", ...],
"columns": [{
"name": "datname",
"label": "Database",
"url_attr": "url"
}],
"type": "grid"
}],
...
]
},
"datasources": [{
"name": "all_databases",
"xaxis": "ts",
"data_url": "/server/1/metrics/databases_globals/",
"metrics": [{
"name": "avg_runtime",
"label": "Avg runtime",
"yaxis": "avg_runtime",
"desc": "Average query duration",
"type": "duration"
}, {
...
}]
}],
...
}
Pour une meilleure lisibilité.
Exemple : les tableaux
Autre exemple : les graphiques (et leur légende)
![]() |
![]() |
![]() |
(quasi) Single Page App
pour une meilleure expérience
utilisateur
Suggestion d’index globale
Doc : powa.readthedocs.io
Code : github.com/powateam