Crea il database Rich History

Questo argomento contiene informazioni utili per specificare una connessione a Oracle Database e scegliere i canali per creare il database della cronologia avanzata. Utilizzerai questo database per creare report di analisi e visualizzazioni delle attività del libro contabile.

Cos'è il Rich History Database?

Il ricco database cronologico è esterno a Oracle Blockchain Platform e contiene dati sulle transazioni del libro contabile blockchain nei canali selezionati. Utilizzare questo database per creare report di analisi e visualizzazione sulle attività del libro contabile.

Ad esempio, utilizzando il ricco database della cronologia, è possibile creare analytics per apprendere il saldo medio di tutti i clienti della banca in un determinato intervallo di tempo o il tempo necessario per spedire la merce da un grossista a un retailer.

Internamente, Oracle Blockchain Platform utilizza il database della cronologia di Hyperledger Fabric per gestire il libro contabile e presentare le informazioni sulle transazioni del libro contabile nella console. Solo i codici concatenati possono accedere a questo database della cronologia e non è possibile esporre il database della cronologia di Hyperledger Fabric come origine dati per le query analitiche. Il rich history database utilizza una copia esterna di Oracle Database e contiene molti dettagli su ogni transazione di cui è stato eseguito il commit su un canale. Questo livello di raccolta dei dati rende il ricco database di cronologia un'ottima fonte di dati per gli analytics. Per informazioni sui dati raccolti dal database della cronologia avanzata, vedere Tabelle e colonne del database della cronologia ricca.

Puoi utilizzare solo un database come Oracle Autonomous AI Lakehouse o Oracle Base Database Service con Oracle Cloud Infrastructure per creare il tuo ricco database di cronologia. Utilizzare la console di Oracle Blockchain Platform per fornire la stringa di connessione e le credenziali per accedere e scrivere nel database. Si noti che le credenziali fornite sono le credenziali del database e Oracle Blockchain Platform non le gestisce. Dopo aver creato la connessione, verranno selezionati i canali che contengono i dati del libro contabile che si desidera includere nel database della cronologia avanzata. Vedere Abilitazione e configurazione del database Rich History.

È possibile utilizzare tabelle standard o tabelle blockchain per memorizzare il database della cronologia avanzata. Le tabelle blockchain sono tabelle di sola aggiunta a prova di manomissione, che possono essere utilizzate come libro contabile sicuro e allo stesso tempo disponibili per transazioni e query con altre tabelle.

È possibile utilizzare qualsiasi strumento di analitica, ad esempio Oracle Analytics Cloud o Oracle Data Visualization Cloud Service, per accedere al database della cronologia avanzata e creare report di analitica o visualizzazioni dati.

Creare la stringa di connessione di Oracle Base Database Service

È necessario raccogliere informazioni da Oracle Base Database Service distribuito su Oracle Cloud Infrastructure per creare la stringa di connessione richiesta dal database rich history. È inoltre necessario abilitare l'accesso al database tramite la porta 1521.

Trovare e registrare informazioni su Oracle Base Database Service

Le informazioni necessarie per creare una connessione a Oracle Base Database Service sono disponibili nella console di Oracle Cloud Infrastructure.

  1. Nella console dell'infrastruttura, selezionare Database dal menu di navigazione.
  2. Individuare il database a cui connettersi e registrare l'indirizzo IP pubblico.
  3. Selezionare il nome del database a cui connettersi e registrare i valori nei campi riportati di seguito.
    • Nome univoco del database
    • Nome dominio host
    • Porta
  4. Individuare un nome utente e una password di un utente di database (ad esempio, utente SYSTEM) con le autorizzazioni per leggere da questo database e prendere nota di questi elementi.

Abilitare l'accesso al database tramite la porta 1521

Aggiungere una regola di entrata che consenta al database rich history di accedere al database tramite il porta 1521.

  1. Nella home page di Oracle Cloud Infrastructure selezionare l'icona di navigazione, quindi in Database selezionare Sistemi DB.
  2. Selezionare il database al quale si desidera connettersi.
  3. Selezionare il collegamento Virtual Cloud Network.
  4. Passare alla subnet appropriata, quindi in Elenchi sicurezza selezionare Elenco di sicurezza predefinito per <Database di destinazione>.

    Viene visualizzata la pagina Lista di sicurezza.

  5. Selezionare Modifica tutte le regole.
  6. Aggiungere una regola di entrata per consentire a qualsiasi traffico in entrata dalla rete Internet pubblica di raggiungere la porta 1521 in questo nodo del database, con le impostazioni seguenti:
    • CID ORIGINE: 0.0.0.0/0

    • PROTOCOLLO IP: TCP
    • INTERVALLO DI PORTE DI ORIGINE: Tutto
    • INTERVALLO DI PORTE DI DESTINAZIONE: 1521
    • Consente: TCP per le porte: 1521

Creare la stringa di connessione

Dopo aver abilitato l'accesso a Oracle Database, utilizzare le informazioni raccolte in precedenza per creare la stringa di connessione nella finestra di dialogo Configura cronologia avanzata.

Costruisce la stringa di connessione utilizzando la sintassi seguente: <publicIP>:<portNumber>/<database unique name>.<host domain name>

La stringa di connessione seguente è un esempio: 192.0.2.0:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.example.com

Controlla privilegi utente database

Affinché la funzionalità di cronologia avanzata sia in grado di gestire le proprie sessioni di database e di eseguire il recupero da tempi di inattività temporanei del database o della rete, assicurarsi che l'utente del database registrato con Oracle Blockchain Platform disponga dei due privilegi riportati di seguito.
grant select on v_$session to <user>;
grant alter system to <user>;
Inoltre, se il database della cronologia avanzata utilizza Oracle Autonomous AI Lakehouse, l'utente del database deve disporre del privilegio seguente:
grant unlimited tablespace to <user>;
Se l'utente del database non dispone già di tali privilegi, questi devono essere concessi dall'amministratore del database di sistema.

Senza questi privilegi, Oracle Blockchain Platform può replicarsi nel database, ma non può recuperare da situazioni che portano a una sessione di database danneggiata, il che impedisce alla cronologia avanzata di recuperare le transazioni recenti per un periodo prolungato. Senza questi privilegi su Oracle Autonomous AI Lakehouse, non vengono salvati dati di cronologia avanzata.

Abilitare e configurare il database Rich History

Utilizzare la console per fornire informazioni sulla connessione al database e selezionare i canali con i dati del libro contabile del codice concatenato che si desidera scrivere nel database della cronologia completo. Per impostazione predefinita, i canali non sono abilitati per scrivere i dati nel database della cronologia avanzata.

  • Ogni membro della rete blockchain configura il proprio ricco database di cronologia.
  • Utilizzare Oracle Database. Nessun altro tipo di database supportato.
  • Ogni canale che scrive nel database della cronologia avanzata deve contenere almeno un nodo peer.
  1. Immettere le informazioni di connessione e le credenziali per l'istanza di Oracle Database da utilizzare per memorizzare le informazioni della cronologia avanzata.
    1. Andare alla console e selezionare Opzioni, quindi selezionare Configura cronologia avanzata.
      Viene visualizzata la finestra di dialogo Configura cronologia avanzata.
    2. Immettere il nome utente e le password necessari per accedere a Oracle Database.
    3. Nel campo Stringa di connessione, immettere la stringa di connessione per il database che verrà utilizzato per memorizzare i dati della cronologia avanzata. Le informazioni immesse qui dipendono dal database in uso.
      • Se si utilizza Oracle Autonomous AI Lakehouse, verrà immesso un valore simile a <username>adw_high. Per trovare le informazioni di connessione di Oracle Autonomous AI Lakehouse, andare al file ZIP del wallet delle credenziali e aprire il file TNS.
      • Se si utilizza Oracle Base Database Service con Oracle Cloud Infrastructure (OCI), vedere Creare la stringa di connessione di Oracle Base Database Service.
      • Se si utilizza un database non autonomo (un database che non utilizza un wallet delle credenziali) e si desidera utilizzare l'utente sys per connettersi al database, è necessario aggiungere ?as=sys[dba|asm|oper] alla stringa di connessione. Ad esempio, 203.0.113.0:1521/oraclevcn.example.com?as=sysdba
    4. Se si utilizza un'istanza di database autonomo OCI (ad esempio, Oracle Autonomous AI Lakehouse o Oracle Autonomous AI Transaction Processing), utilizzare il campo File package wallet per caricare il file .zip del wallet delle credenziali richiesto. Questo file contiene le credenziali client ed è generato dal database.

      Nota

      Quando si apre di nuovo la finestra di dialogo Configura cronologia avanzata dopo aver configurato la cronologia avanzata, il nome del file wallet non viene visualizzato. Se si aggiornano altre impostazioni, caricare di nuovo il file .zip del wallet prima di selezionare Salva. Se si seleziona Salva mentre non viene visualizzato alcun nome di file wallet, la configurazione viene aggiornata per non utilizzare un file wallet.
    5. Per utilizzare le tabelle blockchain per memorizzare il database della cronologia avanzata, selezionare Usa tabella blockchain database.
      Il database sottostante deve supportare le tabelle blockchain.
      • Per specificare il numero di giorni per la conservazione di tabelle e righe, selezionare Configurazione di base, quindi immettere il numero di giorni per la conservazione di tabelle e righe. Inserire 0 per conservare le tabelle o le righe in modo permanente. Per evitare ulteriori modifiche ai valori di conservazione, selezionare Bloccato.
      • Per specificare la conservazione delle tabelle e delle righe utilizzando un'istruzione DDL (Data Definition Language), selezionare Query di configurazione avanzata, quindi immettere l'istruzione DDL.
    6. Selezionare Salva.
  2. Abilita rich history sui canali che contengono i dati chaincode che si desidera scrivere nel database rich history.
    1. Andare alla console e selezionare la scheda Canali.
    2. Individuare il canale contenente i dati del codice concatenato che si desidera scrivere nel database della cronologia RTF. Selezionare Altre opzioni, quindi selezionare Configura cronologia RTF.
      Viene visualizzata la finestra di dialogo Configura cronologia avanzata.
    3. Selezionare Abilita cronologia RTF. Per memorizzare le raccolte di dati private nel database della cronologia avanzata, immettere una lista di nomi di raccolta dati privati, separati da virgole. Per ulteriori informazioni sulle raccolte di dati private, vedere Informazioni sulle raccolte di dati private. Per aggiungere i dettagli delle transazioni al database della cronologia avanzata, selezionare i dettagli che si desidera aggiungere. Selezionare Salva.
Il database della cronologia avanzata è configurato, ma le tabelle non vengono create immediatamente nel database. Quando si verifica la successiva modifica della transazione o del libro contabile rilevante, le tabelle vengono create nel database della cronologia avanzata.

Modificare la connessione al database Rich History

È possibile modificare le informazioni di connessione del database della cronologia avanzata.

Dopo la creazione delle tabelle nel database per un canale, la modifica della configurazione della cronologia avanzata per il canale non ha alcun effetto, anche dopo aver selezionato Salva, a meno che non si modifichino il nome utente e la password o la stringa di connessione. Se si modificano nome utente e password, le tabelle vengono create nello stesso database. Se si modificano la stringa di connessione e le credenziali, viene configurato un database diverso e le tabelle vengono create dopo la successiva modifica della transazione o del libro contabile pertinente. Non è possibile modificare un database di cronologia avanzata da tabelle standard a tabelle blockchain e non è possibile modificare i tempi di conservazione, a meno che non si modifichino anche le credenziali o la stringa di connessione.
  1. Andare alla console e selezionare Opzioni, quindi selezionare Configura cronologia avanzata.
  2. Aggiornare il nome utente e la password in base alle esigenze per accedere al database.
  3. Se necessario, nel campo Stringa di connessione modificare la stringa di connessione per il database che verrà utilizzato per memorizzare i dati della cronologia avanzata. Le informazioni immesse qui dipendono dal database in uso.
    • Se si utilizza Oracle Autonomous AI Lakehouse, verrà immesso un valore simile a <username>adw_high. Per trovare le informazioni di connessione di Oracle Autonomous AI Lakehouse, andare al file .zip del wallet delle credenziali e aprire il file TNS.
    • Se si utilizza Oracle Base Database Service con Oracle Cloud Infrastructure (OCI), vedere Creare la stringa di connessione di Oracle Base Database Service.
    • Se si utilizza un database non autonomo (un database che non utilizza un wallet delle credenziali) e si desidera utilizzare l'utente sys per connettersi al database, è necessario aggiungere ?as=sys[dba|asm|oper] alla stringa di connessione. Ad esempio, 203.0.113.0:1521/oraclevcn.example.com?as=sysdba
  4. Se si utilizza un'istanza di database autonomo OCI (ad esempio, Oracle Autonomous AI Lakehouse o Oracle Autonomous AI Transaction Processing), utilizzare il campo File package wallet per caricare o ricaricare il file wallet delle credenziali richiesto. Questo file contiene le credenziali client ed è generato dal database.

    Nota

    Quando si apre di nuovo la finestra di dialogo Configura cronologia avanzata dopo aver configurato la cronologia avanzata, il nome del file wallet non viene visualizzato. Se si aggiornano altre impostazioni, caricare di nuovo il file .zip del wallet prima di selezionare Salva. Se si seleziona Salva mentre non viene visualizzato alcun nome di file wallet, la configurazione viene aggiornata per non utilizzare un file wallet.
  5. Per utilizzare le tabelle blockchain per memorizzare il database della cronologia avanzata, selezionare Usa tabella blockchain database.
    Il database sottostante deve supportare le tabelle blockchain.
    • Per specificare il numero di giorni per la conservazione di tabelle e righe, selezionare Configurazione di base, quindi immettere il numero di giorni per la conservazione di tabelle e righe. Inserire 0 per conservare le tabelle o le righe in modo permanente. Per evitare ulteriori modifiche ai valori di conservazione, selezionare Bloccato.
    • Per specificare la conservazione delle tabelle e delle righe utilizzando un'istruzione DDL (Data Definition Language), selezionare Query di configurazione avanzata, quindi immettere l'istruzione DDL.
  6. Selezionare Salva.

Configurare i canali che scrivono i dati nel database Rich History

Puoi consentire ai canali di scrivere i dati del libro contabile del codice concatenato nel ricco database della cronologia e puoi impedire ai canali di scrivere dati nel ricco database della cronologia. È inoltre possibile configurare un singolo canale in modo che utilizzi una configurazione del database della cronologia avanzata diversa dall'impostazione globale.

È necessario specificare le informazioni globali per connettersi al database della cronologia RTF prima di poter selezionare i canali che scrivono nel database della cronologia RTF. Vedere Abilitazione e configurazione del database Rich History.

Dopo la creazione delle tabelle nel database per un canale, la modifica della configurazione della cronologia avanzata per il canale non ha alcun effetto, anche dopo aver fatto clic su Salva, a meno che non si modifichino il nome utente e la password o la stringa di connessione. Se si modificano nome utente e password, le tabelle vengono create nello stesso database. Se si modificano la stringa di connessione e le credenziali, viene configurato un database diverso e le tabelle vengono create dopo la successiva modifica della transazione o del libro contabile pertinente. Non è possibile modificare un database di cronologia avanzata da tabelle standard a tabelle blockchain e non è possibile modificare i tempi di conservazione, a meno che non si modifichino anche le credenziali o la stringa di connessione.

  1. Andare alla console e selezionare la scheda Canali.
  2. Individuare il canale per il quale si desidera modificare l'accesso. Fare clic sul relativo pulsante Altre opzioni e selezionare Configura cronologia avanzata.
    Viene visualizzata la finestra di dialogo Configura cronologia avanzata.
  3. Per abilitare la raccolta di dati cronologici RTF per il canale, selezionare la casella di controllo Abilita cronologia RTF. Per disabilitare la raccolta di dati rich history per il canale, deselezionare la casella di controllo Abilita rich history.
  4. Per configurare il canale per la raccolta dei dati della cronologia avanzata utilizzando un database diverso o impostazioni diverse, selezionare Usa configurazione a livello di canale, quindi specificare le impostazioni da utilizzare.
    Per ulteriori informazioni sulle impostazioni della cronologia avanzata, vedere Abilitazione e configurazione del database Rich History.
  5. Fare clic su Save.

Monitorare lo stato Rich History

Dopo aver configurato il database rich history, è possibile utilizzare la console per monitorare lo stato di replica rich history.

  1. Andare alla console e selezionare la scheda Canali.
  2. Nella tabella Canali, fare clic sul pulsante Altre azioni per il canale che si desidera monitorare, quindi fare clic su Stato cronologia ricca.
    Viene visualizzata la finestra di dialogo Stato cronologia ricca, che include dettagli sulla replica e sullo stato della configurazione.
  3. Fare clic su Refresh per visualizzare l'ultimo stato.

Limita accesso a cronologia RTF

È possibile utilizzare i criteri canale e le liste di controllo dell'accesso (ACL, Access Control List) per limitare le organizzazioni in grado di configurare il database della cronologia avanzata e recuperare lo stato della cronologia avanzata o le informazioni di configurazione.

Per impostazione predefinita, tutte le organizzazioni che dispongono dell'accesso amministrativo a un canale possono configurare la raccolta della cronologia avanzata e recuperare lo stato della cronologia avanzata e i dettagli di configurazione. Per limitare questo accesso, ad esempio, all'organizzazione fondatrice, si crea un criterio canale e si applica il criterio alle risorse che controllano l'accesso.
  1. Andare alla console e selezionare la scheda Canali.
    Viene visualizzata la scheda Canali. La tabella dei canali contiene un elenco di tutti i canali della rete.
  2. Nella tabella dei canali fare clic sul nome del canale in cui si desidera limitare l'accesso.
  3. Fare clic su Criteri canale, quindi creare un criterio di firma che includa i membri dell'organizzazione che accederanno alle funzioni della cronologia avanzata.
    Per ulteriori informazioni sui criteri del canale, vedere Gestione dei criteri e delle liste ACL del canale.
    Ad esempio, creare un criterio che includa solo l'identità dell'organizzazione fondatrice, non l'identità di alcuna organizzazione partecipante.
  4. Fare clic su ACL.
  5. Nella tabella Risorse individuare la risorsa che si desidera aggiornare per utilizzare il nuovo criterio. Fare clic su Espandi per la risorsa, quindi selezionare il criterio da assegnare alla risorsa
    La tabella seguente mostra le risorse che controllano l'accesso alla cronologia avanzata.
    Risorsa Controllo dell'accesso
    obpadmin/ConfigureRichHistoryChannel Controlla la configurazione, l'abilitazione e la disabilitazione della cronologia avanzata per un canale.
    obpadmin/GetRichHistoryChannelStatus Controlla il recupero dello stato di replica della cronologia avanzata per un canale.
    obpadmin/GetRichHistoryChannelConfig Controlla il recupero della configurazione della cronologia avanzata corrente per un canale.
  6. Fare clic su Aggiorna ACL.
L'accesso alla ricca cronologia è ora controllato dalla nuova politica. I membri dell'organizzazione che non sono inclusi nel nuovo criterio riceveranno un messaggio di errore quando tenteranno di accedere a una risorsa controllata dal criterio.

Tabelle e colonne del database Rich History

Il database della cronologia avanzata contiene tre tabelle per ogni canale: cronologia, stato e altezza più recente. Durante la creazione dell'analitica sulle transazioni del libro contabile dei codici concatenati, verranno eseguite query sulle tabelle della cronologia e dello stato. Se si è scelto di selezionare uno dei dettagli della transazione quando si abilita la cronologia avanzata, verrà creata un'ulteriore tabella con i dettagli della transazione.

Tabella cronologia

La tabella <instanceName><channelName>_hist contiene la cronologia del libro contabile. I dati in questa tabella indicano l'ID del codice concatenato, la chiave utilizzata, se la transazione era valida, il valore assegnato alla chiave e così via.

Si noti che le colonne valore e valueJson vengono utilizzate in modo che si escludano a vicenda. Quando un valore chiave è json valido, il valore viene impostato nella colonna valueJson. In caso contrario, il valore viene impostato nella colonna value. La colonna valueJson è impostata come colonna json nel database, il che significa che gli utenti possono eseguire query su tale colonna utilizzando le solite estensioni specifiche JSON di Oracle.

Se configurati, in questa tabella vengono memorizzati anche i dati privati. Per i dati privati, l'ID codice concatenato utilizza il seguente formato: <chaincodeName>$$<collectionName>.

A colonne Tipo di dati
chaincodeId VARCHAR2 (256)
chiave   VARCHAR2 (1024)
txnIsValid     NUMERO (1)
value VARCHAR2 (4000)
valueJson CLOB
blockNo NUMERO NON NULLO
NUMERO txnNo NOT NULL
txnId VARCHAR2 (128)  
txnTimestamp TIMESTAMP
txnIsDelete NUMERO (1)

Tabella stato

La tabella di stato <instanceName><channelName> contiene valori di dati replicati dal database di stato. Verrà eseguita una query sulla tabella dello stato quando si creano analisi sullo stato del libro contabile.

Si noti che le colonne valore e valueJson vengono utilizzate in modo che si escludano a vicenda. Quando un valore chiave è json valido, il valore viene impostato nella colonna valueJson. In caso contrario, il valore viene impostato nella colonna value. La colonna valueJson è impostata come colonna json nel database, il che significa che gli utenti possono eseguire query su tale colonna utilizzando le solite estensioni specifiche JSON di Oracle.

A colonne Tipo di dati
chaincodeId VARCHAR2 (256)
chiave VARCHAR2 (1024)
value VARCHAR2 (4000) 
valueJson CLOB
blockNo NUMBER
txnNo NUMBER

Tabella altezza più recente

L'ultima tabella <instanceName><channelName> viene utilizzata internamente da Oracle Blockchain Platform per tenere traccia dell'altezza del blocco registrata nel database della cronologia avanzata. Determina l'attualità del database della cronologia avanzata e se tutte le transazioni del codice concatenato sono state registrate nel database della cronologia avanzata. Impossibile eseguire query su questo database per l'analitica.

Tabella dettagli transazione

La tabella <instanceName><channelName>_more contiene attributi correlati alle transazioni di cui è stato eseguito il commit. Quando si abilita il database della cronologia RTF, è possibile selezionare gli attributi da registrare in questa tabella. La tabella dei dettagli delle transazioni acquisisce solo informazioni sulle transazioni del responsabile approvazioni, non le transazioni di configurazione o qualsiasi altro tipo di transazioni Hyperledger Fabric.

A colonne Tipo di dati
CODICE CATENA VARCHAR2 (256)
BLOCCO NUMBER
NESSUNO NUMBER
ID transazione VARCHAR2(128)
INDICATORE DATA/ORA TIMESTAMP
SOTTOMETTI VARCHAR2(512)
AUTORE SOTTOMISSIONE VARCHAR2(512)
SOTTOMETTI VARCHAR2(512)
CODICE CONCATENATO VARCHAR2(32)
NOME CODICE CONVALIDA VARCHAR2(32)
DICHIARAZIONI CLOB
INPUT CLOB
EVENTI CLOB
STATO RISPOSTA NUMERO (0)
RESPONSEPAYLOAD VARCHAR2(1024)
RWSET CLOB
BLOCCO VARCHAR2(512)
BLOCKCREATORORG VARCHAR2(512)
BLOCCO VARCHAR2(512)
NUMERO BLOCCO CONFIGURAZIONE NUMERO (0)
CONFIGBLOCKCREATORCN VARCHAR2(512)
CONFIGBLOCKCREATORORG VARCHAR2(512)
CONFIGBLOCKCREATOROU VARCHAR2(512)

Nota

  • L'organizzazione (ORG) e l'unità organizzativa (OU) sono guidate da certificati di identità, il che implica che possono essere assegnati a più valori. Vengono acquisiti come elenco separato da virgole nei valori della tabella.
  • Per le identità, la tabella include solo informazioni sulla parte "Oggetto" dei certificati, non quella "Emittente".
  • La colonna RWSET contiene operazioni su tutti i codici concatenati (nello stesso libro contabile) eseguiti durante la girata. Come tale, in genere vedrai sia le operazioni di lettura lscc che le operazioni effettive dello spazio di nomi del codice concatenato.