====== Synthese - Ajout des statuts des taxons à l'export ====== ====== Besoin ====== Les utilisateurs ont besoins de voir apparaître dans le fichier des observations téléchargeable depuis le module Synthese de GeoNature, les informations sur les statuts de protection et de conservation. ===== Propositions ===== Ajouter des colonnes suivantes à l'export de la Synthese : * pn : protection nationale * pr : protection régionale * pd : protection départementale * lrm : liste rouge mondiale * lre : liste rouge européenne * lrn : liste rouge nationale * lrr : liste rouge régionale * lrd : liste rouge départementale * zdet : znieff déterminante * reglii : Interdiction d'introduction * reglutte : Lutte contre certaines espèces * regl : Réglementation * reglso : Réglementation sans objet TO DO : rajouter commandes vidage cache postgresql mail Ornella colonnes à rajouter : 4 colonnes (LR, Protection, Reglementation, ZNIEFF) avec agrégation des ''code_statuts'' par ''cd_type_statuts'' (sous quel format ?) ou 13 colonnes avec ''code_status'' en valeur ? Ajout script SQL création VM Modif script maintenance **ATTENTION** : l'ajout de ces informations pose des problèmes de performance avec une augmentation non négligeable des temps d'attentes avant le téléchargement et le risque que la demande n'aboutisse pas. Nous testerons donc la possibilité d'utiliser une vue matérialisée en remplacement de la vue dynamique actuellement utilisée. Si elle s'avère plus efficace, nous la mettrons en place. ==== Création de VM intermédiaires ==== Après avoir analysé la VM d'export de la Synthese sur Dalibo, il paraît pertinent de créer trois VM intermédiaires pour améliorer les performances (réduire le temps de rafraîchissement de la VM d'export) : * taxonomie.taxon_area_status : mettre lien vers requête SQL (https://github.com/cbn-alpin/sinp-aura-data/tree/main/db-geonature/data/sql) * gn_synthese.synthese_status : mettre lien vers requête SQL (https://github.com/cbn-alpin/sinp-aura-data/tree/main/db-geonature/data/sql) * gn_synthese.synthese_municipality : mettre lien vers requête SQL (https://github.com/cbn-alpin/sinp-aura-data/tree/main/db-geonature/data/sql) ===== Tests de performance ===== Effectués en local sur la base SINP AURA de juin 2025 (~34 millions d'observations) avec un disque SSD NMVe de Génération 4. La limite du nombre d'observations récupérées a directement été modifiée dans le [[https://github.com/PnX-SI/GeoNature/blob/f7df97e71bf2419fef8fc8383c446397f54570d8/backend/geonature/core/gn_synthese/routes.py#L500|code]] pour chaque palier. L'export a été testé avec les utilisateurs **admin** et **jpm** car le premier a tous les droits d'accès aux données sensibles et le second aucune (données sensibles dégradées). Commande pour vider le cache de la base de données (en root) : ''systemctl stop postgresql && sync && echo 1 > /proc/sys/vm/drop_caches && systemctl start postgresql'' ^ Nb données exportées ^ Vue de base (admin) ^ Vue de base (jpm) ^ Vue + statuts (admin) ^ Vue + statuts (jpm) ^ Vue + VM + statuts (admin) ^ Vue + VM + statuts (jpm) ^ VM + statuts (admin) ^ VM + statuts (jpm) ^ | 5 000 | 1.41 s | 1.56s | 4.12 s | 4.39s | 1.53s | 1.69s | 1.44s | 1.57s | | 10 000 | 1.68s | 1.93s | 6.42 s | 6.62s | 2.39s | 2.97s | 2.19s | 1.95s | | 25 000 | 2.43s | 2.61s | 13.19 s | 13.45s | 3.13s | 4.41s | 3.74s | 2.74s | | 50 000 | 3.54s | 3.81s | 24.43 s | 24.76s | 4.46s | 6.30s | 5.53s | 4.01s | | 100 000 | 5.50s | 6.96s | 46.67 s | 50.03 s | 7.07s / 16.13 s (cache postgresql vidé) | 11.72s / 17.79 s (cache postgresql vidé) | 9.72s / 9.68s (cache postgresql vidé) | 10.08s / 11.48s (cache postgresql vidé) | Résultat : La création des VM intermédiaires et le passage à une VM pour la vue d'export de la synthese est la solution la plus performante.