L'ensemble des données est stocké dans une base de données, images comprises, cela nous a ammené à utiliser PostgreSQL (et non MySQL) pour ses possibilités de streaming sur les blobs.
Exemple sous debian :
...
| Bloc de code |
|---|
apt install postgresql |
dans pg_hba /etc/postgresql/<XX>/main/pghba.conf ajout de : ajout de
...
| Bloc de code |
|---|
host all all 127.0.0.1/32 |
...
password |
Redémarrage de postgresql
| Bloc de code |
|---|
systemctl restart postgresql.service |
Création de la base :
| Bloc de code |
|---|
su |
...
postgres |
...
psql |
...
create database esupsignature; |
...
create USER esupsignature with |
...
password 'esup'; |
...
grant ALL ON DATABASE esupsignature to esupsignature; |
Cette application a été dévelopée en utilisant Spring ROO et donc ses technologies associées.
Comme annoncé ci-dessus, lL'application a cependant été développée avec PostgreSQL : la fonction de lecture/écriture des blobs dans une transaction par streaming ; idexation postgresql (usage de tsvector/tsquery)de PostgreSQL.
Pour une bonne gestion des blob de cette application, il faut ajouter dans PostgreSQL un trigger sur la base de données sur la table big_file. La fonction lo_manage est nécessaire ici.
Sous debian :
| Bloc de code |
|---|
apt- |
...
get install |
...
postgresql-contrib |
Puis la création de l'extension lo se fait via un super-user:avec postgresql 9 :
| Bloc de code |
|---|
apt- |
...
get install |
...
postgresql-contrib |
...
psql |
...
\c esupsignature |
...
CREATE EXTENSION lo; |
Et enfin ajout du trigger (afin que les tables soient préalablement créées, notamment la table big_file sur lequel on souhaite mettre le trigger lo_manage, il faudra avant celà démarrer une fois esup-signature (avec le paramètre 'create' dans le database.properties)) :
| Bloc de code |
|---|
CREATE TRIGGER t_big_file BEFORE UPDATE OR DELETE ON big_file FOR EACH ROW EXECUTE PROCEDURE lo_manage(binary_file); |
CF https://www.postgresql.org/docs/9.4/static/lo.html
...