IMPORTANTE: esta documentação foi descontinuada. Leia a documentação Stream DB V3 atualizada no nosso novo portal de documentação.
O Stream DB V3 permite estabelecer uma conexão com um serviço que suporta o protocolo JDBC (Java Database Connectivity) e executar instruções SQL (Structured Query Language).
Diferentemente do componente DB V1, o Stream DB foi desenvolvido para realizar execução em lotes, ou seja, cada retorno (linha resultante ou row) da instrução SQL executada é tratada individualmente através de um subpipeline, podendo conter seu próprio fluxo de processamento. Aprenda mais sobre subpipelines clicando aqui.
Dê uma olhada nos parâmetros de configuração do componente:
Account: para o componente fazer a autenticação a um serviço JDBC, é necessário usar uma account do tipo BASIC ou KERBEROS (veja o tópico "Autenticação via Kerberos").
Database URL: URL (Uniform Resource Locator) para estabelecer conexão ao servidor de banco de dados com suporte ao protocolo JDBC. Este parâmetro aceita Double Braces.
SQL Statement: instrução SQL a ser executada.
Column Name: caso haja um erro no processamento do subpipeline On Process, o valor associado à coluna definida neste campo será adicionado à mensagem de erro, em um novo campo chamado "processedId" e que poderá ser manipulado pelo subpipeline On Exception. Veja:
{
"timestamp": 1600797662733,
"error": "Error message",
"code": 500,
"processedId": "2"
}
Parallel Execution Of Each Iteration: quando ativada, essa opção faz com que cada uma das passagens pelo subpipeline seja feita em paralelo, reduzindo o tempo de execução total. No entanto, não há qualquer garantia de que os itens sejam executados na ordem retornada pelo banco de dados.
Blob As File: se ativada, a opção faz com que os campos do tipo blob sejam armazenados no contexto do pipeline como arquivo; do contrário, os campos são armazenados como textos normais (strings) e codificados em base64, conforme a seguir:
// "Blob As File" true
{
"id": 12,
"blob": "d3X8YK.file",
}
// "Blob As File" false
{
"id": 12,
"blob": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAeSURBVDhPY1Da6EMSYiBJNVDxqAZiQmw0lAZHKAEAaskfEED3lr0AAAAASUVORK5CYII="
}
Clob As File: a opção faz com que os campos do tipo clob sejam armazenados no contexto do pipeline como arquivo; do contrário, os campos são armazenados como textos normais (strings), conforme a maneira a seguir:
// "Clob As File" true
{
"id": 15,
"clob": "f7X9AS.file",
}
// "Clob As File" false
{
"id": 15,
"clob": "AAAAABBBBBCCCC”
Charset: essa opção é exibida apenas quando a opção Clob As File for ativada. Esse parâmetro permite configurar o encoding de arquivos Clob.
Fail On Error: a habilitação desse parâmetro suspende a execução do pipeline apenas quando há uma ocorrência grave na estrutura da iteração, impedindo a sua conclusão por completo. A ativação do parâmetro "Fail On Error" não tem ligação com erros ocorridos nos componentes utilizados para a construção dos subpipelines (onProcess e onException).
Custom Connection Properties: propriedades de conexão específicas definidas pelo usuário.
Keep Connections: se ativada, a opção vai manter as conexões com a base de dados por no máximo 30 minutos; do contrário, será por apenas 5 minutos.
Advanced: configurações avançadas.
Output Column From Label: para alguns bancos de dados, é importante manter esta opção ativada caso o seu SELECT esteja utilizando algum alias, pois dessa maneira garante-se que o nome da coluna será exibido da mesma forma que o alias configurado.
Connection Test Query: instrução SQL a ser executada antes que cada conexão seja estabelecida (i.e. select 1 from dual) - esse parâmetro é opcional e deve ser aplicado apenas a bancos de dados que não possuem informações confiáveis sobre o status da conexão.
Tecnologia
Autenticação via Kerberos
Para realizar autenticação a um banco de dados via Kerberos é necessário:
informar uma conta (account) do tipo KERBEROS
configurar um Kerberos principal
configurar uma keytab (que deve ser a base64 do próprio arquivo keytab gerado)
Fluxo de Mensagens
Estrutura de mensagem disponível no subpipeline onProcess
Uma vez que a instrução SQL é executada, o subpipeline será disparado recebendo o resultado da execução por meio de uma mensagem na seguinte estrutura:
{
"coluna1": "dado1",
"coluna2": "dado2",
"coluna3": "dado3"
}
Erro
{
"code": error_code,
"error": mensagem de erro,
"processId": the_id_column_value
}
Saída
Após a execução do componente, é retornada uma mensagem na seguinte estrutura:
{
"total": 0,
"success": 0,
"failed": 0
}
total: número total de linhas processadas
success: número total de linhas processadas com sucesso
failed: número total de linhas cujo processamento falhou
IMPORTANTE: para detectar se uma linha foi processada corretamente, cada subpipeline onProcess deve responder com { "success": true } a cada elemento processado.
O Stream DB V3 realiza processamento em lote. Para entender melhor o conceito, clique aqui.
Pool de conexão
Por padrão, utilizamos um pool com tamanho baseado nas configurações do pipeline implantado. Caso seja um pipeline SMALL, então o tamanho do pool será de 10; para o MEDIUM será de 20 e para o LARGE de 40.
É possível gerenciar o tamanho do pool na hora da implantação também. Para isso, será necessário habilitar a propriedade "Pool Size By Actual Consumers Executions" no componente. Com isso, será utilizado o que for configurado manualmente na tela de implantação.
No exemplo da figura abaixo, foi configurado um pipeline SMALL com 5 execuções simultâneas. Se você quiser que o pool dos componentes de banco de dados (DB V2 e Stream DB V3) utilize esse tamanho, é necessário habilitar a propriedade “Pool Size By Actual Consumers” em todos os componentes existentes.
Tenha atenção redobrada ao configurar o tamanho do pool manualmente para que não ocorra nenhum deadlock em chamadas concorrentes ao mesmo banco.
O nosso pool é compartilhado entre os componentes de banco de dados que acessam o mesmo banco de dados dentro do pipeline. Caso seja necessário um pool exclusivo para um determinado componente, habilite a propriedade “Exclusive Pool”.