NF14658 — Séparation des données de la base de données en les stockant sur le disque dur

De Documentation Polaris
Aller à : navigation, rechercher
Disponible depuis la version 7.01.0.32015

Voir la carte de la fonctionnalité : A classer



Concept

Fonctionnalité

Nous gérons dorénavant le stockage des photos en dehors de la base de données, sur fichiers plats, dans les répertoires /var/polaris/media/photos pour les photos originales et /var/polaris/web-cache/medias/photos pour leur miniatures (extra-petites, petites, moyennes, larges et extra-larges).

Ce mode de gestion nous permet de gérer deux types de photos :

  • les photos originales,
  • et les miniatures générées à partir des photos originales, dans diverses tailles, à la demande ;

Enfin, les photos sont désormais téléchargées en HTTP depuis le service de réplication.

Si ce dernier n'a pas la photo ou la miniature demandée, qu'il n'est pas le TLR et que ce dernier est en ligne, le service va la charger depuis son superviseur avant de la mettre en cache puis de la renvoyer au demandeur. Une requête ultérieure sera donc servie du cache sans autre consommation de bande passante Internet.

Lors d'une demande d'affichage de miniature, pour gagner du temps, de la place disque et de la bande passante Internet, les services secondaires vérifient qu'ils ne peuvent pas la générer depuis la photo originale si celle-ci est présente sur le disque, et à défaut, ne téléchargent pas la photo originale, mais directement la miniature de la taille demandée.

Problématique

Nous avons entrepris cette fonctionnalité pour les raisons suivantes :

  • gain d'espace : il est inutile d'avoir des photos grand format sur les caisses, mais il peut être utile de conserver des photos de très haute résolution en cas de site Internet, nous avons donc besoin de gérer différentes tailles de photos en fonction des usages ;
  • gain de performance : les photos occupant beaucoup de place en base de données, les opérations sur cette dernière sont plus rapides et moins soumises à corruption ;
  • gain de complexité : les photos gérées dans la base de données nécessitent beaucoup de code pour être gérées et chaque action demande une modification programme ; en les transférant sur fichiers plats, nous ouvrons le champ des possibles sur leur gestion par des méthodes plus triviales et moins dépendantes de Polaris (bash de conversion de format, de retaillage automatique, ...) ;
  • gain de productivité : lors d'une synchronisation ou d'une sauvegarde, les photos prennent beaucoup d'espace et de temps, en les stockant sur fichier plat accessible au système d'exploitation, il est possible de programmer leur backup de manière séparé et incrémentiel (sauvegarder seulement les nouveaux fichiers ou les fichiers ayant changés et non la totalité des photos à chaque passe)

Fonctionnement

Stockage

Chaque photo continue d'être indexée dans la base de données (taille, signature, appartenance au diaporamas, ordre d'apparition) : il n'est donc pas recommandée de les supprimer en effaçant le fichier associé à celle-ci !

Les photos et les miniatures sont stockées par leur numéro interne dans la base et leur type, après un découpage de leur nom (pour éviter la surcharge des répertoires et accélérer leur recherche).

Ainsi, la photo originale 16384 de type PNG est stockée dans le fichier : /var/polaris/medias/photos/1/6/3/8/4/16384.png

Si elle existe, sa miniature large sera elle stockée dans le fichier : /var/polaris/web-cache/medias/photos/512x512/1/6/3/8/4/16384.png

Synchronisation

Lors d'une synchronisation, les photos ne sont jamais transmises dans la sauvegarde mais leurs miniatures utilisées sont tirées par le service enfant en HTTP ultérieurement.

Pour se faire, le système se souvient qu'il doit effectuer un téléchargement de toutes les miniatures manquantes (selon sa configuration, voir plus bas) en déposant un fichier nommé mirroring-photo dans /var/polaris et recommencera le processus à chaque connexion avec le service superviseur tant que ce fichier existe.

Une fois toutes les miniatures passées en revue, ce fichier est détruit.

Sauvegarde / Restauration

Lors d'une sauvegarde complète (full), seules les photos originales sont sauvegardées.

Lors d'une restauration d'une sauvegarde contenant des photos, les photos originales et les miniatures sont préalablement effacées avant la restauration des photos originales. Selon le nombre de photos, la vitesse et la nature du disque, ce traitement peut prendre beaucoup de temps et de ressources.

Calcul

Sur le TLR les miniatures sont recalculées à partir des photos originales lorsqu'elles ne sont pas disponibles, vous pouvez donc supprimer le répertoire /var/polaris/web-cache/medias/photos sans craindre perte de données, même temporaire.

En revanche, attention, la suppression du répertoire /var/polaris/media/photos entraîne la suppression définitive de toutes les photos.

Sur les services de réplication secondaires, les photos originales ne sont pas systématiquement téléchargées au profit de leur miniatures. La suppression du répertoire cache contenant ces dernières provoquera alors le retéléchargement des photos à la volée depuis le service superviseur, si ce dernier est disponible : il existe donc un risque de perte de données, temporaire et circonscrit.

Consultation extérieure

Les photos étant dorénavant manipulée via HTTP, il est possible pour une application extérieure de les tirer directement, à condition de connaître leur numéro interne. Pour tirer la photo 16384, quelque soit son format, en taille moyenne, il vous suffit d'appeler cette URI sur n'importe quel service de réplication (ici, celui de la machine) :

http://localhost:3000/core/api/Medias.FetchPhoto?no_photo=16384&photoSize=m

Cela fonctionne également depuis n'importe quel navigateur.

Nouvelle photo

Ci-dessous est présenté l'algorithme général de création de photo :

Affichage d'une photo ou d'une miniature

Ci-dessous se trouve l'algorithme général de consultation des photos :

Paramétrage

La taille des photos rapatriées et affichées sur le terminal d'accès, dans les diaporamas ou dans les analyses est paramétrable dans les options du diaporama (paramétrage au service de réplication Système > paramétrage > Options générales > Options de diaporama > Taille des photos locales sur le service de réplication).

Nous conseillons de partir d'une petite résolution et de monter si elle ne s'avère pas suffisante (trop floue ou pixelisée). Ce paramétrage n'est pas destructif et vous pouvez passer de l'un à l'autre sans perdre vos photos originales : nous travaillons que sur des copies !

Évidement, plus c'est petit, et moins cela prend de place sur le disque dur !

Vous pouvez choisir entre :

  • extra-petite : 64px de large, pour se faire une idée générale, mais vraiment petit ;
  • petite : 128px de large, à privilégier pour les repaires visuels ;
  • moyenne : 256px de large, suffisant pour un affichage en caisse ;
  • large : 512px de large, amplement suffisant pour toutes les utilisations de gestion ;
  • extra-large : 1024px de large, une plus grande finesse dans le détail des photos à l'affichage et à l'impression ;
  • originale : utilise la taille originale de la photo (comme les versions précédentes) ;

Option obsolète

La tâche automatisée Retaillage des photos a été supprimée puisqu'obsolète (Système > Gestion des tâches automatisées > Créer > Rubrique "Import/export").