Préambule
Vous avez dit « Grist Document Database » ?
Le format de fichier .grist est le format d’export et de sauvegarde natif de document Grist. Mais il ne s’agit pas d’une simple archive compressée ou d’un format propriétaire opaque. Un fichier Grist est en réalité une base de données SQLite, pouvant être vu comme un sérialisé au format binaire qui regroupe à la fois les données utilisateur, la structure (tables, colonnes, types, formules), les vues et les métadonnées système, les autorisations d’accès (ACL) et même les pièces jointes du document.
Dans la pratique, un fichier .grist contient plusieurs catégories de tables :
-
Tables de données utilisateur : une table par « feuille » ou table logique du document. Ces tables contiennent les données métier ajouté par les utilisateurs.
-
Tables grist système : préfixées par
gristsyset contenant métadonnées, définitions de colonnes, vues, formules et index. -
Table des contrôles d’accès (ACL) : plusieurs tables grist système particulière responsable de la gestion des ACL. Dans Grist, une ACL permet de contrôler l’accès aux données à un niveau très fin : accès à tout le document, à une table, à une colonne, à une ligne (via des règles dynamiques de diffusion sélective d’information), à des actions (lecture, écriture, modification de structure)
-
Table des fichiers joints : table grist système particulière
gristsys_Filesresponsable du stockage des fichiers joints (a.k.a. attachments) sous forme de BLOB (Binary Large Object) avec colonnes ident, data, storageId. Dans un fichier.grist, les pièces jointes ne sont pas stockés dans un dossier à côté de la base. Ils sont injectés directement dans le fichier SQLite.
Un fichier .grist est une solution pragmatique et robuste pour sérialiser un document Grist, basé sur le concept de « single-file database ». Il combine la portabilité et l’interopérabilité de SQLite avec la richesse d’un document structuré (données, vues, formules, attachments).
Vous avez dit « SQLite » ?
SQLite est une bibliothèque en langage C, open-source, qui fournit un système de gestion de base de données relationnelle (SGBDR), avec une particularité majeure qui réside dans son architecture serverless (sans serveur).
Au lieu d’avoir un moteur de base de données séparé (comme MySQL, PostgreSQL ou SQL Server), SQLite est une bibliothèque embarquée directement dans l’application. Les données sont stockées dans un simple fichier (sérialisé binaire) sur le disque de l’ordinateur hôte. Toute la base est contenue dans un unique fichier binaire.
Exploration via le terminal d’un fichier .grist
-
Installer l’outil SQLite. Sur Windows, vous pouvez utiliser le gestionnaire de paquest Chocolatey pour simplifier son installation.
> choco install sqlite > sqlite3 --version 3.51.2 (64-bit) -
Télécharger le document complet depuis l’interface de Grist, et sauvegarder le fichier (
MonDocument.grist) sur votre ordinateur. -
Pour lister les tables du document, on utilisera la commande suivante.
> sqlite3 "MonDocument.grist" ".tables" ACTUALITES _grist_Pages ACTUALITES_summary _grist_REPL_Hist CATEGORIES _grist_Shares CONFIGURATION _grist_TabBar DATA_PAGES_MARKDOWN _grist_TabItems DESTINATAIRES _grist_TableViews EXPEDITEURS _grist_Tables LETTRES_HEBDO _grist_Tables_column LETTRES_HEBDO_summary_ref _grist_Triggers _grist_ACLMemberships _grist_Validations _grist_ACLPrincipals _grist_Views _grist_ACLResources _grist_Views_section _grist_ACLRules _grist_Views_section_field _grist_Attachments _gristsys_Action _grist_Cells _gristsys_ActionHistory _grist_DocInfo _gristsys_ActionHistoryBranch _grist_External_database _gristsys_Action_step _grist_External_table _gristsys_FileInfo _grist_Filters _gristsys_Files _grist_Imports _gristsys_PluginData -
Pour consulter le MPD complet, on utilisera la commande
> sqlite3 "MonDocument.grist" ".schema" CREATE TABLE _gristsys_Files ( id INTEGER PRIMARY KEY, ident TEXT UNIQUE, data BLOB, storageId TEXT); (...) CREATE INDEX _grist_Attachments_fileIdent ON _grist_Attachments(fileIdent); -
Pour afficher les 20 premières lignes d’une table
> sqlite3 "MonDocument.grist" "SELECT * FROM 'NomDeTable' LIMIT 20;"
Inspection avancée d’un fichier .grist dans un IDE Jetbrains
Pour les développeurs qui utilisent des IDE JetBrains (IntelliJ IDEA, PyCharm, WebStorm, PHPStorm, etc.), l’inspection d’un fichier .grist, en tant que base SQLite, est extrêmement fluide grâce à l’outil Database intégré.
Il suffit de créer une nouvelle source de données (New > Data Source > SQLite). L’IDE vous proposera alors de télécharger les pilotes nécessaires si nécessaire.
Une fois connecté, vous bénéficiez d’une interface graphique puissante pour naviguer dans les tables système (préfixé avec grist) ainsi que de vos données métier.
Vous pouvez même exécuter des requêtes SQL avec autocomplétion. Ouvrez une console SQL (Ctrl+Maj+F10) et commencez à saisir votre requête SQL.
Compléments d’informations & sources



