Référence CLI¶
Le package installe une commande ddigraph avec des sous-commandes pour l'amorçage du schéma,
la détection de format et l'ingestion. Le CLI détecte automatiquement le format DDI par
défaut, prenant en charge les fichiers DDI Codebook, DDI-L FragmentInstance et DDI-CDI.
Vue d'ensemble des commandes¶
| Commande | Description |
|---|---|
bootstrap |
Créer les contraintes et index (Codebook + DDI-L par défaut ; ajoutez --no-include-fragments pour le codebook seul) |
load |
Charger en flux un fichier DDI XML dans Neo4j (détection automatique du format) |
detect |
Détecter le format DDI d'un fichier sans le charger |
version |
Afficher la version de ddigraph installée |
Amorçage du schéma¶
bootstrap crée les index et contraintes dont Neo4j a besoin avant
votre premier chargement. Vous pouvez l'exécuter plusieurs fois sans
risque.
# Codebook + DDI-L FragmentInstance (par défaut)
ddigraph bootstrap --neo4j-uri bolt://db:7687 --neo4j-user neo4j --neo4j-password password
# Codebook seul
ddigraph bootstrap --no-include-fragments
Chargement des données¶
La commande load détecte automatiquement le format DDI et utilise le chargeur approprié :
# Détection automatique du format (comportement par défaut)
ddigraph load /path/to/survey.xml --dataset-id demo
# Spécifier explicitement le format
ddigraph load /path/to/codebook.xml --format codebook --dataset-id demo
ddigraph load /path/to/questionnaire.xml --format lifecycle
# Pour DDI-L FragmentInstance, --dataset-id est optionnel
ddigraph load /path/to/fragments.xml
Options de chargement¶
ddigraph load FILE [OPTIONS]
Options:
--format {auto,codebook,lifecycle,cdi} Format DDI (défaut : auto)
--dataset-id ID Identifiant du jeu de données (requis pour Codebook)
--dataset-name NAME Nom lisible du jeu de données
--chunk-size N Enregistrements par lot (défaut : 200)
--writer-concurrency N Tâches d'écriture concurrentes
--dry-run / --validate-only Analyser sans écrire dans Neo4j
--replace Effacer les données existantes avant le chargement
--json Afficher les résultats en JSON
Exemples¶
# Charger en flux un DDI Codebook avec réglage de l'ingestion
ddigraph load /path/to/codebook.xml --dataset-id demo --dataset-name "Demo Survey" \
--chunk-size 500 --writer-concurrency 2 --batch-metrics --log-level DEBUG
# Valider un chargement sans écrire (analyse et plans Cypher uniquement)
ddigraph load /path/to/codebook.xml --dataset-id demo --dry-run
# Purger un jeu de données existant avant le rechargement
ddigraph load /path/to/codebook.xml --dataset-id demo --replace
# Charger un DDI-L FragmentInstance avec sortie JSON
ddigraph load /path/to/questionnaire.xml --json
Détection de format¶
Détecter le format DDI d'un fichier sans le charger :
ddigraph detect /path/to/survey.xml
# Sortie :
# Format: lifecycle
# File: /path/to/survey.xml
ddigraph detect /path/to/survey.xml --json
# Sortie : {"path": "/path/to/survey.xml", "format": "lifecycle"}
ddigraph detect /path/to/cdi-metadata.xml
# Sortie :
# Format: cdi
# File: /path/to/cdi-metadata.xml
La fonction detect_ddi_format() retourne l'une des trois valeurs : "codebook", "lifecycle" ou
"cdi". La fonction utilitaire is_cdi_format() est également disponible pour la détection
spécifique au CDI.
Variables d'environnement¶
Exportez les informations de connexion Neo4j depuis votre shell ou un fichier .env :
export DDIGRAPH_NEO4J_URI=bolt://localhost:7687
export DDIGRAPH_NEO4J_USER=neo4j
export DDIGRAPH_NEO4J_PASSWORD=secret
export DDIGRAPH_NEO4J_DATABASE=neo4j # optionnel, défaut : "neo4j"
Correspondance complète des options et variables d'environnement¶
Chaque option CLI correspond 1:1 à une variable d'environnement DDIGRAPH_. Les booléens
acceptent les chaînes vrai/faux (true/false, 1/0).
Options de connexion¶
| Option CLI | Variable d'environnement | Description |
|---|---|---|
--neo4j-uri |
DDIGRAPH_NEO4J_URI |
URI bolt/s Neo4j |
--neo4j-user |
DDIGRAPH_NEO4J_USER |
Nom d'utilisateur Neo4j |
--neo4j-password |
DDIGRAPH_NEO4J_PASSWORD |
Mot de passe Neo4j |
--neo4j-database |
DDIGRAPH_NEO4J_DATABASE |
Base de données cible (défaut : neo4j) |
Pool de connexions du pilote¶
| Option CLI | Variable d'environnement | Description |
|---|---|---|
--max-connection-pool-size |
DDIGRAPH_MAX_CONNECTION_POOL_SIZE |
Nombre max de connexions dans le pool |
--connection-timeout |
DDIGRAPH_CONNECTION_TIMEOUT |
Délai d'ouverture de connexion (secondes) |
--max-connection-lifetime |
DDIGRAPH_MAX_CONNECTION_LIFETIME |
Durée de vie du pool (secondes) |
--session-timeout |
DDIGRAPH_SESSION_TIMEOUT |
Durée de vie de la session (secondes) |
--transaction-timeout |
DDIGRAPH_TRANSACTION_TIMEOUT |
Délai de transaction côté serveur |
Options TLS¶
| Option CLI | Variable d'environnement | Description |
|---|---|---|
--encrypted |
DDIGRAPH_ENCRYPTED |
Exiger les connexions TLS |
--verify-hostname |
DDIGRAPH_VERIFY_HOSTNAME |
Vérifier le nom d'hôte TLS |
--trusted-certificates |
DDIGRAPH_TRUSTED_CERTIFICATES |
Politique de confiance (ex. TRUST_ALL_CERTIFICATES) |
--trusted-certificates-file |
DDIGRAPH_TRUSTED_CERTIFICATES_FILE |
Chemin du fichier PEM |
Réglage de l'ingestion¶
| Option CLI | Variable d'environnement | Description |
|---|---|---|
--queue-maxsize |
DDIGRAPH_QUEUE_MAXSIZE |
Seuil de contre-pression (lots) |
--chunk-size |
DDIGRAPH_CHUNK_SIZE |
Enregistrements par lot |
--writer-concurrency |
DDIGRAPH_WRITER_CONCURRENCY |
Tâches d'écriture concurrentes |
--batch-metrics |
DDIGRAPH_BATCH_METRICS |
Émettre les métriques par lot |
--strict-parsing |
DDIGRAPH_STRICT_PARSING |
Échouer sur les erreurs de syntaxe XML |
--dry-run / --validate-only |
DDIGRAPH_DRY_RUN |
Analyser sans écrire |
--replace |
DDIGRAPH_REPLACE |
Purger le jeu de données avant le chargement |
Paramètres de réessai¶
| Option CLI | Variable d'environnement | Description |
|---|---|---|
--write-retry-attempts |
DDIGRAPH_WRITE_RETRY_ATTEMPTS |
Nombre total de tentatives |
--write-retry-base-delay |
DDIGRAPH_WRITE_RETRY_BASE_DELAY |
Délai de base du backoff (secondes) |
--write-retry-jitter |
DDIGRAPH_WRITE_RETRY_JITTER |
Gigue maximale (secondes) |
Journalisation¶
| Option CLI | Variable d'environnement | Description |
|---|---|---|
--log-level |
DDIGRAPH_LOG_LEVEL |
Niveau de verbosité (DEBUG, INFO, etc.) |
--metrics-namespace |
DDIGRAPH_METRICS_NAMESPACE |
Préfixe des métriques |
Exemples de configuration TLS¶
# AuraDB (chiffrement activé ; utiliser les CA système/plateforme)
DDIGRAPH_NEO4J_URI=neo4j+s://<your-aura-host>:7687 \
ddigraph bootstrap --encrypted
# Certificat auto-signé depuis un déploiement Neo4j privé
DDIGRAPH_ENCRYPTED=true \
DDIGRAPH_TRUSTED_CERTIFICATES_FILE=/etc/ssl/certs/private-ca.pem \
ddigraph load /path/to/codebook.xml --dataset-id demo
Configuration des réessais¶
Ajustez le comportement des réessais selon les conditions réseau :
# Réessais serrés pour une défaillance rapide lorsque le cluster est sain
ddigraph load /path/to/codebook.xml --dataset-id demo \
--write-retry-attempts 2 --write-retry-base-delay 0.1 --write-retry-jitter 0
# Réessais souples pour survivre aux pertes de paquets intermittentes
DDIGRAPH_WRITE_RETRY_ATTEMPTS=5 \
DDIGRAPH_WRITE_RETRY_BASE_DELAY=1.0 \
DDIGRAPH_WRITE_RETRY_JITTER=0.5 \
ddigraph load /path/to/codebook.xml --dataset-id demo
Exemples combinés¶
Extraits prêts à copier-coller pour les configurations opérationnelles courantes :
# Limiter la durée des transactions et réessayer avec gigue
ddigraph load /path/to/codebook.xml --dataset-id demo \
--transaction-timeout 15 --write-retry-attempts 5 \
--write-retry-base-delay 0.5 --write-retry-jitter 0.25
# Observabilité au niveau des lots avec analyse stricte
DDIGRAPH_BATCH_METRICS=true \
ddigraph load /path/to/codebook.xml --dataset-id demo \
--strict-parsing --chunk-size 500 --queue-maxsize 4
# Charger un DDI-L FragmentInstance avec amorçage complet du schéma
ddigraph bootstrap
ddigraph load /path/to/questionnaire.xml --chunk-size 300
# Valider un fichier DDI-L sans écrire
ddigraph load /path/to/questionnaire.xml --dry-run --json
Notes de comportement¶
- Détection automatique du format : Lorsque
--format auto(par défaut), le CLI inspecte l'élément racine XML pour déterminer le format Codebook, FragmentInstance ou CDI. - Validation de l'identifiant du jeu de données : Pour le format Codebook,
--dataset-idest requis. Pour FragmentInstance, il est optionnel (les fragments sont auto-identifiants). - Dry-run et replace : Lorsque
--dry-runest activé,--replaceest ignoré (aucune donnée n'est modifiée). - Analyse stricte vs permissive : Le mode permissif par défaut active la récupération XML
pour passer les balises malformées. Activez
--strict-parsingpour échouer rapidement sur les erreurs de syntaxe.
Voir Architecture et DDI-L FragmentInstance pour le contexte de conception.