Architecture de l’application

Cette section contient des renseignements techniques sur la mise en œuvre actuelle de l’application dorsale de la Base de données sur les obstacles aquatiques du Canada (BDOAC), y compris les services d’éléments et de tuiles vectorielles ainsi que le dictionnaire de données de la BDOAC. Le public cible est composé des développeurs de logiciels et des utilisateurs techniques similaires qui cherchent à mettre à niveau ou à maintenir le système actuel ou à utiliser les points de fin API.

Mise en œuvre actuelle


L’application actuelle repose sur deux serveurs d’applications Web Java Microsoft Azure, cabd-web (pour les données BDOAC) et chyf-web (pour les données CHyF).

../_images/app-arch3.jpg

Éléments et modèles de base de données


Modèle d’élément BDOAC

Modèle d’élément générique

Les éléments dans la BDOAC ont une structure hiérarchique facultative. Il est possible de combiner les types d’éléments pour former des supertypes.

Il n’y a pas de structure dans le logiciel ou la base de données qui appliquent ce modèle. On utilise les vues de la base de données (voir section ci-dessous) pour définir les différents types et supertypes d’éléments. Au besoin, il est possible d’associer un type d’éléments à plusieurs supertypes.

../_images/genericmodel.jpg

Modèle d’élément mis en œuvre

Trois types d’éléments et un supertype sont actuellement mis en œuvre dans la BDOAC.

../_images/implementedmodel.jpg

Types d’éléments :

  • barriers - un supertype d’élément qui comprend des barrages, des chutes et d’autres structures.

  • dams - un type couvrant les éléments classés comme barrage ou autre structure.

  • waterfalls - un type couvrant les éléments classés comme chute.

  • fishways - un type couvrant les éléments classés comme passe à poissons.

  • medium - un type d’élément que l’on a créé pour tester l’augmentation du volume de données prévue en ce qui a trait aux données relatives aux franchissements de cours d’eau.

  • big - un type d’élément que l’on a créé pour tester l’augmentation du volume de données prévue en ce qui a trait aux données relatives aux franchissements de cours d’eau.

Modèle de base de données BDOAC

La base de données est structurée en plusieurs schémas. Chaque type d’élément a son propre schéma, avec un schéma BDOAC commun pour les données transmises et les métadonnées des éléments.

Vues des éléments

Chaque type et supertype d’élément a deux vues qui prennent en charge l’API – une pour l’anglais (_en) et une pour le français (_fr). Ces vues devraient inclure tous les champs requis pour l’édition (pour l’affichage dans l’interface utilisateur ou pour prendre en charge la future API d’édition).

La vue prend en charge tous les points de fin de l’API des éléments.

The view cabd.all_features_view_<en/fr> supports all feature api endpoints.

On utilise les vues pour la prise en charge des API de la BDOAC qui répertorient les éléments. Chaque type d’élément est lié à une vue de la base de données. Lors de la demande d’éléments d’un type particulier, la vue associée à ce type est interrogée. On utilise les champs récupérés au moyen de cette vue pour saisir les attributs de l’élément récupéré au moyen de l’API. Les vues de type d’élément interrogent généralement un seul tableau de données (par exemple, la vue des dams interroge le tableau de données des barrages). Les supertypes d’éléments interrogent généralement plusieurs tableaux de données (par exemple, la vue des barriers interroge le tableau de données des barrages et celui des chutes).

Vue de mise à jour des éléments

Chaque élément comprend un attribut updates_pending indiquant une valeur true ou false indiquant s’il y a des mises à jour d’élément en attente d’examen dans le système. Le système remplit ce champ au moyen de la vue cabd.updates_pending. Cette vue devrait afficher une seule colonne, cabd_id, pour chaque élément pour lequel il y a un examen en attente dans la base de données.

Tableaux de base

Il s’agit des tableaux de base du système. Ils sont requis, quels que soient les types d’éléments chargés. Ils prennent en charge la définition des types d’éléments.

cabd.feature_types

Indique tous les types d’éléments pris en charge par le système.

Column

Description

type

L’identifiant unique pour le type d’élément. Obligatoire.

data_view

Le nom racine de la vue de données qui prend en charge le type d’élément. Il s’agit du nom de vue sans le suffixe de la langue (par exemple, dams_view). Obligatoire.

name_en

Le nom anglais interprétable par l’utilisateur du type d’élément. Obligatoire.

name_fr

Le nom français interprétable par l’utilisateur du type d’élément. Obligatoire.

attribute_source_table

Le tableau de données contenant les renseignements sur la source des données sur les attributs pour le type d’élément. Ce paramètre est facultatif et peut être réglé à null.

default_featurename_field

Le champ de la vue data_view qui représente le nom de l’élément principal.

feature_source_table

Le tableau de données contenant un lien entre les éléments et les renseignements de la source de données. Ce paramètre est facultatif et peut être réglé à null.

data_version

Le numéro de version des données pour le type d’élément. Ce numéro de version est inclus dans les exportations.

cabd.feature_type_metadata

Indique tous les attributs pour une vue d’éléments donnée ainsi que des renseignements détaillés sur les métadonnées de l’attribut.

Column

Description

view_name

Le nom de la vue de données.

field_name

Le nom du champ de la vue de données qui représente cet attribut.

name_en

Le nom anglais de l’attribut.

name_fr

Le nom français de l’attribut.

description_en

Une description en anglais de l’attribut.

description_fr

Une description en français de l’attribut.

is_link

Opérateur booléen. Si la valeur est true, cet attribut sera traité comme une URL dans l’API. La valeur sera renvoyée au format URL (par exemple, lien vers un autre élément).

data_type

Le type de données pour l’attribut. Valeurs valides : varchar(xxx), text, boolean, array(type), integer, double, uuid, date, geometry.

vw_simple_order

Métadonnées pour l’interface utilisateur. L’interface utilisateur offre une vue simple et complète des attributs. Ce champ représente l’ordre dans lequel l’attribut devrait être affiché dans la vue de l’interface utilisateur simple. La valeur devrait être réglée à null pour les attributs qui ne doivent pas être affichés dans la vue simple.

vw_all_order

Métadonnées pour l’interface utilisateur. L’interface utilisateur offre une vue simple et complète des attributs. Ce champ représente l’ordre dans lequel l’attribut devrait être affiché dans la vue de tous les attributs. La valeur devrait être réglée à null pour les attributs qui ne devraient pas être affichés dans la vue.

include_vector_tile

Opérateur booléen. Si la valeur est true, cet attribut sera inclus dans le service de tuiles vectorielles.

value_options_reference

Pour les colonnes ayant une liste définie des valeurs valides dans un autre tableau de la base de données (par exemple, province_territory_code), ce champ indique le tableau à partir duquel les valeurs peuvent être chargées ainsi que les champs du tableau qui fournissent la valeur, le nom et la description. La valeur de cette colonne devrait être réglée à null pour les champs qui ne font pas référence à des tableaux.

La chaîne devrait présenter la forme suivante : <tablename>;<valuefield>;<namefield>;<descriptionfield>. Toutes ces valeurs sont obligatoires, sauf valuefield et descriptionfield. La valeur tablename fait référence au tableau de codes, la valeur valuefield fait référence au champ de valeur du tableau de codes, la valeur namefield fait référence au champ de nom interprétable par l’utilisateur, et la valeur descriptionfield fait référence au champ de description du tableau. Les champs du nom et de la description devraient exclure le suffixe de la langue, et chaque tableau de référence devrait comporter les colonnes _en et _fr pour les champs du nom et de la description.

Par exemple, dams.use_codes;code;name;description dams.use_codes;code;name;description ou cabd.province_territory_codes;code;name;.

is_name_search,Valeur « true » (vrai) si le champ doit être inclus dans la recherche Name API. Doit être réglé à true pour tous les attributs qui représentent le nom de l’élément ou que l’on souhaite inclure lors d’une recherche par nom.

cabd.data_source

Indique les sources des données. Prend en charge le suivi des sources des données pour les attributs des types d’éléments.

Column

Description

id

Un identifiant unique pour la source de données.

name

Nom de la source de données (correspond aux noms abrégés indiqués à la <https://cabd-docs-fr.netlify.app/docs_user/docs_user_data_sources.html>`_).

version_date

Date de la version des sources des données.

version_number

Numéro de la version des sources des données (facultatif).

source

Un lien vers les données sources ou une référence complète ainsi qu’une description de l’origine des données sources.

comments

Autres commentaires sur la source de données.

source_type

Type de source de données (spatiale ou non spatiale).

cabd.contacts

Une liste de personnes-ressources pertinentes pour la base de données BDOAC. Actuellement, les personnes-ressources ne sont créées que lorsqu’un utilisateur soumet une mise à jour d’élément.

Column

Description

id

Numéro unique généré par le système

email

Adresse courriel de l’utilisateur

name

Nom de l’utilisateur

organization

(Facultatif) Organisation associée à l’utilisateur

datasource_id

(Facultatif) Lien vers le tableau cabd.data_source, qui représente la source de données associée à l’utilisateur.

cabd.user_feature_updates

Les utilisateurs peuvent utiliser l’API des éléments pour soumettre des mises à jour d’élément. Toutes les soumissions sont consignées dans ce tableau.

Column

Description

id

Identifiant unique généré par le système

datetime

Date et heure de la soumission

contact_id

Lien vers la personne-ressource qui a soumis la modification

cabd_id

Lien vers l’élément auquel la mise à jour fait référence

cabd_type

Type d’élément BDOAC

user_description

La description de la mise à jour fournie par l’utilisateur

user_data_source

La source de données fournie par l’utilisateur

status

Champ interne représentant l’état de la mise à jour. Géré par les administrateurs de la BDOAC.

Tableaux d’attributs communs

Tous ces tableaux stockent des données communes à plusieurs types d’éléments. En général, chacun de ces tableaux a un code unique (pour les références), un nom et une description.

  • cabd.barrier_ownership_type_codes

  • cabd.fish_species

  • cabd.nhn_workunit

  • cabd.passability_status_codes

  • cabd.province_territory_codes

  • cabd.upstream_passage_type_codes

  • cabd.census_subdivisions

Tableaux d’éléments

Les tableaux de données des types d’éléments se trouvent dans le schéma correspondant. En général, il y a un tableau de données d’éléments et plusieurs tableaux de référence qui représentent les valeurs d’attributs. Le dictionnaire de données contient des renseignements détaillés sur les types d’éléments actuels.

Sources des données des attributs des types d’éléments

La base de données BDOAC offre la possibilité de consigner la source de données pour chaque attribut associé au type d’élément. À cette fin, on a mis en place des tableaux <featuretype>.<featuretype>_feature_source et <featuretype>.<featuretype>_attribute_source pour le type d’élément (par exemple, dams.dams_feature_source et dams.dams_attribute_source).

Pour chaque élément BDOAC, le tableau <featuretype>_feature_source contient un lien vers les sources des données ainsi que les identifiants des éléments de la source de données connexe dans laquelle l’élément a été trouvé. Par exemple, un barrage trouvé à la fois dans les sources des données nrcan_canvec_mm et bceccs_fiss aura deux entrées pour sa valeur cabd_id dans le tableau <featuretype>_feature_source.

<featuretype>_feature_source

Column

Description

cabd_id

L’identifiant d’élément unique de la BDOAC. Cet identifiant doit être indiqué dans le tableau de données correspondant pour le type d’élément.

datasource_id

Lien vers l’identifiant de source de données dans le tableau cabd.data_source.

datasource_feature_id

L’identifiant de l’élément dans la source de données.

Le tableau <featuretype>_attribute_source contient la valeur`` cabd_id`` ainsi qu’une colonne pour chaque attribut nécessitant un suivi de la source des données. La colonne <attribute>_ds renvoie au tableau cabd.data_source à des fins de détermination de la source de données pour la valeur de l’attribut.

<featuretype>_attribute_source

Column

Description

cabd_id

L’identifiant d’élément unique de la BDOAC. Cet identifiant doit être indiqué dans le tableau de données correspondant pour le type d’élément.

<attribute1>_ds

Un lien vers l’identifiant de source de données dans le tableau cabd.data_source dont la valeur <attribute1> provient pour l’élément.

<attribute2>_ds

Un lien vers l’identifiant de source de données dans le tableau cabd.data_source dont la valeur <attribute2> provient pour l’élément.

Journal d’audit et suivi des modifications

La base de données BDOAC effectue le suivi des modifications aux tableaux suivants :

  • cabd.contacts

  • cabd.fish_species

  • cabd.data_source

  • dams.dams

  • dams.dams_attribute_source

  • dams.dams_feature_source

  • waterfalls.waterfalls

  • waterfalls.waterfalls_attribute_source

  • waterfalls.waterfalls_feature_source

  • fishways.fishways

  • fishways.fishways_attribute_source

  • fishways.fishways_feature_source

  • fishways.species_mapping

On peut aussi ajouter le suivi des modifications aux nouveaux types d’éléments en appliquant les déclencheurs appropriés à tout nouveau tableau de bases de données pertinent.

Toutes les modifications sont consignées dans le tableau cabd.audit_log. Ce tableau comporte les colonnes suivantes :

Column

Description

revision

Le numéro de révision unique et incrémentiel.

datetime

L’horodatage associé à la modification.

username

L’utilisateur qui a effectué la modification. Il s’agit de l’utilisateur PostgreSQL qui a effectué la modification.

schemaname

Le schéma du tableau modifié.

tablename

Le nom du tableau modifié.

action

INSERT, UPDATE ou DELETE.

cabd_id

L’identifiant d’élément BDOAC, le cas échéant, ou la valeur null. Ce champ sera rempli pour la plupart des modifications, mais il ne sera pas rempli pour les modifications apportées aux tableaux contacts, fish_species et datasources.

datasource_id

L’identifiant de la source de données, le cas échéant, ou la valeur null. Ce champ sera rempli si le tableau comporte un champ datasource_id qui fait partie de la clé primaire du tableau.

id_pk

La clé primaire pour la ligne en cours de modification, le cas échéant, ou la valeur null. Ce champ est rempli pour les tableaux dont les clés primaires ne sont pas cabd_id ou datasource_id (par exemple, contacts et fish_species).

oldvalues

Les valeurs originales de la ligne (avant la mise à jour). Cela n’inclut que les valeurs qui ont été modifiées.

newvalues

Les nouvelles valeurs pour la ligne. Cela n’inclut que les valeurs qui ont été modifiées. Les valeurs qui restent inchangées ne sont pas incluses.