Optimisation MVCC
Les bases de données Hyperledger Fabric utilisent le contrôle des accès simultanés multiversion (MVCC) pour éviter les doubles dépenses et les incohérences de données.
Lorsque le même état est mis à jour, une nouvelle version de l'enregistrement écrase l'ancienne version. S'il existe des demandes simultanées pour mettre à jour la même clé dans un bloc, une erreur MVCC_READ_CONFLICT peut être générée.
Afin de réduire les erreurs MVCC pour les opérations de transfert, de mint, de gravure et de maintien, vous pouvez activer l'optimisation MVCC pour le code chaîne de jeton. Cette optimisation fonctionne uniquement sur Oracle Blockchain Platform. Par défaut, l'optimisation est désactivée. Pour activer l'optimisation, effectuez l'étape suivante.
- CLI : indiquez le paramètre booléen
-m
ou--enable_mvcc_optimization
à l'aide de la commandeochain init
. La valeur par défaut estfalse
. Pour activer l'optimisation, ajoutez-m true
à la ligne de commandeochain init
. - Visual Studio Code : lorsque vous créez un code chaîne, sélectionnez Activer l'optimisation MVCC dans la fenêtre Créer un code chaîne.
Pour utiliser l'optimisation avec le code chaîne créé dans les versions précédentes de Blockchain App Builder, procédez comme suit :
- Après avoir installé la dernière version de Blockchain App Builder, mettez à niveau le code chaîne comme décrit dans Mise à niveau des projets de code chaîne dans l'interface de ligne de commande et Mise à niveau des projets de code chaîne dans Visual Studio Code.
- Modifiez le fichier
.ochain.json
dans le dossier racine du code chaîne pour définirenableMvccOptimization
surtrue
. - Synchronisez le code chaîne, qui ajoute l'optimisation et crée deux dossiers dans le dossier racine du code chaîne :
statedb
ettokens
. Pour plus d'informations sur la synchronisation, voir Synchroniser les modifications de fichier de spécification avec le code source généré et Synchroniser les modifications de fichier de spécification avec le code source généré.
D'autres méthodes permettent de contourner les erreurs MVCC_READ_CONFLICT, notamment de demander à l'application client de relancer les demandes lorsque cette erreur est générée, ou d'utiliser une file d'attente pour capturer les demandes simultanées avant qu'elles ne soient envoyées au réseau de chaîne de blocs. Pour plus d'informations, reportez-vous à la section Read-Write set semantics dans la documentation Hyperledger Fabric.
Remarques :
L'optimisation MVCC ne fonctionne pas sur les réseaux hybrides qui incluent à la fois des homologues Oracle Blockchain Platform et Hyperledger Fabric, ni pour les tests sur un réseau Hyperledger Fabric local. N'activez pas l'optimisation MVCC sur les réseaux hybrides, car cela pourrait entraîner des incohérences entre pairs.