1. Introduction

1.1. Avertissement

Ce document fait état du travail en cours. Il est susceptible de changer de manière conséquente au fur et à mesure de l’avancée des développements.

1.2. Objectif du document

Ce document a pour objectif de présenter la structure générale des collections utilisées dans la solution logicielle Vitam. Il est destiné principalement aux développeurs, afin de leur présenter l’organisation des données dans la solution logicielle Vitam, ainsi qu’à tous les autres acteurs du programme pour leur permettre de connaître ce qui existe en l’état actuel.

Il explicite chaque champ, précise la relation avec les sources (par exemple bordereau de transfert conforme au standard SEDA v.2.1, référentiel Pronom, etc…) et la structuration JSON stockée dans la base de données MongoDB. Ce document est structuré de façon à suivre l’ordre des bases et collections dans Mongo.

Pour chacun des champs, cette documentation apporte :

  • Une liste des valeurs licites
  • La sémantique ou syntaxe du champ
  • La codification en JSON

Il décrit aussi parfois une utilisation particulière faite à une itération donnée. Cette indication diffèrant de la cible finale, le numéro de l’itération de cet usage est mentionné.

1.3. Création des index

Les différents index sont créés par ansible, plate-forme logicielle libre. Les fichiers à renseigner pour rajouter un nouvel index sont stockés dans le répertoire deployment/ansible-vitam/roles/mongo_configure/templates/init-{nom-base}-database.js.j2

1.4. Généralités

1.4.1. Collections et bases

Les bases Mongo sont organisées en bases et collections.

Les bases contiennent différentes collections. Les collections peuvent être rapprochées du concept de tables en SQL.

1.4.2. Cardinalité

La cardinalité présentée pour chacun des champs correspond aux exigences de la base de données Mongo.

Certains champs ayant une cardinalité 1-1 sont directement renseignés par la solution logicielle Vitam et sont donc obligatoirement présents dans la base de données, mais ne le sont pas forcément dans les données envoyées.

1.4.3. Nommage des champs

Les champs des fichiers JSON présents dans les collections peuvent être nommés de deux manières :

  • « champ » : un champ sans underscore est modifiable via les API.
  • « _champ » : un champ commençant un underscore n’est pas modifiable via les API. Une fois renseigné dans la solution logicielle Vitam par le bordereau de transfert ou la solution logicielle Vitam, il ne pourra plus être modifié depuis l’extérieur.

1.4.4. Identifiants

Il existe plusieurs types d’identifiant :

  • GUID : identifiant unique de 36 caractères généré par la solution logicielle Vitam.
  • PUID : identifiant des formats dans le référentiel Pronom.
  • PID : identifiant de processus Unix.

1.4.5. Dates

Toutes les dates décrites dans ce document sont au format ISO 8601. Exemple : "2017-11-02T13:50:28.922".

1.4.6. Limite de caractères acceptés dans les champs

Mongo est un type de base de données dite « schemaless », soit sans schéma. Ainsi, les champs contenus dans les collections décrites dans ce document sont, sauf mention contraire, sans limite de caractères.

1.4.7. Type d’indexation dans ElasticSearch

Les champs peuvent être indexés de deux façons différentes dans ElasticSearch :

  • Les champs analysés : les informations contenues dans ces champs peuvent être retrouvées par une recherche full-text. Par exemple, les champs Description, Name.
  • Les champs non analysés : les informations contenues dans ces champs peuvent être retrouvées par une recherche exacte uniquement. Par exemple, les champs Identifier ou OriginatingAgency.