Installation de la base de données
Squash TM est livré avec une base de données H2 par défaut. Cette base, utilisable à des fins d'évaluation, ne doit pas être utilisée dans un contexte de production.
Squash TM est compatible avec PostgreSQL et MariaDB.
Les versions supportées et préconisées sont indiquées sur cette page.
Espace disque requis
Lors de certaines opérations impliquant la suppression massive de données, les moteurs de bases de données ne libèrent pas immédiatement l'espace disque occupé. Ces opérations peuvent temporairement augmenter l'espace utilisé par la base de données.
Par exemple, lorsque vous supprimez un grand nombre d'enregistrements, le moteur de base de données conserve initialement l'espace alloué, le marquant simplement comme disponible pour de futures utilisations. Ce comportement permet d'optimiser les performances en évitant de réorganiser constamment les fichiers de données.
Pour cette raison, il est recommandé de disposer d'un espace disque au moins 1,5 fois supérieur à la taille actuelle de la base de données. Cela garantit une marge suffisante pour les opérations de maintenance et les traitements de grandes quantités de données.
Si vous voulez récupérer effectivement l'espace disque devenu inutilisé, vous devez utiliser des commandes spécifiques :
- Pour PostgreSQL : utilisez la commande SQL
VACUUM
- Pour MariaDB : utilisez la commande SQL
OPTIMIZE TABLE
Ces commandes réorganisent physiquement les fichiers de données, libérant réellement l'espace disque qui n'est plus nécessaire.
Création de la base de données
PostgreSQL
Pour créer une nouvelle base de données pour Squash TM, passer les requêtes suivantes :
CREATE DATABASE squashtm WITH ENCODING='utf8';
CREATE USER "squash-tm" WITH PASSWORD 'password';
ALTER DATABASE squashtm OWNER TO "squash-tm";
GRANT CONNECT ON DATABASE squashtm TO "squash-tm";
MariaDB
Configuration de MariaDB
La variable @@sql_mode
doit contenir les tags suivants :
NO_ENGINE_SUBSTITUTION
STRICT_TRANS_TABLES
Et ne doit pas contenir les éléments suivants :
ONLY_FULL_GROUP_BY
EMPTY_STRING_IS_NULL
NO_BACKSLASH_ESCAPES
Les variables doivent être définies dans le fichier de configuration my.ini
, dans la section [mysqld]
.
Attention
Utiliser impérativement InnoDB. Le moteur de la base de données doit impérativement être un moteur transactionnel.
Le moteur MyISAM, par exemple, n'est pas transactionnel et risque de corrompre vos données. Son utilisation est déconseillée et Henix ne saurait être responsable des anomalies engendrées par son utilisation.
Pour créer une nouvelle base de données pour Squash TM, passer les requêtes suivantes avec un utilisateur ayant les pleins pouvoirs :
CREATE DATABASE IF NOT EXISTS squashtm CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'squash-tm'@'%' IDENTIFIED BY 'password';
GRANT USAGE ON squashtm.* TO 'squash-tm'@'%' WITH GRANT OPTION;
GRANT ALL ON squashtm.* TO 'squash-tm'@'%';
CREATE ROLE alter_squash_table_seq;
GRANT alter_squash_table_seq TO 'squash-tm'@'%';
SET DEFAULT ROLE alter_squash_table_seq FOR 'squash-tm'@'%';
FLUSH PRIVILEGES;
Installation de la base de données
La base de données est installée automatiquement au premier démarrage de Squash TM. De même, la mise à jour de la base lors des montées de version de Squash TM sera assurée par Squash TM lui-même.
Ces mises à jour sont contrôlées par le paramètre squash.db.update-mode
dont les valeurs possibles sont décrites sur cette page.
Analyse des problèmes de création de la base de données
Si des erreurs surviennent lors de l'initialisation de la base de données, vous pouvez consulter les logs dans le fichier squash-tm.log
. Les détails de l'initialisation, dont les statuts d'exécution, sont également consignés dans la table DATABASECHANGELOG
.
Suppression des Large Objects orphelins de PostgreSQL
La suppression d'objets Squash TM contenant des pièces jointes ne libère pas la place occupée par ces pièces jointes dans la base (seulement le lien vers l'espace occupé par les fichiers).
Pour libérer la place occupée sur le disque, il est nécessaire d'utiliser le programme vacuumlo
(voir la documentation de PostgreSQL) afin de rendre disponible la place qu'occupaient les pièces jointes supprimées.