Criar o Rich History Database
Este tópico contém informações que ajudam a especificar uma conexão do Oracle Database e a escolher canais para criar o banco de dados de histórico avançado. Você usará esse banco de dados para fazer relatórios de análise e visualizações das atividades do seu razão.
Qual é o Rich History Database?
O banco de dados de histórico avançado é externo ao Oracle Blockchain Platform e contém dados sobre as transações do razão de blockchain nos canais selecionados. Você usa esse banco de dados para criar relatórios de análise e visualização sobre as atividades do razão.
Por exemplo, usando o banco de dados de histórico avançado, você pode criar análises para saber o saldo médio de todos os clientes do seu banco durante algum intervalo de tempo ou quanto tempo levou para enviar mercadorias de um atacadista para um varejista.
Internamente, o Oracle Blockchain Platform usa o banco de dados de histórico do Hyperledger Fabric para gerenciar o razão e apresentar informações de transação do razão para você no console. Somente os chaincodes podem acessar esse banco de dados de histórico, e você não pode expor o banco de dados de histórico do Hyperledger Fabric como uma fonte de dados para consultas analíticas. O banco de dados de histórico avançado usa uma cópia externa do Oracle Database e contém muitos detalhes sobre cada transação submetida a commit em um canal. Esse nível de coleta de dados torna o banco de dados de histórico avançado uma excelente fonte de dados para análise. Para obter informações sobre os dados que o banco de dados de histórico avançado coleta, consulte Tabelas e Colunas do Banco de Dados de Histórico Rico.
Você só pode usar um banco de dados como o Oracle Autonomous AI Lakehouse ou o Oracle Base Database Service com o Oracle Cloud Infrastructure para criar seu banco de dados de histórico avançado. Você usa a console do Oracle Blockchain Platform para fornecer a string de conexão e as credenciais para acessar e gravar no banco de dados. Observe que as credenciais fornecidas são as credenciais do banco de dados e o Oracle Blockchain Platform não as gerencia. Depois de criar a conexão, você selecionará os canais que contêm os dados do razão que deseja incluir no banco de dados de histórico avançado. Consulte Ativar e Configurar o Rich History Database.
Você pode usar tabelas padrão ou tabelas blockchain para armazenar o banco de dados de histórico avançado. As tabelas Blockchain são tabelas somente anexadas à prova de adulteração, que podem ser usadas como um razão seguro, além de estarem disponíveis para transações e consultas com outras tabelas.
Você pode usar qualquer ferramenta de análise, como o Oracle Analytics Cloud ou o Oracle Data Visualization Cloud Service, para acessar o banco de dados de histórico avançado e criar relatórios de análise ou visualizações de dados.
Criar a String de Conexão do Oracle Base Database Service
Você deve coletar informações do Oracle Base Database Service implantado no Oracle Cloud Infrastructure para criar a string de conexão exigida pelo banco de dados de histórico avançado. Você também deve ativar o acesso ao banco de dados pela porta 1521.
Localizar e Registrar Informações do Oracle Base Database Service
As informações necessárias para criar uma conexão com o Oracle Base Database Service estão disponíveis na Console do Oracle Cloud Infrastructure.
- Na Console do Infrastructure, selecione Banco de Dados no menu de navegação.
- Localize o banco de dados ao qual deseja se conectar e registre o endereço IP Público.
- Selecione o nome do banco de Dados ao qual deseja se conectar e registre os valores nestes campos:
- Nome Exclusivo do Banco de Dados
- Nome do Domínio do Host
- Porta
- Localize o nome e senha de um usuário (por exemplo, SYSTEM) do banco de dados com as permissões para ler e anote-os.
Ativar Acesso ao Banco de Dados por meio da Porta 1521
Adicione uma regra de ingresso que permita que o banco de dados de histórico avançado acesse o banco de dados através da porta 1521.
- Na home page do Oracle Cloud Infrastructure, selecione o ícone de navegação e, em Bancos de Dados, selecione Sistemas de BD.
- Selecione o banco de dados ao qual deseja se conectar.
- Selecione o link Virtual Cloud Network.
- Navegue até a sub-rede apropriada e, em Listas de Segurança, selecione Lista de Segurança Padrão para o <Banco de Dados de Destino>.
A página Lista de Segurança é exibida.
- Selecione Editar Todas as Regras.
- Adicione uma regra do ingresso para permitir qualquer tráfego de entrada da internet pública para acessar a porta 1521 neste nó de banco de dados, com as seguintes definições:
-
CIDR DE ORIGEM: 0.0.0.0/0
- PROTOCOLO IP: TCP
- FONTE PORT RANGE: Todos
- INTERVALO DE PORTAS DE DESTINO: 1521
- Permite: Tráfego TCP para as portas: 1521
-
Crie a String de Conexão
Depois de ativar o acesso ao Oracle Database, use as informações coletadas anteriormente para criar a string de conexão na caixa de diálogo Configurar Histórico Rich.
Construa a string de conexão usando a seguinte sintaxe: <publicIP>:<portNumber>/<database unique name>.<host domain name>
A seguinte string de conexão é um exemplo: 192.0.2.0:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.example.com
Verificar Privilégios de Usuário do Banco de Dados
grant select on v_$session to <user>;
grant alter system to <user>;Além disso, se o banco de dados de histórico avançado usar o Oracle Autonomous AI Lakehouse, o usuário do banco de dados deverá ter o seguinte privilégio:grant unlimited tablespace to <user>;Se o usuário do banco de dados ainda não tiver esses privilégios, eles deverão ser concedidos pelo administrador do banco de dados do sistema.Sem esses privilégios, o Oracle Blockchain Platform pode replicar para o banco de dados, mas não pode se recuperar de situações que levam a uma sessão de banco de dados danificada, o que impede que o histórico avançado acompanhe as transações recentes por um período prolongado. Sem esses privilégios no Oracle Autonomous AI Lakehouse, nenhum dado de histórico avançado é salvo.
Ativar e Configurar o Rich History Database
Use a console para fornecer informações de conexão do banco de dados e selecionar os canais com os dados do razão chaincode que você deseja gravar no banco de dados rich history. Por padrão, os canais não estão ativados para gravar dados no banco de dados de histórico avançado.
- Cada membro da rede blockchain configura seu próprio banco de dados de histórico avançado.
- Você deve usar o Oracle Database. Nenhum outro tipo de banco de dados é suportado.
- Cada canal que grava no banco de dados rich history deve conter pelo menos um nó de mesmo nível.
- Especifique informações de conexão e credencial para a instância do Oracle Database a ser usada para armazenar informações do histórico avançado.
- Ative o histórico avançado nos canais que contêm os dados de chaincode que você deseja gravar no banco de dados de rich history.
Modificar a Conexão com o Rich History Database
Você pode alterar as informações de conexão do banco de dados de histórico avançado.
Configurar os Canais que Gravam Dados no Rich History Database
Você pode permitir que os canais gravem dados do razão chaincode no banco de dados rich history e pode impedir que os canais gravem dados no banco de dados rich history. Você também pode configurar um canal individual para usar uma configuração de banco de dados de histórico avançado diferente da definição global.
Depois que as tabelas são criadas no banco de dados para um canal, a modificação da configuração do histórico avançado para o canal não tem efeito, mesmo depois que você clica em Salvar, a menos que altere o nome de usuário e a senha ou a string de conexão. Se você alterar o nome de usuário e a senha, as tabelas serão criadas no mesmo banco de dados. Se você alterar a string de conexão e as credenciais, um banco de dados diferente será configurado e as tabelas serão criadas após a próxima transação ou alteração do razão relevante. Não é possível alterar um banco de dados de histórico avançado de tabelas padrão para tabelas blockchain e não é possível alterar os tempos de retenção, a menos que você também altere as credenciais ou a string de conexão.
Monitorar o Status do Histórico Rico
Depois de configurar o banco de dados de histórico avançado, você pode usar a console para monitorar o status de replicação do histórico avançado.
Limitar o Acesso ao Rich History
Você pode usar políticas de canal e listas de controle de acesso (ACLs) para limitar as organizações que podem configurar o banco de dados de histórico avançado e recuperar informações de configuração ou status de histórico avançado.
Tabelas e Colunas do Banco de Dados de Histórico Rico
O banco de dados de histórico avançado contém três tabelas para cada canal: histórico, estado e altura mais recente. Você consultará as tabelas de histórico e estado ao criar análises sobre as transações contábeis de seus códigos de cadeia. Se você tiver optado por selecionar qualquer um dos detalhes da transação ao ativar o histórico avançado, uma tabela adicional será criada com os detalhes da transação.
Tabela de Histórico
A tabela <instanceName><channelName>_hist contém o histórico do razão. Os dados nesta tabela informam o ID chaincode, a chave utilizada, se a transação era válida, o valor atribuído à chave, e assim por diante.
Observe que as colunas value e valueJson são usadas de forma mutuamente exclusiva. Quando um valor de chave é json válido, o valor é definido na coluna valueJson. Caso contrário, o valor será definido na coluna valor. A coluna valueJson é configurada como uma coluna json no banco de dados, o que significa que os usuários podem consultar essa coluna usando as extensões comuns do Oracle JSON.
Se configurado, os dados privados também são armazenados nessa tabela. Para dados privados, o ID do chaincode usa o seguinte formato: <chaincodeName>$$<collectionName>.
| Coluna | Tipo de dados |
|---|---|
| chaincodeId | VARCHAR2 (256) |
| chave | VARCHAR2 (1024) |
| txnIsValid | NÚMERO (1) |
| valor | VARCHAR2 (4000) |
| valueJson | CLOB |
| blockNo | NÚMERO NÃO NULO |
| NÚMERO txnNo | NOT NULL |
| txnId | VARCHAR2 (128) |
| txnTimestamp | TIMESTAMP |
| txnIsDelete | NÚMERO (1) |
Tabela Estado
A tabela <instanceName><channelName>_state contém valores de dados replicados do banco de dados de estado. Você consultará a tabela de estados ao criar análises sobre o estado do razão.
Observe que as colunas value e valueJson são usadas de forma mutuamente exclusiva. Quando um valor de chave é json válido, o valor é definido na coluna valueJson. Caso contrário, o valor será definido na coluna valor. A coluna valueJson é configurada como uma coluna json no banco de dados, o que significa que os usuários podem consultar essa coluna usando as extensões comuns do Oracle JSON.
| Coluna | Tipo de dados |
|---|---|
| chaincodeId | VARCHAR2 (256) |
| chave | VARCHAR2 (1024) |
| valor | VARCHAR2 (4000) |
| valueJson | CLOB |
| blockNo | NUMBER |
| txnNo | NUMBER |
Tabela de Altura Mais Recente
A tabela <instanceName><channelName>_last é usada internamente pelo Oracle Blockchain Platform para rastrear a altura do bloco registrada no banco de dados de histórico avançado. Ele determina a atualidade do banco de dados de histórico avançado e se todas as transações de chaincode foram registradas no banco de dados de histórico avançado. Não é possível consultar este banco de dados para análise.
Tabela de Detalhes da Transação
A tabela <instanceName><channelName>_more contém atributos relacionados a transações submetidas a commit. Ao ativar o banco de dados de histórico avançado, você pode selecionar quais desses atributos deseja registrar nesta tabela. A tabela de detalhes da transação captura apenas informações sobre transações do endossador - não transações de configuração ou qualquer outro tipo de transações do Hyperledger Fabric.
| Coluna | Tipo de dados |
|---|---|
| ID DO CÓDIGO DA CADEIA | VARCHAR2 (256) |
| Nº DO BLOCO | NUMBER |
| Português | NUMBER |
| IDT | VARCHAR2(128) |
| DATA/HORA DA TRANSAÇÃO | TIMESTAMP |
| SUBMISSÃO | VARCHAR2(512) |
| SUBORDINADO | VARCHAR2(512) |
| HORÁRIO DE ENVIO | VARCHAR2(512) |
| TIPO DE CÓDIGO DA CADEIA | VARCHAR2(32) |
| NOME DO CÓDIGO DE VALIDAÇÃO | VARCHAR2(32) |
| ENDOSSOS | CLOB |
| ENTRADAS | CLOB |
| EVENTOS | CLOB |
| STATUS DO RESPONSÁVEL | NÚMERO(0) |
| CARGA ÚTIL DE RESPOSTA | VARCHAR2(1024) |
| RWSET | CLOB |
| BLOCOCREATORCN | VARCHAR2(512) |
| BLOCOCREATORORG | VARCHAR2(512) |
| BLOCKCREATOROU | VARCHAR2(512) |
| NÚMERO DO BLOCO DE CONFIGURAÇÃO | NÚMERO(0) |
| CONFIGBLOCKCREATORCN | VARCHAR2(512) |
| CONFIGBLOCKCREATORORG | VARCHAR2(512) |
| CONFIGBLOCKCREATOROU | VARCHAR2(512) |
Observação:
- A organização (ORG) e a unidade organizacional (OU) são orientadas por certificados de identidade, o que implica que eles podem ser atribuídos a vários valores. Eles são capturados como uma lista separada por vírgulas nos valores da tabela.
- Para identidades, a tabela inclui informações somente sobre a parte "Assunto" dos certificados, não sobre o "Emissor".
- A coluna
RWSETcontém operações em todos os chaincodes (no mesmo razão) executados durante o endosso. Como tal, você normalmente verá as operações de leitura lscc e as operações de namespace chaincode reais.