2026.07.08 (Mer)
2026.07.22 (Mer) mis Ă  jour

✹ RĂ©sumĂ© de GPT-5.5

Retour sur le passage Ă  PostgreSQL de donnĂ©es de rĂ©fĂ©rence qui ne cessaient de bouger entre JSON, CSV et DuckDB, en sĂ©parant Ă©lĂ©ments probants d’origine, observations, donnĂ©es de rĂ©fĂ©rence, snapshots d’exĂ©cution et artefacts de livraison.

Les données de référence ne cessaient de bouger entre JSON, CSV et DuckDB

Pendant plusieurs jours de mise en place du flux de collecte, de revue, d’exĂ©cution et de livraison des donnĂ©es, toutes sortes de problĂšmes ont continuĂ© Ă  surgir. Comme je n’ai jamais vraiment appris ni utilisĂ© les bases de donnĂ©es sĂ©rieusement, je changeais souvent de mĂ©thode de stockage, et chaque changement ne se limitait jamais Ă  un simple remplacement.

Au dĂ©but, je collectais les donnĂ©es en JSON et en CSV, puis j’avais ajoutĂ© DuckDB pour pouvoir les consulter. Mais les sorties des workers se sont mĂ©langĂ©es Ă  une structure oĂč le coordinateur reconstruisait sans cesse la base de donnĂ©es, et je perdais constamment la distinction entre donnĂ©es sources et donnĂ©es de rĂ©fĂ©rence.

J’ai aussi prĂ©parĂ© un plan pour construire la base de donnĂ©es avec MySQL. Mais le problĂšme n’était pas MySQL en lui-mĂȘme. Le problĂšme venait d’une structure oĂč plusieurs workers ou scripts mettaient directement Ă  jour les donnĂ©es de rĂ©fĂ©rence. Avec cette approche, les mises Ă  jour simultanĂ©es, les conflits, la responsabilitĂ© et les retours en arriĂšre risquaient de se rĂ©pĂ©ter.

J’ai ensuite examinĂ© d’autres approches, mais le problĂšme de fond restait le mĂȘme. Lorsque les frontiĂšres entre donnĂ©es collectĂ©es, donnĂ©es de rĂ©fĂ©rence, donnĂ©es d’exĂ©cution et artefacts de livraison sont floues, le mĂȘme problĂšme finit par revenir.

La responsabilité des mutations comptait plus que le produit de base de données

Le passage à PostgreSQL ne résolvait pas le problÚme à lui seul. Avant de choisir une base de données, il fallait décider qui avait le droit de modifier les données de référence.

Les workers laissent les Ă©lĂ©ments probants d’origine et leurs observations sous une forme append-only. Ils ne modifient pas directement les donnĂ©es de rĂ©fĂ©rence. Le coordinateur examine ces Ă©lĂ©ments et ces observations, puis met Ă  jour les donnĂ©es et les valeurs de rĂ©fĂ©rence. Centraliser Ă  un seul endroit la responsabilitĂ© de modifier ces donnĂ©es permettait aussi de retrouver ce qu’il fallait annuler lorsqu’un conflit survenait.

J’ai rĂ©parti les rĂŽles dans PostgreSQL

Aujourd’hui, en passant Ă  une base PostgreSQL, j’ai donc aussi rĂ©organisĂ© tout le flux mis en place pendant plusieurs jours. Au lieu de tout traiter comme un seul bloc de base de donnĂ©es, j’ai sĂ©parĂ© les rĂŽles.

  • ÉlĂ©ments probants d’origine
    • Stocker les Ă©lĂ©ments probants et les valeurs d’origine collectĂ©s depuis des sources publiques
    • Conserver les valeurs traitĂ©es et les Ă©tats dans un historique sĂ©parĂ© au lieu d’écraser la source
    • Les fichiers JSON et CSV peuvent servir de miroirs de ces Ă©lĂ©ments, mais ne sont pas les donnĂ©es de rĂ©fĂ©rence
  • Observations
    • Les workers soumettent uniquement les observations de leur canal de collecte dans un registre append-only
    • La dĂ©couverte et l’enrichissement sont sĂ©parĂ©s en deux rĂŽles diffĂ©rents
    • Les workers ne modifient pas directement les donnĂ©es de rĂ©fĂ©rence
  • DonnĂ©es de rĂ©fĂ©rence
    • Le coordinateur examine les Ă©lĂ©ments probants et les observations
    • Seules les valeurs validĂ©es sont intĂ©grĂ©es aux donnĂ©es de rĂ©fĂ©rence selon la structure dĂ©finie
    • Les vues servent de surfaces de calcul, de revue et d’export
  • Snapshots d’exĂ©cution
    • Une vue de collecte ne sert pas directement de base Ă  l’exĂ©cution rĂ©elle
    • Les cibles qui passent les contrĂŽles de dĂ©duplication et de qualitĂ© sont figĂ©es dans un snapshot Ă  un instant donnĂ©
    • Les rĂ©sultats d’exĂ©cution, les exclusions et les Ă©tats de suivi sont gĂ©rĂ©s sĂ©parĂ©ment des donnĂ©es de rĂ©fĂ©rence
  • Artefacts de livraison
    • Les fichiers livrĂ©s au format CSV, Google Sheets, Excel ou pour vox.ai sont gĂ©nĂ©rĂ©s depuis les donnĂ©es de rĂ©fĂ©rence ou les snapshots d’exĂ©cution
    • Ce sont des artefacts destinĂ©s Ă  l’affichage ou Ă  la livraison
    • Ils ne sont pas ensuite modifiĂ©s comme s’ils Ă©taient les donnĂ©es de rĂ©fĂ©rence

Le flux devenait traçable des Ă©lĂ©ments probants jusqu’à l’exĂ©cution et Ă  la livraison

J’ai ainsi terminĂ© un flux oĂč il devenait possible de suivre l’endroit oĂč s’accumulent les Ă©lĂ©ments probants collectĂ©s, ce que les workers laissent, quelles valeurs deviennent des valeurs de rĂ©fĂ©rence, quel snapshot sert Ă  l’exĂ©cution rĂ©elle et ce qui devient un artefact de livraison.

Bien sĂ»r, cette structure reste encore trĂšs imparfaite et il y aura beaucoup de choses Ă  retoucher. Je vais continuer Ă  tester, recueillir des retours et corriger, et toutes sortes de grands bouleversements finiront sĂ»rement par se produire. C’est comme cela que le flux, la structure du harness et mon intuition continueront tous Ă  Ă©voluer.

Je partage cela au cas oĂč la mise en place de mon flux pourrait aider quelqu’un.

Laisser un commentaire