Ottimizzazione MVCC

I database Hyperledger Fabric utilizzano il controllo della concorrenza multi-versione (MVCC) per evitare doppie spese e incongruenze dei dati.

Quando viene aggiornato lo stesso stato, una nuova versione del record sovrascrive la versione precedente. Se sono presenti richieste concorrenti per aggiornare la stessa chiave in un blocco, potrebbe essere generato un errore MVCC_READ_CONFLICT.

Per ridurre gli errori MVCC relativi alle operazioni di trasferimento, zecca, masterizzazione e blocco, è possibile abilitare l'ottimizzazione MVCC per il codice concatenato di token. Questa ottimizzazione funziona solo su Oracle Blockchain Platform. Per impostazione predefinita, l'ottimizzazione è disabilitata. Per abilitare l'ottimizzazione, completare il passaggio successivo applicabile.

  • CLI: specificare il parametro booleano -m o --enable_mvcc_optimization con il comando ochain init. L'impostazione predefinita del parametro è false. Per abilitare l'ottimizzazione, aggiungere -m true alla riga di comando ochain init.
  • Visual Studio Code: quando si crea un codice concatenato, selezionare Abilita ottimizzazione MVCC nella finestra Crea codice concatenato.

Per utilizzare l'ottimizzazione con il codice concatenato creato nelle versioni precedenti di Blockchain App Builder, attenersi alla procedura riportata di seguito.

  1. Dopo aver installato la versione più recente di Blockchain App Builder, aggiornare il codice concatenato come descritto in Aggiornamento dei progetti Chaincode nell'interfaccia CLI e Aggiornamento dei progetti Chaincode in Visual Studio Code.
  2. Modificare il file .ochain.json nella cartella radice del codice concatenato per impostare enableMvccOptimization su true.
  3. Sincronizzare il codice concatenato, che aggiunge l'ottimizzazione e crea due nuove cartelle nella cartella radice del codice concatenato: statedb e tokens. Per ulteriori informazioni sulla sincronizzazione, vedere Sincronizzazione delle modifiche ai file di specifica con il codice sorgente generato e Sincronizzazione delle modifiche ai file di specifica con il codice sorgente generato.

Altri metodi per ovviare agli errori di MVCC_READ_CONFLICT, tra cui la richiesta di nuovi tentativi da parte dell'applicazione client quando viene generato questo errore o l'utilizzo di una coda per acquisire le richieste concorrenti prima che vengano inviate alla rete blockchain. Per ulteriori informazioni, vedere la semantica dei set in lettura-scrittura nella documentazione di Hyperledger Fabric.

Nota

L'ottimizzazione MVCC non funziona su reti ibride che includono sia Oracle Blockchain Platform che Hyperledger Fabric peer, né per i test su una rete Hyperledger Fabric locale. Non abilitare l'ottimizzazione MVCC sulle reti ibride, in quanto ciò potrebbe causare incongruenze tra peer.