<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo de Arquitetura de Dados - Data Universe</title>
	<atom:link href="https://datauniverse.com.br/category/arquitetura-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>https://datauniverse.com.br/category/arquitetura-de-dados/</link>
	<description>Conteúdos sobre as áreas de Data Science, Data Analytics, Estatística e Probabilidade, Inteligência Artificial e Machine Learning.</description>
	<lastBuildDate>Wed, 29 Apr 2026 02:31:25 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://datauniverse.com.br/wp-content/uploads/2026/01/cropped-data-universe-logo-icon-32x32.png</url>
	<title>Arquivo de Arquitetura de Dados - Data Universe</title>
	<link>https://datauniverse.com.br/category/arquitetura-de-dados/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>O que são Webhooks</title>
		<link>https://datauniverse.com.br/o-que-sao-webhooks/</link>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Sun, 26 Apr 2026 00:06:30 +0000</pubDate>
				<category><![CDATA[Arquitetura de Dados]]></category>
		<category><![CDATA[Curso Fundamentos da Engenharia de Dados]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=3058</guid>

					<description><![CDATA[<p>Em sistemas modernos, raramente uma aplicação vive sozinha. Um e-commerce precisa avisar o sistema de logística quando um pedido é pago. Um repositório no GitHub precisa disparar um pipeline de CI/CD a cada novo commit. Uma plataforma de pagamento precisa informar o backend de uma loja sobre estornos. Em todos esses cenários, há uma pergunta [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/o-que-sao-webhooks/">O que são Webhooks</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Em sistemas modernos, raramente uma aplicação vive sozinha. Um e-commerce precisa avisar o sistema de logística quando um pedido é pago. Um repositório no GitHub precisa disparar um pipeline de CI/CD a cada novo commit. Uma plataforma de pagamento precisa informar o backend de uma loja sobre estornos. Em todos esses cenários, há uma pergunta central: como um sistema avisa outro de que algo aconteceu, no exato momento em que aconteceu, sem que o segundo precise ficar perguntando?</p>



<p>A resposta, na maior parte dos casos, é <strong>webhook</strong>.</p>



<p>Webhook é um mecanismo de comunicação entre sistemas no qual uma aplicação envia automaticamente uma requisição HTTP para uma URL pré-configurada quando um evento de interesse ocorre. </p>



<p>Diferente de uma API tradicional, em que o cliente pergunta (&#8220;o que há de novo?&#8221;), o webhook inverte a lógica: o servidor avisa (&#8220;aconteceu isto agora&#8221;). <mark style="background-color:#fcb900" class="has-inline-color">Por essa razão, são frequentemente chamados de <em>reverse APIs</em> ou <em>HTTP callbacks</em>.</mark></p>



<h2 class="wp-block-heading">Por que os webhooks foram criados</h2>



<p>Para entender o porquê dos webhooks, é preciso olhar para o problema que eles resolvem: o <strong>polling</strong>.</p>



<p>Antes da popularização dos webhooks, quando uma aplicação A precisava saber sobre eventos da aplicação B, a única opção viável sobre HTTP era o polling, ou seja, fazer requisições periódicas a um endpoint perguntando &#8220;tem novidade?&#8221;. Polling funciona, mas é ineficiente em vários eixos:</p>



<ul class="wp-block-list">
<li><strong>Custo computacional</strong>: a maioria das requisições de polling retorna vazia, gerando carga em servidores e clientes sem necessidade.</li>



<li><strong>Latência</strong>: se o polling acontece a cada 5 minutos, o evento pode levar até 5 minutos para ser percebido.</li>



<li><strong>Largura de banda</strong>: mesmo respostas vazias consomem rede.</li>



<li><strong>Escalabilidade</strong>: quanto mais clientes fazendo polling, maior a carga sobre o servidor consultado.</li>
</ul>



<p>O termo &#8220;webhook&#8221; foi cunhado em 2007 por Jeff Lindsay, num post chamado <em>&#8220;Web hooks to revolutionize the web&#8221;</em>. A proposta era simples: já que estamos na web e usamos HTTP para tudo, por que não permitir que um serviço chame um endpoint HTTP do outro lado quando algo acontece? O nome vem da ideia de &#8220;ganchos&#8221; (<em>hooks</em>) na web, pontos onde se pode pendurar um comportamento personalizado.</p>



<p>A partir desse momento, plataformas como GitHub, Stripe, Twilio, Slack e Shopify adotaram webhooks como cidadão de primeira classe em suas APIs, e o padrão se tornou ubíquo.</p>



<h2 class="wp-block-heading">Como funcionam tecnicamente</h2>



<p><strong>API = você pergunta</strong></p>



<ul class="wp-block-list">
<li>Você vai em um restaurante e pergunta ao garçom: &#8220;Tem sopa hoje?&#8221;</li>



<li>O garçom responde: &#8220;Sim, tem.&#8221;</li>



<li>Você pergunta quando quer saber. Você faz várias perguntas até conseguir o que precisa.</li>
</ul>



<p><strong>Webhook = eles avisam</strong></p>



<ul class="wp-block-list">
<li>Você se cadastra em um restaurante para receber notificações.</li>



<li>Quando chega sopa nova, <strong>eles ligam para você</strong> dizendo: &#8220;Chegou sopa!&#8221;</li>



<li>Você não precisa perguntar. Eles avisam automaticamente.</li>
</ul>



<p><strong>API:</strong></p>



<ul class="wp-block-list">
<li>Seu código: &#8220;Stripe, qual é o status desse pagamento?&#8221;</li>



<li>Stripe: &#8220;Aguardando&#8221;</li>



<li>Seu código: (espera 1 minuto)</li>



<li>Seu código: &#8220;Stripe, qual é o status desse pagamento?&#8221;</li>



<li>Stripe: &#8220;Confirmado!&#8221;</li>
</ul>



<p><strong>Webhook:</strong></p>



<ul class="wp-block-list">
<li>Pagamento é confirmado</li>



<li>Stripe: (liga para você automaticamente) &#8220;Ei, um pagamento foi confirmado!&#8221;</li>



<li>Seu código: processa a notificação</li>
</ul>



<p><strong>Em uma frase:</strong></p>



<ul class="wp-block-list">
<li><strong>API</strong> = você chama quando precisa</li>



<li><strong>Webhook</strong> = eles chamam quando algo acontece</li>
</ul>



<p><mark style="background-color:#fcb900" class="has-inline-color">O fluxo básico de um webhook envolve três atores: o <strong>produtor</strong> (sistema que gera o evento), o <strong>consumidor</strong> (sistema interessado no evento) e a <strong>rede HTTP</strong> entre eles.</mark></p>



<ol class="wp-block-list">
<li>O consumidor expõe uma URL pública e configura essa URL no produtor geralmente em um painel administrativo ou via API. Pode também especificar quais tipos de evento deseja receber.</li>



<li>Quando um evento ocorre dentro do produtor (por exemplo, um pagamento confirmado), ele monta uma requisição HTTP normalmente um <code>POST</code> com payload JSON descrevendo o evento.</li>



<li>O produtor envia essa requisição para a URL configurada.</li>



<li>O consumidor processa o payload, faz o que precisa fazer (atualiza banco, dispara mensagem, etc.) e responde com um código HTTP de sucesso (geralmente <code>2xx</code>).</li>



<li>Se o consumidor responder com erro ou não responder dentro de um timeout, o produtor tipicamente faz retentativas com backoff exponencial.</li>
</ol>



<figure class="wp-block-image size-large zoooom"><img fetchpriority="high" decoding="async" width="1024" height="153" src="https://datauniverse.com.br/wp-content/uploads/2026/04/image-2-1024x153.png" alt="" class="wp-image-3060" srcset="https://datauniverse.com.br/wp-content/uploads/2026/04/image-2-1024x153.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-2-300x45.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-2-768x115.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-2-1536x229.png 1536w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-2-2048x305.png 2048w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-2-scaled.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Um payload típico de webhook tem mais ou menos esta cara:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
  "id": "evt_1Q9aB2C3d4E5f6G7",
  "type": "payment.succeeded",
  "created": 1761360000,
  "data": {
    "amount": 4990,
    "currency": "brl",
    "customer_id": "cus_abc123"
  }
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">id</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">evt_1Q9aB2C3d4E5f6G7</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">type</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">payment.succeeded</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">created</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1761360000</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">data</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">amount</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">4990</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">currency</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">brl</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">customer_id</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">cus_abc123</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">  }</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre></div>



<p>Simples por fora, mas há sutilezas importantes segurança, idempotência, ordenação que aparecem rapidamente em produção.</p>



<h2 class="wp-block-heading">Webhooks na perspectiva de desenvolvimento de software</h2>



<p>Para times de desenvolvimento de software, webhooks são a cola que permite construir integrações reativas com baixo acoplamento. Em vez de o sistema A precisar conhecer os detalhes internos do sistema B, basta que B exponha eventos e A se inscreva neles.</p>



<p>Alguns padrões e casos de uso típicos:</p>



<p><strong>Integrações com plataformas de pagamento.</strong> <mark style="background-color:#fcb900" class="has-inline-color">O Stripe é o exemplo canônico. Quando uma cobrança é criada, paga, estornada ou falha, ele dispara webhooks como <code>charge.succeeded</code>, <code>charge.failed</code> ou <code>customer.subscription.deleted</code>.</mark> O backend da loja escuta esses eventos para atualizar o status do pedido, liberar acesso a um produto digital, enviar e-mail de confirmação ou cancelar uma assinatura. Tentar manter esse estado via polling seria absurdo pagamentos precisam ser refletidos em segundos, não minutos.</p>



<p><strong>Automação a partir de repositórios de código.</strong> GitHub, GitLab e Bitbucket disparam webhooks em eventos como <code>push</code>, <code>pull_request</code>, criação de issue e comentários. Sistemas de CI/CD são acionados por esses webhooks. <mark style="background-color:#fcb900" class="has-inline-color">Se o webhook não existisse, cada CI precisaria ficar perguntando &#8220;tem commit novo?&#8221; para cada repositório monitorado completamente impraticável em escala.</mark></p>



<p><strong>Bots e integrações em ferramentas de comunicação.</strong> Slack, Discord e Microsoft Teams oferecem webhooks tanto de entrada (postar mensagens via HTTP) quanto de saída (notificar sistemas externos quando algo acontece num canal). É como bots de status de produção, alertas de monitoramento e notificações de deploy chegam no canal certo no momento certo.</p>



<p><strong>E-commerce e marketplaces.</strong> Shopify, Mercado Livre e VTEX usam webhooks para notificar lojistas sobre novos pedidos, mudanças de estoque e devoluções. Sistemas de ERP, fulfillment e atendimento ao cliente consomem esses eventos para manter estados sincronizados.</p>



<p><strong>Telecomunicações e mensageria.</strong> Twilio e provedores de WhatsApp Business avisam via webhook sobre status de entrega de SMS, respostas a mensagens e chamadas recebidas permitindo construir fluxos conversacionais em tempo real.</p>



<p>Do ponto de vista arquitetural, webhooks empurram o desenvolvedor para uma mentalidade orientada a eventos. Em vez de pensar &#8220;preciso buscar dados periodicamente&#8221;, passa-se a pensar &#8220;preciso reagir quando isso acontecer&#8221;. Isso aproxima sistemas web tradicionais de padrões como <em>event-driven architecture</em>, <em>pub/sub</em> e CQRS sem exigir, no entanto, infraestrutura de mensageria dedicada.</p>



<h2 class="wp-block-heading">Webhooks na perspectiva de engenharia de dados</h2>



<p>Para engenheiros de dados, webhooks têm um papel diferente, mas igualmente central: <mark style="background-color:#fcb900" class="has-inline-color">são uma <strong>fonte primária de dados em tempo quase real</strong>, e um substituto leve para mecanismos clássicos de <em>Change Data Capture</em> (CDC) ou ingestão batch.</mark></p>



<p>Pipelines tradicionais de dados eram, e em grande parte ainda são, baseados em ETL agendado extrações que rodam a cada hora ou diariamente, lendo tabelas inteiras ou deltas de bancos transacionais. Esse modelo tem dois problemas conhecidos: a latência (dados ficam <em>stale</em> entre execuções) e o custo (extrações pesadas e janelas de manutenção).</p>



<p>Webhooks oferecem uma alternativa para parte desses casos. Quando um sistema externo expõe eventos via webhook, o pipeline de dados pode receber cada evento individualmente, em segundos, e tratá-lo como um registro a ser ingerido no <em>data lake</em> ou no <em>data warehouse</em>.</p>



<p>Alguns padrões comuns:</p>



<p><strong>Ingestão de eventos para data lake.</strong> Um endpoint de webhook recebe payloads de Stripe, Segment, Intercom ou outras SaaS, valida assinatura e despeja o JSON cru num bucket S3 (ou GCS, ou ADLS), particionado por data e tipo de evento. </p>



<p>A partir daí, ferramentas como dbt, Spark ou Snowflake transformam esses eventos em modelos analíticos. Esse padrão é a base do que ferramentas como Fivetran, RudderStack e Segment fazem por baixo dos panos.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="698" height="524" src="https://datauniverse.com.br/wp-content/uploads/2026/04/image-3.png" alt="" class="wp-image-3061" style="width:744px;height:auto" srcset="https://datauniverse.com.br/wp-content/uploads/2026/04/image-3.png 698w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-3-300x225.png 300w" sizes="(max-width: 698px) 100vw, 698px" /></figure>



<p><strong>Disparo de pipelines.</strong> Webhooks também funcionam como gatilhos de orquestração. Um arquivo aparece num bucket → o serviço de storage dispara um webhook → o Airflow ou o Prefect inicia um DAG que processa o arquivo. Sistemas como AWS EventBridge, Azure Event Grid e Google Eventarc são, em essência, infraestrutura industrial em torno desse padrão.</p>



<p><strong>Sincronização entre sistemas operacionais e analíticos.</strong> Em vez de replicar um banco transacional inteiro toda noite, a aplicação emite webhooks a cada mudança relevante (<code>order.created</code>, <code>user.updated</code>, <code>inventory.changed</code>). O pipeline de dados consome esses eventos e mantém o warehouse atualizado em <em>near real-time</em>. Essa abordagem se aproxima de <em>event sourcing</em>, e é uma alternativa interessante quando CDC direto no banco é difícil ou caro.</p>



<p><strong>Alimentação de feature stores e modelos de ML.</strong> Eventos de comportamento do usuário capturados via webhook podem alimentar <em>feature stores online</em>, permitindo que modelos de recomendação ou detecção de fraude operem com dados frescos.</p>



<p>O cuidado, do lado de dados, é que webhooks introduzem desafios específicos: eventos podem chegar fora de ordem, podem ser duplicados, podem ser perdidos se o consumidor cair, e podem chegar em volumes altíssimos durante picos. </p>



<p>Por isso, na prática, raramente o <em>handler</em> de webhook escreve direto no warehouse. O padrão maduro é: o handler valida o evento, escreve em uma fila durável (Kafka, SQS, Pub/Sub) e responde <code>200</code> rapidamente. Daí em diante, o pipeline trata o evento com as garantias necessárias idempotência, ordenação por chave, <em>dead-letter queues</em> para falhas persistentes.</p>



<h2 class="wp-block-heading">Qual é a diferença entre um webook e uma API?</h2>



<p>A diferença está em <strong>quem inicia a conversa</strong> e <strong>quando ela acontece</strong>.</p>



<p><mark style="background-color:#fcb900" class="has-inline-color">Uma API tradicional (geralmente REST) funciona por <em>pull</em>: o cliente é quem pergunta.</mark> Ele faz uma requisição HTTP quando precisa de algo <code>GET /pedidos/123</code>, <code>POST /usuarios</code> e o servidor responde. </p>



<p>Nada acontece se o cliente não perguntar. É um modelo síncrono e sob demanda: você pede, recebe a resposta naquele momento, e a conversa termina ali.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="670" height="387" src="https://datauniverse.com.br/wp-content/uploads/2026/04/image-4.png" alt="" class="wp-image-3062" style="width:750px;height:auto" srcset="https://datauniverse.com.br/wp-content/uploads/2026/04/image-4.png 670w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-4-300x173.png 300w" sizes="(max-width: 670px) 100vw, 670px" /></figure>



<p>Um webhook funciona por <em>push</em>: o servidor é quem avisa. Quando um evento de interesse acontece (pagamento confirmado, commit recebido, pedido criado), ele dispara uma requisição HTTP para uma URL que você cadastrou previamente. Você não pergunta você é notificado. É assíncrono e orientado a eventos.</p>



<p>Vale notar que <strong>webhook não é o oposto de API é um tipo de uso de API</strong>. Tecnicamente, ambos são apenas requisições HTTP. A diferença é a direção e o gatilho:</p>



<ul class="wp-block-list">
<li>Numa API tradicional, <strong>seu sistema chama o sistema deles</strong> quando precisa de informação.</li>



<li>Num webhook, <strong>o sistema deles chama o seu sistema</strong> quando algo acontece.</li>
</ul>



<figure class="wp-block-image size-large zoooom"><img loading="lazy" decoding="async" width="1024" height="241" src="https://datauniverse.com.br/wp-content/uploads/2026/04/image-1-1024x241.png" alt="" class="wp-image-3059" srcset="https://datauniverse.com.br/wp-content/uploads/2026/04/image-1-1024x241.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-1-300x71.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-1-768x181.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-1-1536x361.png 1536w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-1-2048x482.png 2048w, https://datauniverse.com.br/wp-content/uploads/2026/04/image-1-scaled.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Por isso webhooks são frequentemente descritos como &#8220;APIs reversas&#8221; ou &#8220;callbacks HTTP&#8221;.</p>



<p>Um exemplo concreto deixa isso claro. Imagine que você integrou sua loja com o Stripe:</p>



<ul class="wp-block-list">
<li><strong>Via API</strong>: você chama <code>POST /charges</code> para criar uma cobrança, ou <code>GET /charges/ch_123</code> para consultar o status. A iniciativa é sempre sua.</li>



<li><strong>Via webhook</strong>: o Stripe chama o seu endpoint <code>/stripe-events</code> quando o cliente realmente paga, quando uma assinatura é cancelada, quando há um estorno. A iniciativa é deles.</li>
</ul>



<p>E é por isso que os dois coexistem não competem. APIs servem para você <strong>fazer coisas</strong> num sistema externo (criar, ler, atualizar, deletar). Webhooks servem para você <strong>saber quando coisas acontecem</strong> num sistema externo. Numa integração madura com Stripe, GitHub ou Shopify, você usa os dois: a API para agir, o webhook para reagir.</p>



<p>A alternativa ao webhook seria ficar fazendo polling chamar a API a cada poucos segundos perguntando &#8220;tem novidade? tem novidade?&#8221;. Funciona, mas é caro, lento e desperdiça recursos. O webhook resolve exatamente esse desperdício: em vez de você perguntar mil vezes, o servidor avisa uma vez, no momento exato.</p>



<h2 class="wp-block-heading">Desafios e boas práticas</h2>



<p>Webhooks parecem simples em diagrama, mas em produção exigem disciplina:</p>



<ul class="wp-block-list">
<li><strong>Segurança.</strong> Como a URL é pública, qualquer um pode tentar bater nela. Plataformas sérias assinam o payload com HMAC e enviam a assinatura num header (<code>Stripe-Signature</code>, <code>X-Hub-Signature-256</code> no GitHub). O consumidor recalcula o HMAC com um segredo compartilhado e compara. <mark style="background-color:#fcb900" class="has-inline-color">Sem essa validação, o endpoint vira porta aberta para forjar eventos.</mark></li>



<li><strong>Idempotência.</strong> Retentativas e duplicações são parte do ciclo de vida normal. Cada evento traz um ID único, e o consumidor deve registrar esses IDs para descartar reentregas. Sem isso, um cliente pode ser cobrado duas vezes ou um e-mail enviado em duplicidade.</li>



<li><strong>Tempo de resposta.</strong> A maioria das plataformas espera resposta em poucos segundos. Processamento pesado dentro do handler é um anti-padrão o correto é enfileirar e responder rápido.</li>



<li><strong>Tratamento de falhas.</strong> Retries com backoff exponencial são comuns, mas têm limite. Eventos que falham repetidamente vão para <em>dead-letter queues</em> e exigem investigação manual ou reprocessamento programático.</li>



<li><strong>Observabilidade.</strong> Logar todo evento recebido, com ID, tipo e timestamp, é essencial para depurar especialmente porque o produtor controla o tráfego e o consumidor não pode &#8220;pedir de novo&#8221; facilmente.</li>



<li><strong>Ordenação.</strong> A maioria das plataformas não garante ordem de entrega. Se a ordem importa (e quase sempre importa em dados), o consumidor precisa lidar com isso, geralmente usando timestamps ou números de versão dentro do payload.</li>
</ul>



<h2 class="wp-block-heading">Conclusão</h2>



<p><mark style="background-color:#fcb900" class="has-inline-color">Webhooks são, hoje, a forma padrão de dois sistemas em HTTP conversarem em tempo real sem que um precise interrogar o outro.</mark> Para times de desenvolvimento, são a base de integrações reativas, automações e arquiteturas orientadas a eventos. Para times de dados, são uma fonte de ingestão <em>near real-time</em> que complementa e em muitos casos substitui pipelines batch tradicionais.</p>



<p>A simplicidade aparente esconde armadilhas reais: segurança, idempotência, ordenação e tratamento de falhas precisam ser pensados desde o início. Mas, dominados esses cuidados, webhooks são uma das ferramentas mais baratas e poderosas para construir sistemas modernos que reagem ao mundo no ritmo em que ele acontece.</p>
<p>O post <a href="https://datauniverse.com.br/o-que-sao-webhooks/">O que são Webhooks</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Monólitos x Microserviços</title>
		<link>https://datauniverse.com.br/monolitos-x-microservicos/</link>
					<comments>https://datauniverse.com.br/monolitos-x-microservicos/#respond</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Tue, 24 Mar 2026 00:44:08 +0000</pubDate>
				<category><![CDATA[Arquitetura de Dados]]></category>
		<category><![CDATA[Curso Fundamentos da Engenharia de Dados]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=3030</guid>

					<description><![CDATA[<p>Para entender a diferença entre Monólitos e Microsserviços, a melhor forma é imaginar a organização de uma cozinha, desde uma pequena lanchonete até a praça de alimentação de um shopping. Imagine um restaurante. Num monólito, existe um único chef que anota o pedido, cozinha, serve e lava a louça, tudo numa cozinha só. É simples, [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/monolitos-x-microservicos/">Monólitos x Microserviços</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Para entender a diferença entre <strong>Monólitos</strong> e <strong>Microsserviços</strong>, a melhor forma é imaginar a organização de uma cozinha, desde uma pequena lanchonete até a praça de alimentação de um shopping.</p>



<p>Imagine um restaurante. Num <strong>monólito</strong>, existe um único chef que anota o pedido, cozinha, serve e lava a louça, tudo numa cozinha só. <mark style="background-color:#fcb900" class="has-inline-color">É simples, eficiente para começar, mas se o chef adoecer, o restaurante para. </mark></p>



<p>Num sistema de <strong>microserviços</strong>, há especialistas: um maître, um garçom, um grelheiro, um confeiteiro e um lavador de louças, cada um faz sua parte de forma independente, se comunicando para entregar o prato ao cliente. <mark style="background-color:#fcb900" class="has-inline-color">Mais complexo de coordenar, mas muito mais resiliente e escalável.</mark></p>



<h2 class="wp-block-heading">O Monólito: A &#8220;Cozinha de um único Chef&#8221;</h2>



<p>No modelo monolítico, toda a aplicação é construída como uma <strong>unidade única e indivisível</strong>. Todas as funções (pedidos, pagamentos, estoque, entrega) estão no mesmo código, rodam no mesmo servidor e compartilham o mesmo banco de dados.</p>



<p><strong>Como funciona na prática:</strong> Imagine um pequeno restaurante onde o mesmo chef recebe o pedido, cozinha, lava a louça e faz o caixa.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="687" height="420" src="https://datauniverse.com.br/wp-content/uploads/2026/03/image-13.png" alt="" class="wp-image-3032" srcset="https://datauniverse.com.br/wp-content/uploads/2026/03/image-13.png 687w, https://datauniverse.com.br/wp-content/uploads/2026/03/image-13-300x183.png 300w" sizes="(max-width: 687px) 100vw, 687px" /></figure>



<p>Repare que os três módulos internos vivem dentro do mesmo processo. Um bug em &#8220;Acesso a dados&#8221; pode derrubar a &#8220;Apresentação&#8221;. Um deploy de qualquer módulo exige redeployar o sistema inteiro.</p>



<p><strong>Vantagens do monólito:</strong></p>



<p>É muito simples de começar. É fácil de testar e colocar no ar (deploy), pois é apenas um &#8220;pacote&#8221;.</p>



<ul class="wp-block-list">
<li>Simples de desenvolver no início um único projeto, uma única base de código</li>



<li>Fácil de testar localmente</li>



<li>Sem latência de rede entre módulos (chamadas são em memória)</li>



<li>Deploy simples: um artefato, um servidor</li>
</ul>



<p><strong>Desvantagens do monólito:</strong></p>



<p>Se o restaurante lota e você precisa de mais agilidade na cozinha, você não consegue contratar &#8220;apenas um cozinheiro&#8221;. Você teria que clonar o restaurante inteiro (com caixa, pia e balcão novos) só para fritar mais batatas. Se o chef tropeça e se machuca, o restaurante inteiro para.</p>



<ul class="wp-block-list">
<li>Qualquer falha pode derrubar tudo</li>



<li>Escalar exige replicar a aplicação inteira, mesmo que só uma parte precise de mais recursos</li>



<li>Times grandes brigam pela mesma base de código</li>



<li>Com o tempo, o código fica acoplado e difícil de manter (o famoso &#8220;big ball of mud&#8221;)</li>
</ul>



<h2 class="wp-block-heading">Microsserviços: A &#8220;Praça de Alimentação&#8221;</h2>



<p>Na arquitetura de microsserviços, a aplicação é dividida em <strong>vários pequenos serviços independentes</strong> que se comunicam entre si (geralmente via APIs ou Mensageria). Cada serviço cuida de uma única função de negócio e pode ter seu próprio banco de dados e tecnologia.</p>



<p>Eles se comunicam via HTTP/REST, gRPC ou mensageria (Kafka, RabbitMQ).</p>



<p><strong>Como funciona na prática:</strong> Imagine uma praça de alimentação. Existe um quiosque só para Bebidas, um só para Hambúrgueres e um Totem central para Pagamentos.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="681" height="292" src="https://datauniverse.com.br/wp-content/uploads/2026/03/image-14.png" alt="" class="wp-image-3033" srcset="https://datauniverse.com.br/wp-content/uploads/2026/03/image-14.png 681w, https://datauniverse.com.br/wp-content/uploads/2026/03/image-14-300x129.png 300w" sizes="(max-width: 681px) 100vw, 681px" /></figure>



<p>Cada serviço é completamente independente. O serviço de Pedidos pode cair sem afetar o de Produtos. Você pode escalar só o serviço de Pagamentos em datas como Black Friday, sem tocar nos outros.</p>



<p><strong>Vantagens dos microserviços:</strong></p>



<p>Se a demanda por hambúrgueres aumenta, você coloca mais chapas apenas naquele quiosque, sem mexer no setor de bebidas. Se o sistema de bebidas der erro, as pessoas ainda conseguem comprar comida e pagar.</p>



<ul class="wp-block-list">
<li>Escalabilidade granular: escale só o que precisa</li>



<li>Falhas são isoladas: um serviço cai sem derrubar os outros</li>



<li>Times podem trabalhar de forma independente em serviços diferentes</li>



<li>Cada serviço pode usar a linguagem e o banco de dados mais adequados para seu problema</li>



<li>Deploy independente por serviço</li>
</ul>



<p><strong>Desvantagens dos microserviços:</strong></p>



<p>Agora você precisa de uma logística complexa para que os pedidos cheguem corretamente de um quiosque ao outro. A comunicação entre os serviços é o ponto mais difícil de gerenciar.</p>



<ul class="wp-block-list">
<li>Complexidade operacional muito maior (Kubernetes, service mesh, monitoramento distribuído)</li>



<li>Latência de rede nas chamadas entre serviços</li>



<li>Transações distribuídas são difíceis (não tem <code>BEGIN TRANSACTION</code> entre bancos diferentes)</li>



<li>Debugging é mais difícil: um erro pode atravessar 5 serviços</li>



<li>Overhead de infraestrutura significativo</li>
</ul>



<h2 class="wp-block-heading">Comparativo Direto</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Característica</strong></td><td><strong>Monólito</strong></td><td><strong>Microsserviços</strong></td></tr></thead><tbody><tr><td><strong>Desenvolvimento</strong></td><td>Simples e rápido no início.</td><td>Lento e complexo para configurar.</td></tr><tr><td><strong>Escalabilidade</strong></td><td>Vertical (precisa de uma máquina maior).</td><td>Horizontal (adiciona mais máquinas pequenas).</td></tr><tr><td><strong>Falhas</strong></td><td>Uma falha pode derrubar o sistema todo.</td><td>Falhas são isoladas em um serviço.</td></tr><tr><td><strong>Tecnologia</strong></td><td>Uma única stack (ex: Tudo em Java).</td><td>Cada serviço pode usar uma linguagem diferente.</td></tr><tr><td><strong>Deployment</strong></td><td>Atualiza tudo de uma vez.</td><td>Atualiza cada peça independentemente.</td></tr></tbody></table></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="638" src="https://datauniverse.com.br/wp-content/uploads/2026/03/image-12-1024x638.png" alt="" class="wp-image-3031" srcset="https://datauniverse.com.br/wp-content/uploads/2026/03/image-12-1024x638.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/03/image-12-300x187.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/03/image-12-768x479.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/03/image-12.png 1216w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">O ponto crítico que ninguém conta: A falácia do &#8220;começa com microserviços&#8221;</h2>



<p><mark style="background-color:#fcb900" class="has-inline-color">Um erro clássico é começar um projeto novo já com microserviços. O problema é que você ainda não sabe onde estão as fronteiras naturais do seu domínio</mark>. Martin Fowler chama isso de &#8220;distributed monolith&#8221;: você tem toda a complexidade dos microserviços, sem nenhum dos benefícios os serviços ficam tão acoplados que um deploy de um exige deploy de todos os outros.</p>



<p>A abordagem recomendada é começar com um monólito bem estruturado e extrair microserviços conforme a necessidade real aparecer.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Critério</th><th class="has-text-align-left" data-align="left">Monólito</th><th class="has-text-align-left" data-align="left">Microserviços</th><th class="has-text-align-left" data-align="left">Vence</th></tr></thead><tbody><tr><td>Complexidade inicial</td><td>Baixa. Um projeto, um deploy, um banco.</td><td>Alta. Orquestração, rede, monitoramento distribuído.</td><td>Monólito</td></tr><tr><td>Escalabilidade</td><td>Escala a aplicação inteira, mesmo que o gargalo seja um módulo só.</td><td>Escala apenas o serviço que precisa de mais recursos.</td><td>Micro</td></tr><tr><td>Resiliência</td><td>Falha num módulo pode derrubar tudo.</td><td>Falhas são isoladas por serviço.</td><td>Micro</td></tr><tr><td>Velocidade de dev</td><td>Rápido no início. Lento quando o código cresce e fica acoplado.</td><td>Lento no início (infra). Rápido quando times são grandes e independentes.</td><td>Depende</td></tr><tr><td>Deploy</td><td>Um artefato. Simples, mas qualquer mudança exige redeployar tudo.</td><td>Deploy independente por serviço. Risco menor por mudança.</td><td>Micro</td></tr><tr><td>Debugging</td><td>Stack trace local. Fácil de reproduzir.</td><td>Trace distribuído. Precisa de ferramentas como Jaeger, Zipkin.</td><td>Monólito</td></tr><tr><td>Transações</td><td>ACID nativo com um banco. Rollback trivial.</td><td>Sem transações distribuídas nativas. Precisa de Saga pattern.</td><td>Monólito</td></tr><tr><td>Custo de infra</td><td>Baixo. Um ou poucos servidores.</td><td>Alto. Kubernetes, service mesh, múltiplos bancos, observabilidade.</td><td>Monólito</td></tr><tr><td>Tamanho do time</td><td>Ideal para times pequenos (1–15 devs).</td><td>Justificado com times grandes e múltiplos squads independentes.</td><td>Depende</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Qual escolher?</h2>



<ul class="wp-block-list">
<li><strong>Escolha Monólito se:</strong> Você está criando um MVP (Produto Mínimo Viável), tem uma equipe pequena ou a aplicação não é absurdamente complexa. <strong>Dica:</strong> Comece como um &#8220;Monólito Modular&#8221; bem organizado.</li>



<li><strong>Escolha Microsserviços se:</strong> Sua aplicação é gigante (nível Netflix, Uber ou Nubank), você tem dezenas de times de desenvolvedores e precisa escalar partes diferentes do sistema de forma independente.</li>
</ul>



<p>Existe uma heurística simples que resume bem quando migrar:</p>



<p><strong>Fique no monólito enquanto:</strong> O time for pequeno, o produto ainda estiver buscando product-market fit, ou você conseguir deployar sem travar outros times.</p>



<p><strong>Considere microserviços quando:</strong> Times diferentes estão se bloqueando para deployar, uma parte do sistema tem exigências de escala radicalmente diferentes das outras (ex: serviço de busca vs serviço de autenticação), ou a resiliência de partes críticas vira um requisito de negócio.</p>



<p>Netflix, Amazon e Uber não começaram com microserviços, todos começaram como monólitos e migraram conforme a necessidade. Isso diz muito sobre a ordem certa de fazer as coisas.</p>
<p>O post <a href="https://datauniverse.com.br/monolitos-x-microservicos/">Monólitos x Microserviços</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/monolitos-x-microservicos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pipeline de Arquitetura de Dados Moderna: Processamento e Consumo</title>
		<link>https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-processamento-e-consumo/</link>
					<comments>https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-processamento-e-consumo/#respond</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 21:31:38 +0000</pubDate>
				<category><![CDATA[Arquitetura de Dados]]></category>
		<category><![CDATA[Curso Fundamentos da Engenharia de Dados]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=2933</guid>

					<description><![CDATA[<p>A arquitetura de dados moderna, é dividida logicamente em camadas distintas focadas em preparar, transformar e tornar os dados acessíveis. Essa estrutura garante a confiabilidade, escalabilidade e democratização dos dados em toda a organização. As duas camadas centrais para este processo são a Camada de Processamento e a Camada de Consumo, que atuam como o [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-processamento-e-consumo/">Pipeline de Arquitetura de Dados Moderna: Processamento e Consumo</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A arquitetura de dados moderna, é dividida logicamente em camadas distintas focadas em preparar, transformar e tornar os dados acessíveis. Essa estrutura garante a confiabilidade, escalabilidade e democratização dos dados em toda a organização. </p>



<p>As duas camadas centrais para este processo são a <strong>Camada de Processamento</strong> e a <strong>Camada de Consumo</strong>, que atuam como o motor para transformar informações brutas em <em>insights</em> acionáveis.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="247" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-12-1024x247.png" alt="" class="wp-image-2938" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-12-1024x247.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-12-300x72.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-12-768x185.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-12-1536x370.png 1536w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-12-2048x494.png 2048w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-12-scaled.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading"><strong>A Camada de Processamento: O Motor de Transformação de Dados</strong></h2>



<p>A Camada de Processamento é o intermediário vital entre o armazenamento de dados brutos (tipicamente um Data Lake baseado em Amazon S3 e/ou um Data Warehouse como o Amazon Redshift) e os usuários ou sistemas finais. </p>



<p>Seu objetivo é empregar componentes especializados e criados especificamente para lidar efetivamente com as diversas características dos dados modernos, incluindo tipos de <mark style="background-color:#fcb900" class="has-inline-color">dados variados, velocidades extremas (velocidade de chegada) e requisitos complexos de transformação.</mark></p>



<h3 class="wp-block-heading"><strong>Princípios Chave de Design e Interações:</strong></h3>



<p><strong>Componentes Criados para Fins Específicos (<em>Purpose-Built Components</em>):</strong> Esta camada não é monolítica. Ela utiliza serviços específicos, cada um otimizado para uma carga de trabalho de dados particular (ex: <em>streaming</em>, lote (<em>batch</em>), consultas SQL).</p>



<p><strong>Integração Escalável com o Armazenamento:</strong> Todo componente na camada de processamento é projetado para interagir de forma contínua e em escala com a camada de armazenamento fundamental (Amazon S3 e Amazon Redshift). <mark style="background-color:#fcb900" class="has-inline-color">Esse desacoplamento da computação (processamento) do armazenamento é uma marca registrada da arquitetura de nuvem moderna, permitindo o dimensionamento independente.</mark></p>



<p><strong>O Ciclo de Vida da Transformação:</strong> O processamento de dados segue um padrão consistente:</p>



<ul class="wp-block-list">
<li><strong>Leitura:</strong> Os dados são ingeridos da camada de armazenamento (dados de origem).</li>



<li><strong>Processamento:</strong> Transformações, limpeza, enriquecimento e agregação são aplicadas. Armazenamento temporário (ex: armazenamento local em um <em>cluster</em> Amazon EMR ou áreas de <em>staging</em> temporárias no S3) pode ser usado durante esta fase.</li>



<li><strong>Escrita:</strong> Os resultados processados, refinados e agregados (frequentemente referidos como &#8216;dados curados&#8217;) são gravados de volta em um local designado dentro da camada de armazenamento, prontos para consumo.</li>
</ul>



<p><strong>Categorias e Casos de Uso Detalhados de Transformação:</strong></p>



<p>As transformações dentro desta camada são fundamentalmente categorizadas pelo modelo de computação e pelas restrições de latência exigidos:</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Categoria</strong></td><td><strong>Método Típico</strong></td><td><strong>Tecnologias Primárias</strong></td><td><strong>Descrição e Caso de Uso</strong></td></tr><tr><td><strong>Processamento Baseado em SQL (ELT)</strong></td><td><em>Extract, Load, Transform</em> (ELT)</td><td>Amazon Redshift</td><td>Ideal para dados estruturados e modelagem dimensional complexa. Os dados são carregados diretamente no <em>data warehouse</em>, e as transformações são executadas usando consultas SQL altamente otimizadas dentro do ambiente do <em>data warehouse</em>. É o preferido para <em>business intelligence</em> e relatórios tradicionais.</td></tr><tr><td><strong>Processamento de </strong><strong><em><a href="https://datauniverse.com.br/big-data/">Big Data</a></em></strong><strong> (ETL)</strong></td><td><em>Extract, Transform, Load</em> (ETL)</td><td>Amazon EMR (Hadoop/Spark), AWS Glue</td><td>Usado para conjuntos de dados massivos e heterogêneos (estruturados, semi-estruturados e não estruturados). Essas estruturas oferecem computação distribuída e escalável para transformações complexas, limpeza de dados, evolução de <em>schema</em> e integração de diversas fontes. Mais adequado para o processamento de <em>data lake</em>.</td></tr><tr><td><strong>Processamento Quase em Tempo Real (ETL)</strong></td><td>ETL de <em>Streaming</em></td><td>Amazon Kinesis Data Analytics, Spark Streaming no Amazon EMR, AWS Glue Streaming</td><td>Lida com <em>feeds</em> de dados de alta velocidade (ex: dados de IoT, <em>clickstreams</em>). As transformações são executadas continuamente em fluxos de dados com latência de sub-segundo ou quase-segundo, permitindo alertas imediatos, <em>dashboards</em> ao vivo e tomada de decisões imediata baseada em eventos atuais.</td></tr></tbody></table></figure>



<p>Em resumo, a camada de processamento fornece as ferramentas computacionais otimizadas necessárias para preparar e estruturar os dados, tornando-os adequados e confiáveis para a camada de consumo.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="903" height="497" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-10.png" alt="" class="wp-image-2936" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-10.png 903w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-10-300x165.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-10-768x423.png 768w" sizes="(max-width: 903px) 100vw, 903px" /></figure>



<h2 class="wp-block-heading"><strong>A Camada de Consumo: Acesso a Dados e Geração de <em>Insights</em></strong></h2>



<p>A Camada de Consumo <mark style="background-color:#fcb900" class="has-inline-color">representa a fase final do <em>pipeline</em> de dados</mark>, alinhando-se com as fases de Análise e Visualização. Ela é projetada para ser o único ponto de acesso unificado para todos os dados e metadados curados que residem na camada de armazenamento. </p>



<p>Sua função principal é <strong>democratizar o acesso aos dados</strong>, garantindo que cada função de usuário (de analista de negócios a cientista de dados) tenha as ferramentas apropriadas e escaláveis para derivar valor.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="575" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-11-1024x575.png" alt="" class="wp-image-2937" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-11-1024x575.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-11-300x168.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-11-768x431.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-11.png 1258w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Características Chave e Suporte Arquitetural:</strong></p>



<ul class="wp-block-list">
<li><strong>Acesso Unificado:</strong> Esta camada garante que a análise não seja restringida por onde os dados estão localizados. Ela fornece os mecanismos para acessar perfeitamente dados combinados tanto do <em>data warehouse</em> estruturado (suportando <em>schemas</em> tradicionais) quanto do <em>data lake</em> flexível (utilizando formatos abertos como Parquet, ORC e JSON).</li>



<li><strong>Componentes Escaláveis:</strong> As ferramentas dentro desta camada são <em>serverless</em> (sem servidor) ou altamente escaláveis, projetadas para lidar com um grande número de usuários concorrentes e consultas analíticas que exigem muitos recursos, sem degradação de desempenho.</li>
</ul>



<h2 class="wp-block-heading"><strong>Métodos de Análise Central Suportados:</strong></h2>



<p>A arquitetura suporta explicitamente um conjunto diversificado de fluxos de trabalho analíticos, atendendo a diferentes personas e necessidades do usuário:</p>



<p><strong>Consultas SQL Interativas (Análise de Autoatendimento):</strong></p>



<ul class="wp-block-list">
<li><strong>Persona do Usuário:</strong> Analistas de Negócios, Cientistas de Dados e Usuários Avançados.</li>



<li><strong>Função:</strong> Permite análise exploratória de dados (AED) e relatórios <em>ad-hoc</em>. Os usuários podem consultar todos os dados, independentemente da escala, usando SQL padrão.</li>



<li><strong>Tecnologias:</strong> Amazon Redshift com <strong>Redshift Spectrum</strong> (permitindo que o Redshift consulte dados diretamente no S3) e <strong>Amazon Athena</strong> (um serviço de consulta <em>serverless</em> para dados do S3).</li>
</ul>



<p><strong>Dashboards de BI (Relatórios Operacionais e Estratégicos):</strong></p>



<ul class="wp-block-list">
<li><strong>Persona do Usuário:</strong> Executivos, Gerentes Operacionais e Equipes de Negócios.</li>



<li><strong>Função:</strong> Criação, publicação e distribuição de relatórios e <em>dashboards</em> de <em>business intelligence</em> interativos para monitorar indicadores-chave de desempenho (KPIs) e métricas operacionais.</li>



<li><strong>Tecnologias:</strong> <strong>Amazon QuickSight</strong> (um serviço de BI <em>serverless</em>). O QuickSight pode ser alimentado por conexões de alto desempenho tanto com o Amazon Athena quanto com o Amazon Redshift. Um valor agregado significativo é a integração do QuickSight de <em>insights</em> de ML gerados automaticamente, como previsão precisa, detecção de anomalias e recursos de consulta em linguagem natural.</li>
</ul>



<p><strong>Machine Learning (Análise Avançada):</strong></p>



<ul class="wp-block-list">
<li><strong>Persona do Usuário:</strong> Cientistas de Dados e Engenheiros de ML.</li>



<li><strong>Função:</strong> O ciclo de vida completo de ML, incluindo preparação de dados, engenharia de <em>features</em>, desenvolvimento de modelo, treinamento e implantação. A arquitetura garante que as ferramentas de ML possam acessar facilmente grandes volumes de dados estruturados e não estruturados.</li>



<li><strong>Tecnologias:</strong> <strong>Amazon SageMaker</strong> (um serviço de ML totalmente gerenciado) se conecta diretamente aos dados curados na camada de armazenamento (S3 e Redshift) por meio de interfaces simplificadas, abstraindo a complexa &#8220;canalização&#8221; de dados (<em>data plumbing</em>) e permitindo que os cientistas de dados se concentrem puramente na inovação do modelo.</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-13-1024x576.png" alt="" class="wp-image-2939" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-13-1024x576.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-13-300x169.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-13-768x432.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-13-1536x864.png 1536w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-13.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><strong>Resumo das Funções Arquiteturais</strong></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Camada</strong></td><td><strong>Função Primária</strong></td><td><strong>Cargas de Trabalho/Tipos de Dados Suportados</strong></td><td><strong>Principais Resultados</strong></td></tr><tr><td><strong>Camada de Processamento</strong></td><td>Transformar e Curar Dados</td><td>ELT baseado em SQL (Redshift), ETL de <em>Big Data</em> (EMR/Glue), ETL Quase em Tempo Real (Kinesis/Streaming)</td><td>Dados limpos, validados, agregados e prontos para consumo na camada de armazenamento.</td></tr><tr><td><strong>Camada de Consumo</strong></td><td>Acesso a Dados e Geração de <em>Insights</em></td><td>Consultas SQL Interativas, <em>Dashboards</em> de BI, <em>Machine Learning</em></td><td>Democratização de Dados, Análise <em>Ad-Hoc</em>, Relatórios Operacionais e Modelagem Preditiva.</td></tr></tbody></table></figure>
<p>O post <a href="https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-processamento-e-consumo/">Pipeline de Arquitetura de Dados Moderna: Processamento e Consumo</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-processamento-e-consumo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pipeline de Arquitetura de Dados Moderna: Ingestão e Armazenamento</title>
		<link>https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-ingestao-e-armazenamento/</link>
					<comments>https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-ingestao-e-armazenamento/#respond</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Fri, 20 Feb 2026 19:42:05 +0000</pubDate>
				<category><![CDATA[Arquitetura de Dados]]></category>
		<category><![CDATA[Curso Fundamentos da Engenharia de Dados]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=2924</guid>

					<description><![CDATA[<p>A estrutura fundamental de um pipeline analítico focado nas camadas de ingestão e armazenamento baseia-se na divisão do ecossistema em ferramentas específicas de ingestão, as quais se integram diretamente a um repositório durável e escalável. Paralelamente, ocorre a integração de um catálogo de metadados para garantir a governança e a descoberta dos ativos corporativos. 1. [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-ingestao-e-armazenamento/">Pipeline de Arquitetura de Dados Moderna: Ingestão e Armazenamento</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A estrutura fundamental de um pipeline analítico focado nas camadas de ingestão e armazenamento baseia-se na divisão do ecossistema em ferramentas específicas de ingestão, as quais se integram diretamente a um repositório durável e escalável. Paralelamente, ocorre a integração de um catálogo de metadados para garantir a governança e a descoberta dos ativos corporativos.</p>



<h3 class="wp-block-heading">1. Camada de Ingestão: Alinhamento por Volume, Variedade e Velocidade</h3>



<p>A seleção das ferramentas de ingestão é realizada com base nas características intrínsecas da fonte geradora. Essa adequação tecnológica evita gargalos de I/O e garante a latência esperada para o negócio. A estruturação dos pipelines de ingestão respeita a seguinte correspondência de serviços:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Categoria da Fonte de Dados</strong></td><td><strong>Exemplos de Origem</strong></td><td><strong>Serviço de Ingestão AWS Recomendado</strong></td></tr></thead><tbody><tr><td><strong>Aplicações de Terceiros</strong></td><td>SaaS apps</td><td><strong>Amazon AppFlow</strong></td></tr><tr><td><strong>Sistemas Relacionais e Negócio</strong></td><td>OLTP, ERP, CRM, LOB</td><td><strong>AWS DMS</strong> (Database Migration Service)</td></tr><tr><td><strong>Sistemas de Arquivos</strong></td><td>File shares</td><td><strong>AWS DataSync</strong></td></tr><tr><td><strong>Streaming e Eventos em Tempo Real</strong></td><td>Web, Dispositivos Móveis, Sensores (IoT), Mídias Sociais</td><td><strong>Amazon Kinesis Data Streams</strong> e <strong>Kinesis Data Firehose</strong></td></tr></tbody></table></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="904" height="496" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-2.png" alt="" class="wp-image-2925" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-2.png 904w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-2-300x165.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-2-768x421.png 768w" sizes="(max-width: 904px) 100vw, 904px" /></figure>



<p>A alocação dos dados obedece à sua estrutura e ao caso de uso analítico final. A arquitetura moderna utiliza o <strong>Amazon S3</strong> como fundação do <strong>Data Lake</strong> e o <strong>Amazon Redshift</strong> como motor de <strong>Data Warehouse</strong>, mantendo uma integração nativa e bidirecional entre eles.</p>



<ul class="wp-block-list">
<li><strong>Armazenamento de <a href="https://datauniverse.com.br/big-data/">Big Data</a> (Data Lake):</strong> Dados não estruturados, semiestruturados e estruturados são depositados na forma de objetos dentro do <strong>Amazon S3</strong>. Este repositório é desenhado para suportar cargas de trabalho massivas de Inteligência Artificial e <em>Machine Learning</em> (AI/ML).</li>



<li><strong>Armazenamento Analítico Estruturado (Data Warehouse):</strong> Informações altamente estruturadas são carregadas em esquemas tradicionais no <strong>Amazon Redshift</strong>. Este fluxo é direcionado estritamente para alimentar <em>dashboards</em> de <em>Business Intelligence</em> (BI) que exigem alta velocidade e baixa latência. Quando necessário, a movimentação de dados semiestruturados do S3 para o Redshift ocorre utilizando tabelas intermediárias (<em>staging tables</em>).</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="898" height="492" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-3.png" alt="" class="wp-image-2926" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-3.png 898w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-3-300x164.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-3-768x421.png 768w" sizes="(max-width: 898px) 100vw, 898px" /></figure>



<h3 class="wp-block-heading">3. Zonas de Armazenamento: Estruturação de Estados de Dados</h3>



<p>A organização do Data Lake no <strong>Amazon S3</strong> utiliza prefixos lógicos ou <em>buckets</em> individuais para representar as diferentes zonas e o estado de maturidade da informação. O fluxo de refinamento contínuo é estabelecido nas seguintes etapas:</p>



<ol start="1" class="wp-block-list">
<li><strong>Landing:</strong> O dado é recebido e acomodado em seu formato original, oriundo diretamente das ferramentas de ingestão.</li>



<li><strong>Raw:</strong> Rotinas de limpeza (<em>Clean</em>) são executadas para remover inconsistências sistêmicas graves.</li>



<li><strong>Trusted:</strong> A etapa de estruturação (<em>Structure</em>) e padronização de tipos de dados é aplicada.</li>



<li><strong>Curated:</strong> A informação é enriquecida e validada (<em>Enrich and validate</em>) por meio da aplicação de regras de negócio definitivas.</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="903" height="495" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-6.png" alt="" class="wp-image-2929" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-6.png 903w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-6-300x164.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-6-768x421.png 768w" sizes="(max-width: 903px) 100vw, 903px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="496" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-4.png" alt="" class="wp-image-2927" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-4.png 902w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-4-300x165.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-4-768x422.png 768w" sizes="(max-width: 902px) 100vw, 902px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="494" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-5.png" alt="" class="wp-image-2928" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-5.png 902w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-5-300x164.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-5-768x421.png 768w" sizes="(max-width: 902px) 100vw, 902px" /></figure>



<p>As consultas complexas (<em>complex querying</em>) processadas pelo <strong>Amazon Redshift</strong> são apontadas diretamente para a zona <em>Curated</em>, onde o dado possui o maior nível de confiabilidade.</p>



<h3 class="wp-block-heading">4. Camada de Catálogo: Governança e Interoperabilidade</h3>



<p>As instâncias de armazenamento físico são sobrepostas por uma camada lógica de catálogo. Sem esta camada, o ambiente tende a se degenerar com o tempo, perdendo a rastreabilidade estrutural.</p>



<ul class="wp-block-list">
<li><strong>Extração de Metadados:</strong> O serviço <strong>AWS Glue Crawlers</strong> atua contra os <em>buckets</em> do <strong>Amazon S3</strong> para rastrear os arquivos, inferir sua estrutura e atualizar automaticamente os esquemas lógicos.</li>



<li><strong>Centralização de Registros:</strong> Os metadados inferidos são centralizados no <strong>AWS Glue Data Catalog</strong>, enquanto as políticas de acesso a esses dados são governadas através do <strong>AWS Lake Formation</strong>.</li>



<li><strong>Consultas Federadas:</strong> O mecanismo <strong>Amazon Redshift Spectrum</strong> entra em ação para ler as informações de esquema diretamente da camada de catálogo. Isso permite que consultas analíticas sejam executadas de forma transparente contra os dados físicos residentes no <strong>Amazon S3</strong>, o que elimina a necessidade de duplicar ou movimentar os dados de forma redundante para os discos locais do banco de dados analítico.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1023" height="574" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-7.png" alt="" class="wp-image-2930" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-7.png 1023w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-7-300x168.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-7-768x431.png 768w" sizes="(max-width: 1023px) 100vw, 1023px" /></figure>
<p>O post <a href="https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-ingestao-e-armazenamento/">Pipeline de Arquitetura de Dados Moderna: Ingestão e Armazenamento</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/pipeline-de-arquitetura-de-dados-moderna-ingestao-e-armazenamento/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Modern Data Architechture &#038; Data Stack</title>
		<link>https://datauniverse.com.br/modern-data-architechture-data-stack/</link>
					<comments>https://datauniverse.com.br/modern-data-architechture-data-stack/#respond</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Thu, 19 Feb 2026 03:14:06 +0000</pubDate>
				<category><![CDATA[Arquitetura de Dados]]></category>
		<category><![CDATA[Curso Fundamentos da Engenharia de Dados]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=2916</guid>

					<description><![CDATA[<p>A evolução do processamento de dados exigiu a transição de sistemas monolíticos para ecossistemas distribuídos, modulares e elásticos. Historicamente, pipelines dependiam de processos ETL (Extract, Transform, Load) rígidos, executados em lote (batch) durante a madrugada, alimentando um Data Warehouse centralizado e hospedado em infraestrutura local (on-premise). Esse modelo não suporta o volume, a velocidade e [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/modern-data-architechture-data-stack/">Modern Data Architechture &amp; Data Stack</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A evolução do processamento de dados exigiu a transição de sistemas monolíticos para ecossistemas distribuídos, modulares e elásticos. Historicamente, pipelines dependiam de processos <strong>ETL (Extract, Transform, Load)</strong> rígidos, executados em lote (<strong>batch</strong>) durante a madrugada, alimentando um <strong>Data Warehouse</strong> centralizado e hospedado em infraestrutura local (<em>on-premise</em>). <mark style="background-color:#fcb900" class="has-inline-color">Esse modelo não suporta o volume, a velocidade e a variedade dos dados gerados atualmente.</mark></p>



<p>Para compreender a necessidade da <strong>Modern Data Architecture</strong>, analise o seguinte exemplo hipotético:</p>



<p>Uma rede de varejo global precisa recomendar produtos em seu aplicativo <mark style="background-color:#fcb900" class="has-inline-color">em tempo real.</mark> No modelo tradicional, a compra do cliente só seria processada no dia seguinte, tornando a recomendação obsoleta. </p>



<p>Com uma arquitetura de dados moderna, o clique do usuário flui através de uma ferramenta de mensageria instantânea (<strong>Streaming</strong>), cruza com o histórico de compras armazenado em um sistema de armazenamento em nuvem e alimenta um modelo de <em>Machine Learning</em> em segundos. </p>



<p><mark style="background-color:#fcb900" class="has-inline-color">A recomendação aparece antes de o cliente fechar o aplicativo.</mark></p>



<h2 class="wp-block-heading">Modern Data Architecture</h2>



<p>Sob a perspectiva da engenharia, a <strong>Modern Data Architecture (MDA)</strong> é um <mark style="background-color:#fcb900" class="has-inline-color">conjunto de princípios estruturais, tecnologias em nuvem e padrões de design de software aplicados à gestão de dados.</mark></p>



<p>Ela é fundamentalmente caracterizada pela <strong>separação entre armazenamento e processamento (Decoupled Compute and Storage)</strong>. Isso significa que os dados repousam em um repositório de baixo custo e alta disponibilidade (como <em>Object Storages</em>), enquanto os motores de processamento são provisionados e escalados sob demanda de forma independente.</p>



<p>Uma arquitetura moderna integra dados estruturados, semiestruturados e não estruturados, combinando a flexibilidade de um <strong>Data Lake</strong> com o rigor de transações ACID (Atomicidade, Consistência, Isolamento e Durabilidade) e a governança de um <strong>Data Warehouse</strong>, culminando no paradigma conhecido como <strong><a href="https://datauniverse.com.br/data-lakehouse/">Data Lakehouse</a></strong>.</p>



<figure class="wp-block-image size-full"><img decoding="async" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image.png" alt="" class="wp-image-2917"/></figure>



<h2 class="wp-block-heading">Modern Data Stack</h2>



<p>O <strong>Modern Data Stack (MDS)</strong> é uma definição <mark style="background-color:#fcb900" class="has-inline-color">focada no conjunto de tecnologias e ferramentas </mark>projetadas para coletar, armazenar, processar e analisar dados de maneira escalável, eficiente e com custos otimizados.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="960" height="540" src="https://datauniverse.com.br/wp-content/uploads/2025/02/modern-data-stack.jpg" alt="" class="wp-image-2617" srcset="https://datauniverse.com.br/wp-content/uploads/2025/02/modern-data-stack.jpg 960w, https://datauniverse.com.br/wp-content/uploads/2025/02/modern-data-stack-300x169.jpg 300w, https://datauniverse.com.br/wp-content/uploads/2025/02/modern-data-stack-768x432.jpg 768w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<h2 class="wp-block-heading">Qual é a importância desse conceito?</h2>



<p>Devemos projetar sistemas considerando que a sobrevivência operacional de uma empresa orientada a dados depende de sua arquitetura. A importância da MDA manifesta-se nos seguintes pilares fundamentais:</p>



<ul class="wp-block-list">
<li><strong>Escalabilidade Elástica:</strong> Permite aumentar ou reduzir recursos computacionais automaticamente em resposta a picos de tráfego, evitando gargalos ou capacidade ociosa.</li>



<li><strong>Time-to-Market (Agilidade):</strong> Facilita a implantação rápida de novos produtos de dados, pipelines e modelos analíticos.</li>



<li><strong>Democratização dos Dados:</strong> Viabiliza o acesso seguro e governado aos dados para diferentes perfis (Cientistas de Dados, Analistas de Negócios e Engenheiros).</li>



<li><strong>Otimização de Custos (FinOps):</strong> Ao separar armazenamento e computação, paga-se apenas pelo processamento efetivamente utilizado em nuvem (<em>pay-as-you-go</em>).</li>
</ul>



<h2 class="wp-block-heading">A Influência da IA/ML e IoT na Infraestrutura de Dados</h2>



<p>O avanço de IA/ML (Inteligência Artificial e Machine Learning) e IoT (Internet das Coisas) tem sido um dos principais impulsionadores no desenvolvimento da infraestrutura de dados. </p>



<p>A capacidade de gerar e analisar grandes volumes de dados oferece uma vantagem competitiva significativa no mercado, e por isso, cada vez mais empresas buscam se transformar em &#8220;empresas de dados&#8221;, alavancando suas operações por meio de uma abordagem orientada por dados.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="903" height="494" src="https://datauniverse.com.br/wp-content/uploads/2026/02/image-1.png" alt="" class="wp-image-2918" srcset="https://datauniverse.com.br/wp-content/uploads/2026/02/image-1.png 903w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-1-300x164.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/02/image-1-768x420.png 768w" sizes="(max-width: 903px) 100vw, 903px" /></figure>



<h2 class="wp-block-heading">Como os objetivos e prioridades das empresas mudaram?</h2>



<p>A arquitetura evoluiu significativamente devido às mudanças nos objetivos das empresas, que hoje priorizam velocidade, escalabilidade, inteligência artificial e análise em tempo real.</p>



<ol class="wp-block-list">
<li><strong>Década passada (2010-2020)</strong> → Empresas focavam em <strong>relatórios estáticos</strong>, <strong>BI tradicional</strong> e <strong>ETL</strong> para armazenar e processar dados estruturados.</li>



<li><strong>Atualmente (2020-2025)</strong> → Empresas querem <strong>dados em tempo real</strong>, <strong>machine learning/IA</strong>, <strong>personalização em escala</strong> e <strong>decisões automatizadas</strong>.</li>
</ol>



<p>Esse shift estratégico exigiu mudanças profundas na arquitetura de dados.</p>



<p>A abordagem tradicional, baseada em data warehouses locais e ETL tradicional, <strong>não suportava a velocidade e a variedade dos dados necessários para IA e aprendizado de máquina</strong>. Com isso, foram adotadas tecnologias baseadas na nuvem, permitindo ingestão contínua de dados via streaming, armazenamento escalável e processamento distribuído. </p>



<p>Isso possibilitou a utilização de arquiteturas híbridas como o conceito de lakehouse, combinando a flexibilidade de data lakes com a estruturação dos data warehouses.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://datauniverse.com.br/wp-content/uploads/2025/02/image-1-1024x538.png" alt="" class="wp-image-2623" srcset="https://datauniverse.com.br/wp-content/uploads/2025/02/image-1-1024x538.png 1024w, https://datauniverse.com.br/wp-content/uploads/2025/02/image-1-300x158.png 300w, https://datauniverse.com.br/wp-content/uploads/2025/02/image-1-768x403.png 768w, https://datauniverse.com.br/wp-content/uploads/2025/02/image-1.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><a href="https://www.databricks.com/glossary/data-lakehouse" target="_blank" rel="noreferrer noopener">https://www.databricks.com/glossary/data-lakehouse</a></figcaption></figure>



<p><strong>A escalabilidade também se tornou um fator crítico</strong>. Antes, as empresas investiam em servidores físicos e infraestrutura pesada, o que limitava a capacidade de crescimento. Hoje, soluções como Snowflake, BigQuery e Databricks permitem que qualquer empresa processe grandes volumes de dados sem precisar gerenciar hardware. </p>



<p>Além disso, a separação entre armazenamento e processamento trouxe mais eficiência ao consumo de recursos, reduzindo custos operacionais e permitindo que empresas paguem apenas pelo que utilizam.</p>



<p>Outro ponto fundamental é a automação e a democratização do acesso aos dados. No passado, equipes de engenharia de dados eram responsáveis por construir pipelines complexos e manter sistemas robustos, o que restringia a velocidade de inovação. </p>



<p>Agora, ferramentas low-code e no-code como Fivetran e dbt reduzem a necessidade de intervenção manual, permitindo que analistas e cientistas de dados foquem na geração de insights e na criação de modelos avançados de IA.</p>



<p>O avanço da inteligência artificial também impulsionou a adoção de novas práticas na governança de dados. Modelos de machine learning dependem da qualidade, diversidade e integridade dos dados, e isso forçou as empresas a investirem mais em soluções de observabilidade e confiabilidade, como Monte Carlo e Great Expectations. </p>



<p>Além disso, frameworks de engenharia de dados modernos tornaram mais fácil versionar, rastrear e auditar pipelines, garantindo que os dados usados para treinar modelos sejam confiáveis e reproduzíveis.</p>



<p>A mudança na arquitetura reflete a necessidade das empresas de serem mais dinâmicas, orientadas por dados e preparadas para a era da inteligência artificial. O foco deixou de ser apenas armazenar e consultar dados de forma eficiente e passou a ser sobre como transformar esses dados em vantagem competitiva, automatizando decisões e personalizando experiências em tempo real.</p>



<h2 class="wp-block-heading">Exemplos de arquiteturas modernas</h2>



<p>O Airbnb é um excelente exemplo de como o Modern Data Stack pode ser aplicado para lidar com grandes volumes de dados e fornecer recomendações personalizadas aos usuários. Com mais de <strong>100 milhões de usuários</strong> e um catálogo de <strong>mais de 2 milhões de anúncios</strong>, a plataforma precisa de um sistema de dados altamente escalável e eficiente para sugerir destinos relevantes e aprimorar a experiência do usuário.</p>



<h3 class="wp-block-heading"><strong>Airbnb</strong>: <strong>Infraestrutura de Dados</strong></h3>



<p>O time de engenharia de dados do Airbnb compartilha insights técnicos no blog <a href="https://medium.com/u/ebe93072cafd" target="_blank" rel="noreferrer noopener">AirbnbEng</a>, onde discutem suas estratégias para gerenciar dados em larga escala. </p>



<p>Um dos destaques é sua arquitetura de dados moderna, que permite integrar diversas fontes de informação, realizar análises avançadas e alimentar modelos de machine learning para personalização de recomendações.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="409" src="https://datauniverse.com.br/wp-content/uploads/2025/02/image-3.png" alt="" class="wp-image-2626" srcset="https://datauniverse.com.br/wp-content/uploads/2025/02/image-3.png 800w, https://datauniverse.com.br/wp-content/uploads/2025/02/image-3-300x153.png 300w, https://datauniverse.com.br/wp-content/uploads/2025/02/image-3-768x393.png 768w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption"><a href="https://keen.io/blog/architecture-of-giants-data-stacks-at-facebook-netflix-airbnb-and-pinterest/" target="_blank" rel="noreferrer noopener">https://keen.io/blog/architecture-of-giants-data-stacks-at-facebook-netflix-airbnb-and-pinterest/</a></figcaption></figure>



<h3 class="wp-block-heading"><strong>Airbnb</strong>: <strong>Investimento em Equipe de Dados</strong></h3>



<p>Durante um evento chamado <strong>&#8220;<a href="https://keen.io/blog/building-a-world-class-analytics-team-with-airbnb-invoca-and-keen-io/" target="_blank" rel="noreferrer noopener">Building a World-Class Analytics Team</a>&#8220;</strong>, Elena Grewal, Gerente de Ciência de Dados do Airbnb, revelou que a empresa já contava com mais de 30 engenheiros de dados. </p>



<p>Esse número representa um investimento significativo, estimado em mais de 5 milhões de dólares anuais apenas em salários, refletindo a importância estratégica que a empresa dá à sua infraestrutura de dados.</p>



<p>O caso do Airbnb ilustra como empresas inovadoras estão apostando no <strong>Modern Data Stack</strong> para escalar suas operações, melhorar a experiência do usuário e impulsionar o crescimento do negócio por meio de decisões baseadas em dados.</p>



<h2 class="wp-block-heading">Principais Métodos de Implementação</h2>



<p>Entenda as abordagens arquiteturais para implementar esses conceitos. Abaixo, detalham-se os padrões mais adotados no mercado.</p>



<h3 class="wp-block-heading">Arquitetura Medalhão (Medallion Architecture)</h3>



<p>Este é um padrão lógico de design de dados amplamente adotado em ambientes <strong>Data Lakehouse</strong>. O objetivo é melhorar a qualidade e a estrutura dos dados à medida que eles fluem pelas camadas.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Camada</strong></td><td><strong>Propósito Principal</strong></td><td><strong>Qualidade e Estrutura</strong></td><td><strong>Formatos Típicos</strong></td></tr></thead><tbody><tr><td><strong>Bronze (Raw)</strong></td><td>Armazenamento do dado cru exatamente como extraído da fonte. Mantém o histórico completo.</td><td>Nula/Baixa. Estrutura original.</td><td>JSON, CSV, Parquet</td></tr><tr><td><strong>Silver (Cleaned)</strong></td><td>Filtragem, limpeza, padronização de tipos e deduplicação de registros.</td><td>Média. Esquema validado.</td><td>Delta, Iceberg, Hudi</td></tr><tr><td><strong>Gold (Curated)</strong></td><td>Agregações e modelagem orientada a regras de negócios, pronta para consumo (BI/ML).</td><td>Alta. Esquema em estrela ou tabelas analíticas.</td><td>Delta, Iceberg, Hudi</td></tr></tbody></table></figure>



<p><strong>Exemplo prático de implementação (PySpark): Transformação Bronze para Silver</strong></p>



<p>Python:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly># Importação de funções essenciais do PySpark
from pyspark.sql.functions import col, to_timestamp

# 1. Leitura: Extraia os dados brutos da camada Bronze
df_bronze = spark.read.format("delta").load("s3://data-lake/bronze/vendas_brutas")

# 2. Transformação: Aplique deduplicação, formatação de data e filtragem de anomalias
df_silver = df_bronze.dropDuplicates(&#91;"id_transacao"&#93;) \
                     .withColumn("data_transacao", to_timestamp(col("timestamp_str"))) \
                     .filter(col("valor_compra") > 0) \
                     .dropna(subset=&#91;"id_cliente"&#93;)

# 3. Escrita: Salve os dados limpos na camada Silver no modo append
df_silver.write.format("delta").mode("append").save("s3://data-lake/silver/vendas_limpas")
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Importação de funções essenciais do PySpark</span></span>
<span class="line"><span style="color: #F286C4">from</span><span style="color: #F6F6F4"> pyspark.sql.functions </span><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> col, to_timestamp</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># 1. Leitura: Extraia os dados brutos da camada Bronze</span></span>
<span class="line"><span style="color: #F6F6F4">df_bronze </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> spark.read.format(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">delta</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">).load(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">s3://data-lake/bronze/vendas_brutas</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># 2. Transformação: Aplique deduplicação, formatação de data e filtragem de anomalias</span></span>
<span class="line"><span style="color: #F6F6F4">df_silver </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> df_bronze.dropDuplicates(&#91;</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">id_transacao</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&#93;) \</span></span>
<span class="line"><span style="color: #F6F6F4">                     .withColumn(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">data_transacao</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, to_timestamp(col(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">timestamp_str</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">))) \</span></span>
<span class="line"><span style="color: #F6F6F4">                     .filter(col(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">valor_compra</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">) \</span></span>
<span class="line"><span style="color: #F6F6F4">                     .dropna(</span><span style="color: #FFB86C; font-style: italic">subset</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">&#91;</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">id_cliente</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&#93;)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># 3. Escrita: Salve os dados limpos na camada Silver no modo append</span></span>
<span class="line"><span style="color: #F6F6F4">df_silver.write.format(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">delta</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">).mode(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">append</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">).save(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">s3://data-lake/silver/vendas_limpas</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span></code></pre></div>



<h3 class="wp-block-heading">Arquitetura Lambda vs. Arquitetura Kappa</h3>



<p>Avalie a diferença de processamento para dados em lote e em fluxo contínuo.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Critério</strong></td><td><strong>Arquitetura Lambda</strong></td><td><strong>Arquitetura Kappa</strong></td></tr></thead><tbody><tr><td><strong>Caminhos de Dados</strong></td><td>Possui duas camadas físicas separadas: <strong>Batch</strong> (histórico) e <strong>Speed</strong> (tempo real).</td><td>Possui apenas uma camada: todo dado é tratado como <strong>Stream</strong> (fluxo contínuo).</td></tr><tr><td><strong>Complexidade de Manutenção</strong></td><td>Alta. Exige manter duas bases de código (ex: um script para Spark Batch e outro para Spark Streaming).</td><td>Menor lógica duplicada, mas exige infraestrutura de streaming robusta e retenção longa.</td></tr><tr><td><strong>Casos de Uso Ideais</strong></td><td>Processamento histórico pesado acoplado com necessidades de baixa latência em dashboards temporários.</td><td>Monitoramento em tempo real absoluto, detecção de fraude, IoT.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Principais Tecnologias Utilizadas</h2>



<p>Para materializar essa arquitetura, aplique componentes especializados. Observe as divisões por camada estrutural:</p>



<ol start="1" class="wp-block-list">
<li><strong>Ingestão e Mensageria:</strong> <strong>Apache Kafka</strong>, <strong>Amazon Kinesis</strong>, <strong>Google Pub/Sub</strong>. (Servem como o &#8220;sistema nervoso central&#8221; desacoplando produtores e consumidores de dados).</li>



<li><strong>Armazenamento (<em>Data Lake</em>):</strong> <strong>Amazon S3</strong>, <strong>Google Cloud Storage (GCS)</strong>, <strong>Azure Data Lake Storage (ADLS)</strong>.</li>



<li><strong>Formatos de Tabelas Abertas (<em>Open Table Formats</em>):</strong> <strong>Delta Lake</strong>, <strong>Apache Iceberg</strong>, <strong>Apache Hudi</strong>. (Adicionam a camada ACID sobre os arquivos do Data Lake).</li>



<li><strong>Processamento e Computação Distribuída:</strong> <strong>Apache Spark</strong>, <strong>Apache Flink</strong>, <strong>Databricks</strong>, <strong>Snowflake</strong>, <strong>Google BigQuery</strong>.</li>



<li><strong>Orquestração de Pipelines:</strong> <strong>Apache Airflow</strong>, <strong>Dagster</strong>, <strong>Prefect</strong>. (Garantem a ordem, execução e agendamento das tarefas).</li>



<li><strong>Catálogo de Dados e Governança:</strong> <strong>DataHub</strong>, <strong>Amundsen</strong>, <strong>AWS Glue Data Catalog</strong>, <strong>Collibra</strong>.</li>
</ol>



<h2 class="wp-block-heading" id="block-c3f0530d-bc29-4d8b-9792-297ca21e0369">O Crescimento do Mercado de Software de Gerenciamento de Dados</h2>



<p id="block-b3bc4d66-77a6-4b10-8da5-d316efc37348">O mercado global de software de gerenciamento de dados superou a marca de <strong><a href="https://www.expertmarketresearch.com/reports/enterprise-data-management-market" target="_blank" rel="noreferrer noopener">$70 bilhões em 2021</a></strong>, e as projeções apontam para um crescimento para $150 bilhões até 2027.</p>



<p id="block-cc176ac5-bfc9-4b2a-a7a5-8f9c58eb4301">Esse aumento no interesse pela stack moderna nos últimos anos reflete a crescente adoção dessas tecnologias.</p>



<p id="block-6c41ec3a-0198-4933-a855-a4f095ed06b7">A transição das empresas para a tomada de decisões baseadas em dados gerou uma demanda crescente por processamento de dados em tempo real e ferramentas de BI/analytics.</p>



<h2 class="wp-block-heading" id="block-3d404019-8cad-40cc-b21d-0e1a5dae7511">Principais diferenças entre a stack moderna e a estrutura tradicional</h2>



<p id="block-dd3068e8-2a1d-424f-aa5b-b0473390f3fe">A principal diferença é que a <strong>Modern Data Stack</strong> traz maior <strong>agilidade, escalabilidade e menor custo</strong>, permitindo que até pequenas empresas tenham acesso a tecnologias avançadas sem a complexidade das infraestruturas tradicionais.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Aspecto</strong></th><th><strong>Stack de Dados Tradicional</strong></th><th><strong>Modern Data Stack (MDS)</strong></th></tr></thead><tbody><tr><td>Infraestrutura</td><td>On-premises (servidores físicos, data centers próprios).</td><td>Baseada na nuvem (AWS, GCP, Azure, Snowflake).</td></tr><tr><td>Escalabilidade</td><td>Limitada, exige compra de hardware adicional para crescer.</td><td>Elástica e sob demanda, cresce conforme a necessidade.</td></tr><tr><td>Armazenamento</td><td>Data Warehouses tradicionais (Ex: Oracle, Teradata).</td><td>Data Warehouses modernos (Snowflake, BigQuery, Redshift) e Data Lakes (Databricks, Delta Lake).</td></tr><tr><td>Processamento de Dados</td><td>ETL (Extract, Transform, Load) com processos pesados antes da carga.</td><td>ELT (Extract, Load, Transform), permitindo transformação pós-ingestão na nuvem.</td></tr><tr><td>Tempo de Processamento</td><td>Lento e batch (execução em horários programados).</td><td>Rápido e muitas vezes em tempo real (streaming com Kafka, Kinesis).</td></tr><tr><td>Orquestração</td><td>Ferramentas complexas e customizadas (ETL scripts).</td><td>Soluções modulares e low-code/no-code (Apache Airflow, Dagster, Prefect).</td></tr><tr><td>Integração de Dados</td><td>Demorada e cara, exige pipelines manuais e manutenção constante.</td><td>Ferramentas automatizadas (Fivetran, Airbyte, Stitch) reduzem o esforço.</td></tr><tr><td>Qualidade e Governança</td><td>Monitoramento manual, pouca observabilidade.</td><td>Ferramentas automatizadas (Monte Carlo, Great Expectations, Datafold).</td></tr><tr><td>Análise e BI</td><td>Relatórios demorados, ferramentas tradicionais (Excel, SAP BO).</td><td>Dashboards ágeis e interativos (Looker, Tableau, Metabase, Power BI).</td></tr><tr><td>Custo</td><td>Alto custo inicial e manutenção contínua de servidores.</td><td>Modelo pay-as-you-go, mais acessível para empresas de todos os portes.</td></tr><tr><td>Time Responsável</td><td>Equipes grandes e especializadas em infraestrutura e ETL.</td><td>Equipes menores, focadas em análise e engenharia de dados.</td></tr></tbody></table></figure>



<p id="block-e368a0fb-b11e-44e5-a42d-5e9fa2c05723">Os data stacks tradicionais geralmente são soluções on-premises, baseadas em uma infraestrutura de hardware e software gerenciada internamente pela própria organização.</p>



<p id="block-83c6421f-845c-4b4b-b6e5-3b0103e37528">Construídos sobre arquiteturas monolíticas, esses sistemas exigem investimentos significativos tanto em infraestrutura de TI quanto em pessoal especializado. Além disso, sua integração com ambientes cloud-based costuma ser limitada, tornando-os menos flexíveis e escaláveis quando comparados às soluções modernas.</p>



<p>Com o crescimento exponencial do volume e da complexidade dos dados, as empresas buscam soluções mais rápidas, eficientes e econômicas para gerenciar e analisar informações.</p>



<h2 class="wp-block-heading">O Marco na Evolução do Modern Data Stack</h2>



<p>O grande avanço na stack moderna ocorreu por volta de 2012 com a introdução dos data warehouses baseados em nuvem. </p>



<p>Plataformas como Redshift, BigQuery e Synapse são os principais data warehouses nativos da nuvem, oferecidos pelos três principais provedores de serviços em nuvem: Amazon AWS, Google Cloud Platform (GCP) e Microsoft Azure, respectivamente. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="604" src="https://datauniverse.com.br/wp-content/uploads/2025/02/image-1024x604.png" alt="" class="wp-image-2619" srcset="https://datauniverse.com.br/wp-content/uploads/2025/02/image-1024x604.png 1024w, https://datauniverse.com.br/wp-content/uploads/2025/02/image-300x177.png 300w, https://datauniverse.com.br/wp-content/uploads/2025/02/image-768x453.png 768w, https://datauniverse.com.br/wp-content/uploads/2025/02/image.png 1164w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Além desses, o Snowflake também se destaca como uma solução popular de data warehouse, com a flexibilidade de ser hospedada em qualquer uma das três grandes nuvens. </p>



<p>Esses data warehouses trouxeram facilidade no armazenamento e utilização de dados, e sua cobrança baseada no consumo proporcionou uma flexibilidade significativa para adoção e escalabilidade.</p>



<h2 class="wp-block-heading">O Crescimento do Mercado de Software de Gerenciamento de Dados</h2>



<p>O mercado global de software de gerenciamento de dados superou a marca de <strong><a href="https://www.expertmarketresearch.com/reports/enterprise-data-management-market" target="_blank" rel="noreferrer noopener">$70 bilhões em 2021</a></strong>, e as projeções apontam para um crescimento para $150 bilhões até 2027. </p>



<p>Esse aumento no interesse pela stack moderna nos últimos anos reflete a crescente adoção dessas tecnologias.</p>



<p>A transição das empresas para a tomada de decisões baseadas em dados gerou uma demanda crescente por processamento de dados em tempo real e ferramentas de BI/analytics.</p>



<h2 class="wp-block-heading">Principais diferenças entre a stack moderna e a estrutura tradicional</h2>



<p>A principal diferença é que a <strong>Modern Data Stack</strong> traz maior <strong>agilidade, escalabilidade e menor custo</strong>, permitindo que até pequenas empresas tenham acesso a tecnologias avançadas sem a complexidade das infraestruturas tradicionais.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Aspecto</strong></th><th><strong>Stack de Dados Tradicional</strong></th><th><strong>Modern Data Stack (MDS)</strong></th></tr></thead><tbody><tr><td>Infraestrutura</td><td>On-premises (servidores físicos, data centers próprios).</td><td>Baseada na nuvem (AWS, GCP, Azure, Snowflake).</td></tr><tr><td>Escalabilidade</td><td>Limitada, exige compra de hardware adicional para crescer.</td><td>Elástica e sob demanda, cresce conforme a necessidade.</td></tr><tr><td>Armazenamento</td><td>Data Warehouses tradicionais (Ex: Oracle, Teradata).</td><td>Data Warehouses modernos (Snowflake, BigQuery, Redshift) e Data Lakes (Databricks, Delta Lake).</td></tr><tr><td>Processamento de Dados</td><td>ETL (Extract, Transform, Load) com processos pesados antes da carga.</td><td>ELT (Extract, Load, Transform), permitindo transformação pós-ingestão na nuvem.</td></tr><tr><td>Tempo de Processamento</td><td>Lento e batch (execução em horários programados).</td><td>Rápido e muitas vezes em tempo real (streaming com Kafka, Kinesis).</td></tr><tr><td>Orquestração</td><td>Ferramentas complexas e customizadas (ETL scripts).</td><td>Soluções modulares e low-code/no-code (Apache Airflow, Dagster, Prefect).</td></tr><tr><td>Integração de Dados</td><td>Demorada e cara, exige pipelines manuais e manutenção constante.</td><td>Ferramentas automatizadas (Fivetran, Airbyte, Stitch) reduzem o esforço.</td></tr><tr><td>Qualidade e Governança</td><td>Monitoramento manual, pouca observabilidade.</td><td>Ferramentas automatizadas (Monte Carlo, Great Expectations, Datafold).</td></tr><tr><td>Análise e BI</td><td>Relatórios demorados, ferramentas tradicionais (Excel, SAP BO).</td><td>Dashboards ágeis e interativos (Looker, Tableau, Metabase, Power BI).</td></tr><tr><td>Custo</td><td>Alto custo inicial e manutenção contínua de servidores.</td><td>Modelo pay-as-you-go, mais acessível para empresas de todos os portes.</td></tr><tr><td>Time Responsável</td><td>Equipes grandes e especializadas em infraestrutura e ETL.</td><td>Equipes menores, focadas em análise e engenharia de dados.</td></tr></tbody></table></figure>



<p>Os data stacks tradicionais geralmente são soluções on-premises, baseadas em uma infraestrutura de hardware e software gerenciada internamente pela própria organização. </p>



<p>Construídos sobre arquiteturas monolíticas, esses sistemas exigem investimentos significativos tanto em infraestrutura de TI quanto em pessoal especializado. Além disso, sua integração com ambientes cloud-based costuma ser limitada, tornando-os menos flexíveis e escaláveis quando comparados às soluções modernas.</p>



<h2 class="wp-block-heading">Pontos positivos e negativos que essa evolução trouxe consigo</h2>



<p>O <strong>Modern Data Stack</strong> trouxe eficiência, escalabilidade e acessibilidade ao mundo dos dados, mas ainda existem desafios críticos a serem resolvidos. </p>



<p>O futuro dependerá da evolução de governança de dados, streaming analytics, integração com ferramentas operacionais e interfaces mais acessíveis para usuários não técnicos em alguns cenários.</p>



<figure class="wp-block-table"><table><thead><tr><th><strong>Pontos positivos</strong></th><th><strong>Pontos Negativos</strong></th></tr></thead><tbody><tr><td><strong>Produtos Horizontais</strong><br><br>Antigamente, era necessário adquirir várias ferramentas específicas para analisar diferentes conjuntos de dados.<br><br>Com o MDS, os dados são centralizados em um data warehouse, permitindo a análise unificada em uma única stack de ferramentas comuns.<br><br><strong>Velocidade</strong><br><br>O MDS permite uma conexão rápida com novas fontes de dados e facilita a exploração analítica.<br>A performance dos bancos de dados MPP (Massively Parallel Processing) proporciona alta velocidade de execução de queries, acelerando o processo de tomada de decisão.<br><br><strong>Escalabilidade Ilimitada</strong><br><br>Com a infraestrutura em nuvem, é possível escalar o processamento e armazenamento de dados sem limites técnicos significativos.<br><br>O principal fator limitante passou a ser o custo, e não a capacidade da tecnologia.<br><br><strong>Baixo Overhead Operacional</strong><br><br>Em 2012, era necessário um time robusto de engenheiros para gerenciar a infraestrutura de dados.<br><br>Hoje, o MDS reduz essa necessidade, tornando possível operar pipelines de dados sofisticados sem grandes investimentos em infraestrutura e engenharia.<br><br><strong>Integração Padronizada via SQL</strong><br><br>No passado, não havia um padrão claro para integração entre diferentes produtos de dados.<br><br>Atualmente, SQL é a linguagem comum em todos os componentes do MDS, facilitando a integração e democratizando o acesso aos dados para um público mais amplo.</td><td><strong>Governança Imatura:</strong><br><br>A facilidade de coletar e transformar dados na stack moderna traz riscos de desorganização. <br><br>Ainda faltam ferramentas e boas práticas para garantir confiança, segurança e contexto nos dados. <br><br><strong>Arquitetura Baseada em Lotes (Batch Processing)</strong><br><br>O MDS ainda opera majoritariamente em processamento em lote, utilizando agendamentos e polling para coletar dados. <br><br>A transição para streaming poderia desbloquear ainda mais valor, permitindo uma análise quase em tempo real. <br><br><strong>Falta de Integração com Ferramentas Operacionais</strong><br><br>Atualmente, os dados fluem apenas em uma direção, das fontes para o data warehouse e para dashboards. <br><br>Para maximizar o impacto, seria essencial integrar os insights diretamente com ferramentas operacionais como CRMs, plataformas de e-commerce e sistemas de mensagens. <br><br><strong>Acesso Limitado para Consumidores de Dados </strong><br><br>Apesar da acessibilidade via SQL, muitos consumidores de dados ainda dependem de analistas para realizar consultas. <br><br>No passado, usuários finais tinham maior autonomia utilizando ferramentas familiares como Excel, algo que ainda não foi completamente resolvido na stack moderna. <br><br><strong>Perda de Experiências Analíticas Verticais </strong><br><br>A consolidação dos dados em infraestruturas centralizadas eliminou algumas ferramentas especializadas por domínio. <br><br>Experiências analíticas otimizadas para áreas como marketing, vendas e mobile analytics são fundamentais para garantir insights mais precisos e contextualizados.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Melhores Práticas de Mercado</h2>



<p>Para construir infraestruturas resilientes e de nível de produção (Enterprise-grade), adote rigorosamente as seguintes práticas:</p>



<ul class="wp-block-list">
<li><strong>Implemente princípios de DataOps:</strong> Adote o versionamento de código, controle de infraestrutura com repositórios e CI/CD (Integração e Entrega Contínuas) para pipelines de dados, tratando dados com a mesma disciplina da engenharia de software tradicional.</li>



<li><strong>Utilize Infraestrutura como Código (IaC):</strong> Provisão de recursos na nuvem (buckets de armazenamento, clusters de processamento, políticas de IAM) exclusivamente através de código usando <strong>Terraform</strong> ou ferramentas equivalentes.</li>



<li><strong>Projete para a Idempotência:</strong> Assegure que os pipelines de processamento (jobs de Spark, DAGs do Airflow) possam ser re-executados múltiplas vezes em caso de falha sem gerar duplicação de dados.</li>



<li><strong>Aplique testes de Qualidade de Dados precocemente (Shift-Left):</strong> Realize verificações rigorosas de esquema e sanidade de dados nos estágios iniciais de ingestão (na transição de Bronze para Silver), bloqueando ou isolando registros inválidos (padrão <em>Dead Letter Queue</em> ou camada de quarentena).</li>
</ul>



<h2 class="wp-block-heading">Principais Desafios e Considerações Gerais</h2>



<p>Implementar uma Modern Data Architecture exige gerenciar complexidades inerentes a sistemas distribuídos. Considere com cautela os seguintes pontos:</p>



<ul class="wp-block-list">
<li><strong>Curva de Aprendizado e Complexidade Tecnológica:</strong> Sistemas distribuídos possuem alto acoplamento de rede e exigem profundo conhecimento de sistemas Linux, redes e conteinerização (Docker/Kubernetes).</li>



<li><strong>Governança de Dados em Ambientes Descentralizados:</strong> Garantir a conformidade (ex: LGPD/GDPR), mascaramento de dados sensíveis (PII) e o rastreamento do ciclo de vida do dado (<strong>Data Lineage</strong>) torna-se exponencialmente mais difícil quando há múltiplos domínios de dados.</li>



<li><strong>Qualidade de Dados (Data Quality):</strong> Com a velocidade da ingestão de sistemas fonte diversos, o princípio <em>Garbage In, Garbage Out</em> é amplificado.</li>



<li><strong>Controle Rigoroso de Custos (FinOps):</strong> Processamento elástico pode gerar faturas de nuvem estratosféricas se o código estiver mal otimizado (ex: escaneamento de partições inteiras por falta de filtros adequados nas <em>queries</em>).</li>
</ul>



<h2 class="wp-block-heading">Referências:</h2>



<ul class="wp-block-list">
<li><a href="https://www.getdbt.com/blog/future-of-the-modern-data-stack" target="_blank" rel="noreferrer noopener">https://www.getdbt.com/blog/future-of-the-modern-data-stack</a></li>



<li><a href="https://keen.io/blog/architecture-of-giants-data-stacks-at-facebook-netflix-airbnb-and-pinterest/" target="_blank" rel="noreferrer noopener">https://keen.io/blog/architecture-of-giants-data-stacks-at-facebook-netflix-airbnb-and-pinterest/</a></li>



<li><a href="https://www.altexsoft.com/blog/modern-data-stack/">https://www.altexsoft.com/blog/modern-data-stack/</a></li>



<li><a href="https://kae-capital.com/blogs/the-modern-data-stack/" target="_blank" rel="noreferrer noopener">https://kae-capital.com/blogs/the-modern-data-stack/</a></li>



<li><a href="https://medium.com/@kamini_74876/key-trends-in-modern-data-stack-4dd6f213f7e6" target="_blank" rel="noreferrer noopener">https://medium.com/@kamini_74876/key-trends-in-modern-data-stack-4dd6f213f7e6</a></li>
</ul>
<p>O post <a href="https://datauniverse.com.br/modern-data-architechture-data-stack/">Modern Data Architechture &amp; Data Stack</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/modern-data-architechture-data-stack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Data Lakehouse</title>
		<link>https://datauniverse.com.br/data-lakehouse/</link>
					<comments>https://datauniverse.com.br/data-lakehouse/#respond</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Wed, 28 Jan 2026 03:28:56 +0000</pubDate>
				<category><![CDATA[Arquitetura de Dados]]></category>
		<category><![CDATA[Curso Fundamentos da Engenharia de Dados]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=2848</guid>

					<description><![CDATA[<p>Analise o cenário atual da infraestrutura de dados. Historicamente, as empresas mantinham duas pilhas tecnológicas separadas: Essa separação criava silos, redundância de dados e alta complexidade de manutenção. Imagine um e-commerce hipotético, o &#8220;LojaTech&#8221;. Para calcular o faturamento mensal (BI), a LojaTech usa um DW tradicional (como um banco SQL robusto). Porém, para recomendar produtos [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/data-lakehouse/">Data Lakehouse</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Analise o cenário atual da infraestrutura de dados. <mark style="background-color:#fcb900" class="has-inline-color">Historicamente, as empresas mantinham duas pilhas tecnológicas separadas: </mark></p>



<ul class="wp-block-list">
<li><mark style="background-color:#fcb900" class="has-inline-color">o <strong>Data Warehouse</strong> (DW) para Business Intelligence (BI) e dados estruturados</mark></li>



<li><mark style="background-color:#fcb900" class="has-inline-color">o <strong>Data Lake</strong> para Machine Learning (ML), <a href="https://datauniverse.com.br/big-data/">Big Data</a> e dados não estruturados. </mark></li>
</ul>



<p><mark style="background-color:#fcb900" class="has-inline-color">Essa separação criava silos, redundância de dados e alta complexidade de manutenção.</mark></p>



<p>Imagine um e-commerce hipotético, o &#8220;LojaTech&#8221;. Para calcular o faturamento mensal (BI), a LojaTech usa um DW tradicional (como um banco SQL robusto). Porém, para recomendar produtos com base em cliques em tempo real (ML), ela joga <a href="https://datauniverse.com.br/logs-logging/">logs</a> brutos em um Data Lake (armazenamento de arquivos barato). </p>



<p>O problema surge quando o time de ML precisa cruzar os dados de cliques com o histórico de compras do DW. Eles precisam criar pipelines complexos para mover dados de um lado para o outro. O resultado? Dados inconsistentes e atraso na informação.</p>



<p>O <strong>Data Lakehouse</strong> surge para eliminar essa dicotomia, permitindo que a LojaTech faça BI e ML sobre a mesma fonte de dados, com baixo custo e alta governança.</p>



<h2 class="wp-block-heading">O Que é o Data Lakehouse? (Definição sob a ótica de Engenharia de Dados)</h2>



<p>Defina o <strong>Data Lakehouse</strong> como uma arquitetura de gerenciamento de dados que combina a flexibilidade, eficiência de custo e escala de um <strong>Data Lake</strong> com o gerenciamento de dados, transações ACID e suporte a esquemas de um <strong>Data Warehouse</strong>.</p>



<p>Na prática de engenharia, entenda que o <mark style="background-color:#fcb900" class="has-inline-color">Lakehouse não é apenas &#8220;instalar uma ferramenta&#8221;, mas sim implementar uma camada de metadados e controle transacional sobre arquivos brutos</mark> (normalmente Parquet ou Avro) armazenados em um <strong>Object Storage</strong> (como S3, ADLS ou GCS).</p>



<p>Essa arquitetura desacopla fundamentalmente o <strong>processamento (Compute)</strong> do <strong>armazenamento (Storage)</strong>, permitindo escalar cada um independentemente, mas garantindo que o motor de processamento &#8220;enxergue&#8221; os arquivos como tabelas estruturadas e confiáveis.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="592" src="https://datauniverse.com.br/wp-content/uploads/2026/01/image-11-1024x592.png" alt="" class="wp-image-2850" srcset="https://datauniverse.com.br/wp-content/uploads/2026/01/image-11-1024x592.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-11-300x173.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-11-768x444.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-11-1536x888.png 1536w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-11-2048x1183.png 2048w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-11-scaled.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Qual é a importância desse conceito?</h2>



<p>A importância reside na unificação das cargas de trabalho. Ao aplicar um Lakehouse, elimina-se a necessidade de manter cópias duplicadas de dados em sistemas distintos (um para analistas de SQL e outro para cientistas de dados).</p>



<p>Isso resulta em:</p>



<ol start="1" class="wp-block-list">
<li><strong>Confiabilidade de Dados:</strong> Introdução de transações ACID em Data Lakes, evitando leituras de dados parciais ou corrompidos durante falhas de gravação.</li>



<li><strong>Governança Simplificada:</strong> Um único ponto de controle para segurança e auditoria.</li>



<li><strong>Time Travel:</strong> Capacidade de consultar versões anteriores dos dados para auditoria ou rollback (reversão) de erros.</li>
</ol>



<p>Observe a comparação estrutural abaixo:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Característica</strong></td><td><strong>Data Warehouse</strong></td><td><strong>Data Lake</strong></td><td><strong>Data Lakehouse</strong></td></tr></thead><tbody><tr><td><strong>Tipo de Dados</strong></td><td>Estruturados</td><td>Estruturados, Semi e Não-Estruturados</td><td><strong>Todos (Estruturados a Não-Estruturados)</strong></td></tr><tr><td><strong>Custo de Armazenamento</strong></td><td>Alto (Discos rápidos/Proprietário)</td><td>Baixo (Object Storage)</td><td><strong>Baixo (Object Storage)</strong></td></tr><tr><td><strong>Transações</strong></td><td>ACID Completo</td><td>Não suporta (Atomicidade por arquivo)</td><td><strong>ACID Completo</strong></td></tr><tr><td><strong>Qualidade dos Dados</strong></td><td>Alta (Curada)</td><td>Baixa (Pântano de dados)</td><td><strong>Alta (Curada e Validada)</strong></td></tr><tr><td><strong>Público Alvo</strong></td><td>Analistas de BI</td><td>Cientistas de Dados</td><td><strong>Analistas de BI e Cientistas de Dados</strong></td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Exemplos Práticos Reais em empresas</h2>



<p>O WeChat, com mais de 1,3 bilhão de usuários, precisou evoluir sua arquitetura de dados para lidar com volumes massivos, consultas complexas e baixa latência. A arquitetura legada baseada em Hadoop e múltiplos data warehouses gerava alto custo operacional, problemas de governança e dificuldade de padronização.</p>



<p>Para resolver isso, a empresa adotou uma arquitetura unificada de <strong>data lakehouse</strong>, usando <strong>StarRocks</strong> para consultas de baixa latência, <strong>Apache Spark</strong> para processamento em batch e <strong>Apache Iceberg</strong> sobre arquivos <strong>Parquet</strong> no storage em nuvem. Essa abordagem suporta ingestão em tempo real e quase em tempo real.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="521" height="417" src="https://datauniverse.com.br/wp-content/uploads/2026/01/image-10.png" alt="" class="wp-image-2849" srcset="https://datauniverse.com.br/wp-content/uploads/2026/01/image-10.png 521w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-10-300x240.png 300w" sizes="(max-width: 521px) 100vw, 521px" /><figcaption class="wp-element-caption"><a href="https://www.starrocks.io/blog/how-wechats-data-lakehouse-architecture-enhances-efficiency-for-trillions-of-daily-records" type="link" id="https://www.starrocks.io/blog/how-wechats-data-lakehouse-architecture-enhances-efficiency-for-trillions-of-daily-records">Case Starrocks</a></figcaption></figure>



<p>Como resultado, o WeChat simplificou sua arquitetura, melhorou a atualização dos dados e reduziu significativamente a latência das consultas, alcançando níveis sub-segundo. Além disso, obteve ganhos operacionais relevantes, como redução de custos de armazenamento em mais de 65% e diminuição do esforço e do tempo de desenvolvimento para engenheiros de dados.</p>



<p><a href="https://www.starrocks.io/blog/how-wechats-data-lakehouse-architecture-enhances-efficiency-for-trillions-of-daily-records" type="link" id="https://www.starrocks.io/blog/how-wechats-data-lakehouse-architecture-enhances-efficiency-for-trillions-of-daily-records" target="_blank" rel="noreferrer noopener">Como o design Lakehouse do WeChat lida de forma eficiente com trilhões de registros</a></p>



<h2 class="wp-block-heading">Principais Métodos de Implementação</h2>



<p>Implemente o Data Lakehouse organizando os dados em zonas lógicas de refinamento. A arquitetura mais comum e recomendada é a <strong>Arquitetura Medalhão (<a href="https://datauniverse.com.br/arquitetura-medallion-bronze-silver-gold-x-modelo-sor-sot-e-spec/">Medallion</a> Architecture)</strong>. Projete seu pipeline seguindo estas camadas:</p>



<ol start="1" class="wp-block-list">
<li><strong>Camada Bronze (Raw):</strong>
<ul class="wp-block-list">
<li>Receba os dados no formato original (JSON, CSV, Parquet) vindo das fontes.</li>



<li>Não aplique transformações de negócio, apenas adicione metadados de ingestão (data de carga, origem).</li>



<li><em>Objetivo:</em> Ter um histórico imutável e permitir o reprocessamento em caso de erro.</li>
</ul>
</li>



<li><strong>Camada Prata (Silver/Enriched):</strong>
<ul class="wp-block-list">
<li>Limpe, deduplique e padronize os dados da Bronze.</li>



<li>Aplique tipos de dados corretos (cast strings para dates/integers).</li>



<li>Enforce o <strong>Schema Enforcement</strong> aqui.</li>



<li><em>Objetivo:</em> Dados limpos prontos para exploração de Data Science.</li>
</ul>
</li>



<li><strong>Camada Ouro (Gold/Curated):</strong>
<ul class="wp-block-list">
<li>Realize agregações, joins complexos e aplique regras de negócio finais (ex: Tabela Fato e Dimensão).</li>



<li>Modele em Star Schema (Kimball) se necessário.</li>



<li><em>Objetivo:</em> Dados prontos para consumo de dashboards de BI e relatórios executivos.</li>
</ul>
</li>
</ol>



<h2 class="wp-block-heading">Principais tecnologias utilizadas</h2>



<p>Para construir um Lakehouse, selecione tecnologias que suportem formatos de tabela aberta (<strong>Open Table Formats</strong>). <mark style="background-color:#fcb900" class="has-inline-color">Não confunda o armazenamento físico com o formato lógico.</mark></p>



<h3 class="wp-block-heading">1. Formatos de Tabela (A Camada de Metadados)</h3>



<p>Estes são os componentes que transformam o Data Lake em Lakehouse, permitindo ACID e controle de versão:</p>



<ul class="wp-block-list">
<li><strong>Delta Lake:</strong> (Líder de mercado, mantido pela Linux Foundation). Altamente otimizado para Spark, suporta <em>schema enforcement</em> e <em>evolution</em> nativamente.</li>



<li><strong>Apache Iceberg:</strong> (Originado na Netflix). Focado em tabelas gigantescas, excelente suporte a evolução de esquema oculta e particionamento dinâmico.</li>



<li><strong>Apache Hudi:</strong> (Originado na Uber). Focado em <em>streaming</em> e atualizações/deletes pesados (Upserts).</li>
</ul>



<h3 class="wp-block-heading">2. Motores de Processamento (Compute)</h3>



<ul class="wp-block-list">
<li><strong>Apache Spark:</strong> O motor padrão para processamento massivo em Lakehouses.</li>



<li><strong>Trino (antigo PrestoSQL):</strong> Excelente para consultas SQL federadas e interativas sobre o Lakehouse.</li>



<li><strong>Databricks SQL / Starburst:</strong> Versões empresariais gerenciadas dos motores acima.</li>
</ul>



<h3 class="wp-block-heading">3. Armazenamento (Storage)</h3>



<ul class="wp-block-list">
<li>AWS S3, Azure Data Lake Gen2, Google Cloud Storage.</li>
</ul>



<p><strong>Exemplo de Código (PySpark com Delta Lake):</strong></p>



<p>Observe como a sintaxe é similar à manipulação de tabelas SQL, abstraindo a complexidade dos arquivos:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly># Lendo dados brutos
df_bronze = spark.read.format("json").load("/mnt/bronze/vendas.json")

# Gravando na camada Silver em formato Delta (Garante ACID)
df_bronze.write \
  .format("delta") \
  .mode("overwrite") \
  .save("/mnt/silver/vendas_clean")

# Realizando uma atualização (UPDATE) - Algo impossível em Data Lakes puros
from delta.tables import *

deltaTable = DeltaTable.forPath(spark, "/mnt/silver/vendas_clean")

# Atualiza desconto para 10% onde o produto for 'Camiseta'
deltaTable.update(
  condition = "produto = 'Camiseta'",
  set = { "desconto": "0.10" }
)
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Lendo dados brutos</span></span>
<span class="line"><span style="color: #F6F6F4">df_bronze </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> spark.read.format(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">json</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">).load(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">/mnt/bronze/vendas.json</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Gravando na camada Silver em formato Delta (Garante ACID)</span></span>
<span class="line"><span style="color: #F6F6F4">df_bronze.write \</span></span>
<span class="line"><span style="color: #F6F6F4">  .format(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">delta</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">) \</span></span>
<span class="line"><span style="color: #F6F6F4">  .mode(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">overwrite</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">) \</span></span>
<span class="line"><span style="color: #F6F6F4">  .save(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">/mnt/silver/vendas_clean</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Realizando uma atualização (UPDATE) - Algo impossível em Data Lakes puros</span></span>
<span class="line"><span style="color: #F286C4">from</span><span style="color: #F6F6F4"> delta.tables </span><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">deltaTable </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> DeltaTable.forPath(spark, </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">/mnt/silver/vendas_clean</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Atualiza desconto para 10% onde o produto for &#39;Camiseta&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">deltaTable.update(</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #FFB86C; font-style: italic">condition</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">produto = &#39;Camiseta&#39;</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #FFB86C; font-style: italic">set</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> { </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">desconto</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">: </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">0.10</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> }</span></span>
<span class="line"><span style="color: #F6F6F4">)</span></span>
<span class="line"></span></code></pre></div>



<h2 class="wp-block-heading">Principais Desafios e Considerações Gerais</h2>



<p>Esteja ciente dos obstáculos ao projetar esta arquitetura:</p>



<ol start="1" class="wp-block-list">
<li><strong>Problema de Arquivos Pequenos (Small Files Problem):</strong> Ingestão em streaming pode gerar milhares de arquivos minúsculos (kb), degradando a performance de leitura. É obrigatório implementar rotinas de <strong>Compaction</strong> (unificar arquivos pequenos em maiores).</li>



<li><strong>Gerenciamento de Metadados:</strong> Conforme o Lakehouse cresce, o catálogo de metadados (ex: Hive Metastore ou Unity Catalog) pode se tornar um gargalo se não for bem dimensionado.</li>



<li><strong>Latência:</strong> Embora rápido, um Lakehouse puro pode ter latência maior que um Data Warehouse proprietário em memória para consultas muito específicas de sub-segundos.</li>
</ol>



<h2 class="wp-block-heading">Melhores Práticas de Mercado</h2>



<p>Adote estas práticas para garantir performance e manutenibilidade:</p>



<ul class="wp-block-list">
<li><strong>Otimize o Layout dos Dados (Z-Ordering/Optimize):</strong> Utilize comandos como <code>OPTIMIZE</code> e <code>Z-ORDER</code> (no Delta Lake) para co-localizar dados relacionados nos mesmos arquivos, acelerando drasticamente as consultas que usam filtros (Data Skipping).</li>



<li><strong>Particionamento Inteligente:</strong> Não particione colunas com alta cardinalidade (ex: ID do cliente), pois isso gera milhões de arquivos e diretórios. Prefira particionar por Data (Ano/Mês) ou Região.</li>



<li><strong>Rotinas de Limpeza (Vacuum):</strong> O Lakehouse guarda histórico de tudo (Time Travel). Configure rotinas de <code>VACUUM</code> para deletar arquivos físicos de versões muito antigas e economizar custos de armazenamento.</li>



<li><strong>Use Catalogs Unificados:</strong> Utilize ferramentas como <strong>Unity Catalog</strong> ou <strong>AWS Glue Data Catalog</strong> para centralizar as permissões de acesso. Nunca gerencie acesso diretamente no nível do arquivo (ACLs de S3), gerencie no nível da tabela.</li>
</ul>
<p>O post <a href="https://datauniverse.com.br/data-lakehouse/">Data Lakehouse</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/data-lakehouse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OLTP (Online Transaction Processing) e OLAP (Online Analytical Processing)</title>
		<link>https://datauniverse.com.br/oltp-olap/</link>
					<comments>https://datauniverse.com.br/oltp-olap/#respond</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Wed, 28 Jan 2026 02:35:08 +0000</pubDate>
				<category><![CDATA[Arquitetura de Dados]]></category>
		<category><![CDATA[Curso Fundamentos da Engenharia de Dados]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=2839</guid>

					<description><![CDATA[<p>A distinção entre OLTP (Online Transaction Processing) e OLAP (Online Analytical Processing) é a pedra angular da arquitetura de dados moderna. Compreenda que sistemas de software possuem necessidades antagônicas: alguns precisam registrar eventos unitários em tempo real com garantia de integridade (escrita rápida), enquanto outros precisam processar milhões de registros para gerar insights (leitura massiva). [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/oltp-olap/">OLTP (Online Transaction Processing) e OLAP (Online Analytical Processing)</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A distinção entre <strong>OLTP</strong> (Online Transaction Processing) e <strong>OLAP</strong> (Online Analytical Processing) é a pedra angular da arquitetura de dados moderna. </p>



<p>Compreenda que sistemas de software possuem necessidades antagônicas: alguns precisam registrar eventos unitários em tempo real com garantia de integridade (<strong>escrita rápida</strong>), enquanto outros precisam processar milhões de registros para gerar insights (<strong>leitura massiva</strong>). </p>



<p>Tentar resolver ambos os problemas com uma única arquitetura resulta em gargalos de performance e travamentos sistêmicos.</p>



<h2 class="wp-block-heading">Diferenças Fundamentais: OLTP vs. OLAP</h2>



<p>Considere o seguinte cenário hipotético para ilustrar a dicotomia:</p>



<p>Imagine um <strong>grande supermercado</strong>:</p>



<ul class="wp-block-list">
<li><strong>Cenário A (OLTP):</strong> O caixa registra a compra de um cliente. O sistema precisa descontar 1 item do estoque, criar 1 registro de venda e emitir a nota fiscal. Isso deve ocorrer em milissegundos. Se o sistema travar, a fila para.</li>



<li><strong>Cenário B (OLAP):</strong> O gerente regional quer saber &#8220;Qual foi a marca de sabão em pó mais vendida nas terças-feiras chuvosas dos últimos 5 anos?&#8221;. O sistema precisa ler milhões de linhas de histórico, agrupar por data e produto e somar os valores.</li>
</ul>



<p><mark style="background-color:#fcb900" class="has-inline-color">Misturar o Cenário B no banco de dados do Cenário A faria o caixa travar enquanto o relatório é gerado. Por isso, separamos os ambientes.</mark></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="592" src="https://datauniverse.com.br/wp-content/uploads/2026/01/image-9-1024x592.png" alt="" class="wp-image-2840" srcset="https://datauniverse.com.br/wp-content/uploads/2026/01/image-9-1024x592.png 1024w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-9-300x173.png 300w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-9-768x444.png 768w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-9-1536x888.png 1536w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-9-2048x1183.png 2048w, https://datauniverse.com.br/wp-content/uploads/2026/01/image-9-scaled.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Definições Técnicas</h2>



<p>Sob a ótica da Engenharia de Dados, essas siglas definem não apenas o uso, mas a estrutura física de armazenamento e modelagem dos dados.</p>



<h3 class="wp-block-heading">OLTP (Online Transaction Processing)</h3>



<p>Sistemas projetados para processar um grande número de transações curtas e atômicas em tempo real. O foco é a <strong>integridade dos dados</strong> e a velocidade de inserção/atualização.</p>



<ul class="wp-block-list">
<li><strong>Característica de Armazenamento:</strong> Orientado a Linha (Row-oriented).</li>



<li><strong>Propriedade Chave:</strong> Segue rigorosamente as propriedades <strong>ACID</strong> (Atomicidade, Consistência, Isolamento, Durabilidade).</li>



<li><strong>Estado dos Dados:</strong> Dados atuais, voláteis e altamente normalizados (para evitar redundância).</li>
</ul>



<h3 class="wp-block-heading">OLAP (Online Analytical Processing)</h3>



<p>Sistemas projetados para consultas complexas, agregações e análise de grandes volumes de dados históricos. O foco é a <strong>performance de leitura</strong> (Scan).</p>



<ul class="wp-block-list">
<li><strong>Característica de Armazenamento:</strong> Orientado a Coluna (Columnar).</li>



<li><strong>Propriedade Chave:</strong> Otimizado para operações de <em>Select</em>, <em>Group By</em> e funções de agregação (<em>Sum, Avg</em>).</li>



<li><strong>Estado dos Dados:</strong> Dados históricos, imutáveis (geralmente) e desnormalizados (para evitar <em>joins</em> excessivos).</li>
</ul>



<h2 class="wp-block-heading">Qual a Importância Desse Conceito?</h2>



<p>A segregação entre OLTP e OLAP é vital para a <strong>escalabilidade</strong> e <strong>estabilidade</strong> de qualquer ecossistema de dados.</p>



<ol start="1" class="wp-block-list">
<li><strong>Isolamento de Carga:</strong> Impede que um analista de dados, ao rodar uma consulta pesada, derrube o sistema de produção que atende o cliente final.</li>



<li><strong>Otimização de Hardware:</strong> <mark style="background-color:#fcb900" class="has-inline-color">Servidores OLTP precisam de muita RAM e disco rápido (IOPS)</mark> para escritas aleatórias. <mark style="background-color:#7bdcb5" class="has-inline-color">Servidores OLAP precisam de CPUs potentes e banda larga de disco</mark> para varredura sequencial.</li>



<li><strong>Modelagem Adequada:</strong> Permite usar modelagem normalizada (3NF) na origem para garantir consistência e modelagem dimensional (Star Schema) no destino para facilitar o uso por humanos e ferramentas de BI.</li>
</ol>



<h2 class="wp-block-heading">Exemplos Práticos Reais</h2>



<p>Observe como empresas utilizam essa divisão na prática:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Setor</strong></td><td><strong>Aplicação OLTP (Transacional)</strong></td><td><strong>Aplicação OLAP (Analítico)</strong></td></tr></thead><tbody><tr><td><strong>Bancário</strong></td><td>Transferência PIX, pagamento de boleto, atualização de saldo em tempo real.</td><td>Análise de risco de crédito, detecção de padrões de fraude, relatórios de lucratividade por agência.</td></tr><tr><td><strong>E-commerce</strong></td><td>Inserção de pedido no carrinho, atualização de status de entrega, cadastro de cliente.</td><td>Recomendação de produtos baseada em histórico, cálculo de LTV (Lifetime Value), análise de churn.</td></tr><tr><td><strong>Logística</strong></td><td>Rastreamento de pacote em tempo real (GPS), alocação de motorista.</td><td>Otimização de rotas baseada em dados históricos de trânsito, análise de eficiência de frota.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Principais Métodos de Implementação</h2>



<p>A implementação difere drasticamente na forma como os dados são modelados e acessados.</p>



<h4 class="wp-block-heading">Modelagem OLTP: Normalização (3NF)</h4>



<p>O objetivo é eliminar redundância. Se o nome de um cliente muda, você altera em apenas um lugar.</p>



<ul class="wp-block-list">
<li><strong>Vantagem:</strong> Escrita rápida, consistência garantida, banco de dados compacto.</li>



<li><strong>Desvantagem:</strong> Leituras lentas pois exigem muitos <em>JOINS</em> complexos.</li>
</ul>



<h4 class="wp-block-heading">Modelagem OLAP: Modelagem Dimensional (Kimball)</h4>



<p>O objetivo é facilitar a consulta. Utiliza-se esquemas como <strong>Star Schema</strong> ou <strong>Snowflake</strong>.</p>



<ul class="wp-block-list">
<li><strong>Tabela Fato:</strong> Contém as métricas (números) e chaves estrangeiras (Ex: Vendas).</li>



<li><strong>Tabelas Dimensão:</strong> Contém o contexto descritivo (Ex: Quem vendeu, Onde, Quando).</li>



<li><strong>Vantagem:</strong> Leitura extremamente rápida, SQL mais simples.</li>



<li><strong>Desvantagem:</strong> Redundância de dados, escrita mais lenta (ETL/ELT necessário).</li>
</ul>



<h4 class="wp-block-heading">Exemplo de Código Comparativo (SQL)</h4>



<p>Observe a complexidade da consulta para obter o mesmo resultado:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>-- OLTP (Muitos Joins necessários devido à <a href="https://datauniverse.com.br/normalizacao-vs-desnormalizacao-de-dados/">normalização</a>)
SELECT c.region_name, SUM(o.total_amount)
FROM orders o
JOIN customers cu ON o.customer_id = cu.id
JOIN addresses a ON cu.address_id = a.id
JOIN cities ci ON a.city_id = ci.id
JOIN regions c ON ci.region_id = c.id
WHERE o.order_date >= '2023-01-01'
GROUP BY c.region_name;

-- OLAP (Tabela desnormalizada ou Star Schema)
SELECT region_name, SUM(total_amount)
FROM fct_sales
JOIN dim_location ON fct_sales.location_sk = dim_location.location_sk
WHERE date_key >= 20230101
GROUP BY region_name;
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B">-- OLTP (Muitos Joins necessários devido à normalização)</span></span>
<span class="line"><span style="color: #F286C4">SELECT</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">c</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">region_name</span><span style="color: #F6F6F4">, </span><span style="color: #97E1F1">SUM</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">o</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">total_amount</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F286C4">FROM</span><span style="color: #F6F6F4"> orders o</span></span>
<span class="line"><span style="color: #F286C4">JOIN</span><span style="color: #F6F6F4"> customers cu </span><span style="color: #F286C4">ON</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">o</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">customer_id</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">cu</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">id</span></span>
<span class="line"><span style="color: #F286C4">JOIN</span><span style="color: #F6F6F4"> addresses a </span><span style="color: #F286C4">ON</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">cu</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">address_id</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">a</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">id</span></span>
<span class="line"><span style="color: #F286C4">JOIN</span><span style="color: #F6F6F4"> cities ci </span><span style="color: #F286C4">ON</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">a</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">city_id</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">ci</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">id</span></span>
<span class="line"><span style="color: #F286C4">JOIN</span><span style="color: #F6F6F4"> regions c </span><span style="color: #F286C4">ON</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">ci</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">region_id</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">c</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">id</span></span>
<span class="line"><span style="color: #F286C4">WHERE</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">o</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">order_date</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&gt;=</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">2023-01-01</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F286C4">GROUP BY</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">c</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">region_name</span><span style="color: #F6F6F4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B">-- OLAP (Tabela desnormalizada ou Star Schema)</span></span>
<span class="line"><span style="color: #F286C4">SELECT</span><span style="color: #F6F6F4"> region_name, </span><span style="color: #97E1F1">SUM</span><span style="color: #F6F6F4">(total_amount)</span></span>
<span class="line"><span style="color: #F286C4">FROM</span><span style="color: #F6F6F4"> fct_sales</span></span>
<span class="line"><span style="color: #F286C4">JOIN</span><span style="color: #F6F6F4"> dim_location </span><span style="color: #F286C4">ON</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">fct_sales</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">location_sk</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">dim_location</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">location_sk</span></span>
<span class="line"><span style="color: #F286C4">WHERE</span><span style="color: #F6F6F4"> date_key </span><span style="color: #F286C4">&gt;=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">20230101</span></span>
<span class="line"><span style="color: #F286C4">GROUP BY</span><span style="color: #F6F6F4"> region_name;</span></span>
<span class="line"></span></code></pre></div>



<h2 class="wp-block-heading">Principais Tecnologias Utilizadas</h2>



<p>Não utilize a ferramenta errada para o trabalho. Escolha a tecnologia baseada na arquitetura.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Categoria</strong></td><td><strong>Tecnologias Líderes</strong></td><td><strong>Características</strong></td></tr></thead><tbody><tr><td><strong>OLTP (RDBMS)</strong></td><td><strong>PostgreSQL</strong>, <strong>MySQL</strong>, Oracle Database, SQL Server, AWS Aurora.</td><td>Otimizados para <em>row-store</em>, índices B-Tree, alta concorrência de escrita.</td></tr><tr><td><strong>OLAP (Data Warehouse)</strong></td><td><strong>Snowflake</strong>, <strong>Google BigQuery</strong>, <strong>AWS Redshift</strong>, Databricks SQL, ClickHouse.</td><td>Otimizados para <em>column-store</em>, compressão massiva, processamento paralelo massivo (MPP).</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Nota Arquitetural:</strong> Hoje, o conceito de <strong><a href="https://datauniverse.com.br/data-lakehouse/">Lakehouse</a></strong> (Databricks, Delta Lake, Apache Iceberg) tenta unir o melhor dos dois mundos, permitindo transações ACID sobre arquivos em Object Storage, mas a distinção lógica entre processamento transacional e analítico permanece.</p>
</blockquote>



<h3 class="wp-block-heading">7. Principais Desafios e Considerações Gerais</h3>



<p>Ao projetar essas soluções, atente-se aos seguintes pontos de atrito:</p>



<ol start="1" class="wp-block-list">
<li><strong>Latência de Dados (Data Latency):</strong> Existe um tempo (delay) entre o dado ser gerado no OLTP e estar disponível no OLAP. Processos <em>Batch</em> (D-1) são comuns, mas o negócio exige cada vez mais <em>Near Real-Time</em> (Streaming).</li>



<li><strong>Evolução de Schema (Schema Drift):</strong> <mark style="background-color:#fcb900" class="has-inline-color">Se o desenvolvedor altera uma coluna no OLTP, isso pode quebrar o pipeline de ETL que alimenta o OLAP. </mark>O acoplamento deve ser gerenciado.</li>



<li><strong>Custo de Armazenamento e Computação:</strong> Bancos OLAP modernos (Cloud) cobram por dados escaneados ou tempo de computação. Consultas mal escritas em tabelas desnormalizadas podem custar milhares de dólares.</li>
</ol>



<h3 class="wp-block-heading">8. Melhores Práticas de Mercado</h3>



<p>Para garantir uma arquitetura robusta, adote as seguintes diretrizes:</p>



<ul class="wp-block-list">
<li><strong>Réplicas de Leitura (Read Replicas):</strong> <mark style="background-color:#fcb900" class="has-inline-color">Nunca conecte uma ferramenta de BI diretamente no banco OLTP principal (Master). </mark>Se precisar fazer análises leves em tempo real, crie uma réplica de leitura do banco transacional.</li>



<li><strong>CDC (Change Data Capture):</strong> Utilize ferramentas de CDC (como Debezium ou DMS) para replicar dados do OLTP para o OLAP lendo o log de transações do banco, em vez de fazer consultas pesadas de <code>SELECT *</code> periodicamente.</li>



<li><strong>Compressão Colunar:</strong> No OLAP, certifique-se de que as tabelas estejam armazenadas em formatos colunares (Parquet, ORC) ou nativos do DW, pois a compressão é muito superior, economizando custo e I/O.</li>



<li><strong>Particionamento:</strong> <mark style="background-color:#fcb900" class="has-inline-color">Particione suas tabelas OLAP (geralmente por data)</mark>. Isso permite que o motor de consulta ignore blocos de dados irrelevantes (<em>partition pruning</em>), acelerando drasticamente a leitura.</li>
</ul>
<p>O post <a href="https://datauniverse.com.br/oltp-olap/">OLTP (Online Transaction Processing) e OLAP (Online Analytical Processing)</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/oltp-olap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
