Skip to main content

Data Sync

O que é

O Data Sync é uma solução que tem como principal objetivo enviar registros armazenados em Data Models para bancos de dados de baixa latência e alta disponibilidade (como por exemplo o PostgreSQL) fazendo com que o conteúdo processado na plataforma possa ser consumido por aplicações com necessidade de comunicação ágil com seus usuários.

A plataforma Carol, de forma sucinta, consiste de um Data Lake onde dados de diferentes fontes são armazenados para que posteriormente sejam processados e transformados em informação de valor. Trabalhando com volume e processamento de centenas de terabytes, a Carol faz uso de poderosas ferramentas, como o Data Warehouse da Google e, embora esses tipos de ferramentas sejam muito eficientes para se trabalhar com uma quantidade considerável de dados, seus tempos de resposta na geração de resultados acabam sendo um pouco mais lentos do que o esperado por alguns tipos de aplicações, como por exemplo soluções CRUD onde o usuário necessita criar, ler, atualizar e apagar dados de forma instantânea.

Pensando nestes casos criamos o Data Sync que copia os registros dessas ferramentas de armazenamento internas da plataforma para uma instância de banco de dados do cliente, possibilitando que o mesmo se comunique com esta instância por meio de APIs com o objetivo final de diminuir a latência entre server e client.

Importante
  1. Atualmente a solução cria um schema por tenant, ou seja, caso possua mais de uma tenant, terá de ser realizada a configuração para cada uma delas. Quanto ao ambiente unificado, entendemos que ele é uma tenant.

  2. O desenvolvimento e testes da solução foi realizado com base em instâncias criadas no PostgreSQL, portanto sugerimos o uso deste banco de dados para melhor integração com o Data Sync.

  3. O serviço realiza apenas ações de inserção. Caso seja necessário trabalhar com deleções, este processo deve ser tratado através de deleção lógica conforme implementado pelas pipelines SQL (mdmDeleted=true). O processo de consolidação, ou seja, deleção fisica, deve ser implementado diretamente no banco de dados para converter eliminações lógicas em eliminações fisicas.

  4. Por padrão, os seguintes metacampos da plataforma são criados e compõem o registro: mdmId, mdmTenantId, mdmCounterForEntity, mdmCounterForEntity__DATETIME__ e mdmDeleted.

Como funciona

O fluxograma abaixo apresenta de forma visual o funcionamento do Data Sync.

Como funciona o Data Sync

Fronteiras

Nada mais são do que a definição dos responsáveis por cada item que compõem este fluxo:

  • Cliente: itens que estão sob os cuidados do dono do produto que faz uso da plataforma Carol.
  • Google: ferramentas da Google utilizadas de forma direta pelo Data Sync.
  • TOTVS Carol: ações e eventos realizados pela/na plataforma.
  • TOTVS Apps: ações e eventos realizados pelo/no TOTVS Apps.

Etapas

Para que as etapas sejam compreendidas, é necessário citar a existência de 3 grandes centralizadores no fluxo. O primeiro é a plataforma Carol, que obtém, processa e encaminha os dados. Ao centro, temos as ferramentas da Google que tem como objetivo receber esses dados e armazena-los em uma instância do banco do cliente. Por fim, o TOTVS Apps viabiliza a criação de uma API capaz de se comunicar com a instância citada anteriormente, atendendo as requisições do usuário.

Partimos portanto do pressuposto de que os dados já chegaram a(s) staging(s) da plataforma por quaisquer que sejam os meios (SmartLink, serviço CDC, 2C, API, etc). Para mais informações sobre obtenção/ingestão de dados na plataforma, acesse a sessão Data Ingestion.

(1) Agendamento de execução de pipeline: A primeira etapa consiste na execução de pipeline(s) SQL agendada(s) períodicamente conforme definido no arquivo manifest do seu Carol App. Aqui, o único detalhe que difere de uma execução normal é a habilitação da flag sendToSubscriptions para envio de dados por meio do Data Subscription:

{
"pipelines": [
{
"pipelineName": "pipelineA",
"outputDataModelName": "pipelineA",
"processScript": "pipelineA.csql",
"sendToSubscriptions": true,
//...
},
//...
],
//...
}

(2) Processamento de dados de stagings para popular Data Model: Esta etapa representa a ação de salvar os dados tratados e processados pela(s) pipeline(s) em Data Model(s), persistindo os mesmos em um banco interno de alta latência. Este método de persistência é muito útil para diversas situações, mas não é o ideal para aplicações que necessitam disponibilizar um baixo tempo de resposta aos seus usuários.

(3) Envio de dados de Data Model por meio do Data Subscription: Uma vez com o Data Subscription configurado e a flag de envio ativa no manifest, a plataforma envia esses dados ao endpoint previamente definido.

(4) Recebimento dos dados enviados pelo Data Subscription: O endpoint previamente configurado é o responsável por acionar a Cloud Function, que nada mais é do que um script capaz de receber e enviar esses dados a um banco de dados.

(5) Armazenamento dos dados em uma instância: A instância previamente configurada armazena esses dados.

Consumo dos dados: O webservice inicializado dentro do TOTVS Apps se comunica com essa instância e atende a todas as requisições do usuário do produto.

Como utilizar

Estamos trabalhando para simplificar e automatizar a configuração inicial. Neste momento, solicitamos o compartilhamento das informações abaixo por meio de abertura de ticket para que façamos a configuração.

Informações sobre o banco de dados

  1. Nome da database
  2. Nome do usuário (com acesso para criação de tabelas e inserção de registros)
  3. Senha do usuário
  4. Nome da conexão ou IP com acesso público

Informações sobre o ambiente na plataforma Carol

  1. Nome da organização
  2. Nome da tenant
  3. Nome do Carol App
  4. Lista com nome dos Data Models que farão uso do Data Sync

Configuração

Esta etapa será realizada pelo time Carol, que entrará em contato assim que finalizar o procedimento.