Art antérieur : la structure de données qui façonne Thought OS

DEV - 19/06
L'architecture à trois fichiers La base de l'ensemble du système 1....

L'architecture à trois fichiers

La fondation de tout le système

1. La division

Chaque référentiel de notebooks contient exactement trois fichiers JSON :

  • structure.json– la hiérarchie des blocs-notes : noms, UUID, relations parents et références aux notes et sous-blocs-notes.
  • notes.json– contenu des notes régulières, saisi par UUID.
  • fichiers.json– contenu des notes de fichier (tout type de fichier), également saisi par UUID.

Cette séparation est la base sur laquelle reposent toutes les autres fonctionnalités.

2. Pourquoi trois fichiers, pas un

Un seul fichier contenant tout (structure et tout le contenu) créerait un point de changement unique pour toute modification. Chaque modification de note nécessiterait de réécrire l'intégralité du fichier. Git stockerait une nouvelle version complète à chaque fois, quelle que soit la compression delta, car le fichier serait complètement différent.

En séparant la structure du contenu :

  • Renommer un bloc-notes ou déplacer une note change uniquementstructure.json.
  • La modification d'une note change uniquementnotes.json(oufichiers.json).
  • L'ajout d'un fichier change uniquementfichiers.jsonetstructure.json(mais la structure est un petit ajout).

Chaque dossier évolue indépendamment. Git stocke les deltas pour chaque fichier séparément, donc un petit changement dansnotes.jsonse traduit par un petit delta. La taille du référentiel augmente avec le nombre de modifications, et non avec le nombre de versions multiplié par la taille totale.

Il s’agit du principal mécanisme qui maintient l’empreinte du stockage Git à un faible niveau au fil des années d’utilisation.

3. UUID comme clé commune

Les trois fichiers utilisent les mêmes UUID pour faire référence aux notes et aux fichiers.

  • structure.jsoncontient des entrées de notes avecidentifiantchamps.
  • notes.jsona des clés égales à ces UUID.
  • fichiers.jsonutilise également les mêmes UUID comme clés.

Lorsqu'une note est créée, un UUID est généré. Cet UUID est stocké dansstructure.json(dans le cadre de l'entrée de la note) et devient également une clé dansnotes.json(oufichiers.json). Les deux sont liés par l'UUID.

Cela permet au système de :

  • Chargez la structure sans charger le contenu.
  • Chargez le contenu d'une note en recherchan...
    [Courte citation de 8% de l'article original]
Loading...