Blog do Eduardo

Tecnologia, Inovação, Negócios e muito mais...

SQL Data Warehouse do Azure: Arquitetura MPP

Processamento Paralelo Massivo

  • 16 de Setembro de 2018 às 12:00
Capa Post
SQL Data Warehouse do Azure: Arquitetura MPP

O que você irá aprender neste post:

  • O que é o Massivaly Parallel Processing (MPP)
  • Como funciona a MPP
  • Benefícios da Arquitetura MPP
  • Componentes da Arquitetura
    • Computação
      • Processamento Paralelo
      • Consultas
    • Armazenamento
      • Tipos de fragmentação do armazenamento
        • Replicar: copia dados em diferentes tabelas
        • Round Robin: distribuí dados uniformemente
        • Hash: fragmenta dados

Visão Geral

O que é Massively Parallel Processing (MPP)?

MPP é a arquitetura de Software, utilizada em projetos de Data Warehouse. Tipicamente tem como objetivo o ganho de escala tanto quanto o que que diz o armazenamento e principalmente o processamento.

Como funciona?

Basicamente a ideia é paralelizar o processamento de consultas ao banco de dados de forma coordenada e com múltiplos processos assíncronos, garantindo que os mesmos estejam interconectados e sem impactar a consistência do resultado da consulta.

Quais os benefícios?

  • Ganho de escala de processamento
  • Capacidade de armazenamento sob demanda
  • Recursos de computação e armazenamento independentes
  • Aumentar ou diminuir os nós de processamento sem precisar migrar os dados

Componentes da Arquitetura

Caracteristicamente os projetos e Data Warehouse tem um ambiente centrado no usuário e com um intenso processamento de consultas ao conjunto de dados. Os usuários estão constantemente executando consultas complexas a fim de extrair todos os tipos de análises. Cada consulta precisaria ler grandes volumes de dados para produzir os conjuntos de resultados esperado. A Análise, geralmente realizada interativamente e requer a execução de várias consultas, uma após a outra. Se o projeto de Data Warehouse não estiver devidamente ajustado para lidar com o grande e complexos volume de consultas com eficiência, todo o trabalho para realiza-lo será em vão. O desempenho é realmente uma prioridade para garantir a adoção. Imagine você ter que esperar 10, 15 até 20 minutos para ter o resultado do conjunto de dados solicitado. Seria realmente uma experiência frustrante. Sem falar que a carga dos dados, que normalmente tem a origem de uma ferramenta de ETL, pode ser lento e exaustivo. Combine isso com a criação de índices, que utilizada de forma errada, pode onerar bastante o seu armazenamento e processamento. Todas essas variáveis somada, tem tudo para criar um ambiente propício para grandes problemas de desempenho.

Mas você deve estar pensando, então como podemos acelerar o processamento de consultas, o carregamento de dados e a criação de índices?

Esse é o ponto que a Arquitetura MPP pretende resolver. Basicamente o processamento paralelo está dividido em duas partes principais:

Paralelismo via Hardware (físico): aqui podemos citar vários componentes da arquitetura como, múltiplos CPUs (com múltiplos cores), módulos de memória, múltiplos de nós de processamento e links de comunicações com uma alta taxa de transferência.

Paralelismo via Software (lógico): mesmo que você tenha acertado na hora de escolher a sua infraestrutura, ela represenat apenas é 50% da solução. Os outros 50% ficam a cargo da escolha do Software que apresente a melhor resposta para a seu cenário-problema. Obviamente que cada ferramenta tem a sua vantagem e desvantagem, porém cabe avaliar cada caso em particular, para chagar na melhor opção. Neste post estamos nos baseando no Azure SQL Data Warehouse, pois acredito que seja a solução mais completa e com o melhor custo benefício atualmente. A função principal do software elegido nesse caso é realizar o controle e a orquestração de toda a persistência e processamento dos dados.

O SQL Data Warehouse se baseia em nós de computação para desempenhar tanto o processamento das consultas, quanto o armazenamento dos dados. O esquema abaixo ilustra uma arquitetura de referência de DW MPP:

Arquitetura

Nó de controle

O Nó de controle é o cérebro do data warehouse. É o front-end que interage com todos os aplicativos e conexões. O mecanismo MPP é executado no Nó de controle para otimizar e coordenar consultas paralelas. Quando você envia uma consulta ao SQL Data Warehouse, o nó de Controle a transforma em consultas que são executadas em cada distribuição paralelamente.

Nós de computação

Os Nós de computação fornecem capacidade de computação. Distribuições são mapeados para nós de computação para processamento. Conforme você paga para obter mais recursos de computação, o SQL Data Warehouse mapeia novamente as distribuições a nós de computação disponíveis. O número de Nós de computação varia entre 1 a 60 e é determinado pelo volume e escala que pretendesse alcançar para o Data Warehouse.

Serviço de movimentação de dados

O Serviço de movimentação de dados (DMS) é a tecnologia de transporte de dados que coordena a movimentação de dados entre os nós de computação. Algumas consultas exigem a movimentação de dados para garantir que as consultas paralelas retornem resultados precisos. Quando a movimentação de dados é necessária, DMS garante que os dados corretos cheguem ao local correto.

Os Nós se comunicam por meio comandos T-SQL para o Nó de Controle, que é o ponto único de entrada para o Data Warehouse responsável por orquestrar todo o processo. O nó de Controle executa o mecanismo MPP, que otimiza consultas para processamento paralelo e, em seguida, passa as operações para Nós de computação para realizar seu processamento das consultas em paralelo. Para os Nós de Computação armazenam, todos os dados são persistidos em uma camada de armazenamento do Azure . O serviço de movimentação de dados (DMS) é um serviço que tem como objetivo de mover os dados entre os Nós, conforme necessário para executar consultas em paralelo e retornar resultados precisos.

Distribuições

Uma distribuição é a unidade básica de armazenamento e processamento para consultas paralelas que são executadas em dados distribuídos. Quando o SQL Data Warehouse executa uma consulta, o trabalho é dividido em até 60 consultas menores que são executadas em paralelo. Cada uma das 60 consultas menores é executada em uma das distribuições de dados. Cada nó de computação gerencia um ou mais de 60 distribuições. Um data warehouse com recursos de computação máximos tem uma distribuição por nó de computação. Um Data Warehouse com recursos de computação, tem todas as distribuições em um Nó de computação.

Tabelas distribuídas em Hash

Uma tabela de Hash distribuída pode fornecer o melhor desempenho de consulta para junções e agregações em tabelas grandes.

Para fragmentar dados em uma tabela distribuída por Hash, o SQL Data Warehouse usa uma função de Hash para atribuir de forma determinada cada linha a uma distribuição. Na definição de tabela, uma das colunas é designada como a coluna de distribuição. A função de Hash usa valores na coluna de distribuição para atribuir cada linha a uma distribuição. Para saber mais sobre o que uma função de Hash.

O diagrama a seguir ilustra como uma (tabela não distribuída) completa é armazenada como uma tabela distribuída em Hash.

  • Cada linha pertence a uma distribuição.
  • Um algoritmo de Hash determinístico atribui cada linha a uma distribuição.
  • O número de linhas de tabela por distribuição varia conforme mostrado pelos diferentes tamanhos de tabelas.

Há considerações de desempenho para a seleção de uma coluna de distribuição, como distinção, distorção de dados e tipos de consultas executadas no sistema.

Tabelas distribuídas Round Robin

Uma tabela de Round-Robin é a tabela mais simples para criar e oferece um desempenho rápido quando usada como uma tabela de preparo para cargas.

Uma tabela distribuída Round-Robin distribui dados uniformemente entre a tabela, mas sem qualquer otimização adicional. Uma distribuição é escolhida primeiramente de forma aleatória e, em seguida, buffers de linhas são atribuídos a distribuições em sequência. É rápido carregar dados em uma tabela de Round-Robin, mas o desempenho da consulta geralmente pode ser melhor com tabelas de Hash distribuídas. 

Tabelas replicadas

Uma tabela replicada fornece o melhor desempenho de consulta para tabelas pequenas.

Uma tabela replicada faz cache de uma cópia completa da tabela em cada nó de computação. Consequentemente, replicar uma tabela elimina a necessidade de transferir dados entre nós de Computação antes de uma junção ou agregação. Tabelas replicadas são melhor usadas com tabelas pequenas. Armazenamento adicional é necessário e há custos adicionais ao gravar dados que tornam grandes tabelas não práticas.

O diagrama a seguir mostra uma tabela replicada. Para SQL Data Warehouse, a tabela replicada tem cache realizada na primeira distribuição em cada nó de computação.

Conclusão

Para grandes volumes de dados de Data Warehouses, a tecnologias MPP são de extrema importância. Entretanto para a grande maioria dos ambientes de BI de pequeno e médio porte, eles podem simplesmente ser muito caros, e muito complexos, para valer a pena ser investido. Podemos levar como referência para sistemas grandes, a partir de 750 GB até 10 TB de dados, onde realmente justifica-se a implementação de uma arquitetura mais robusta como a MPP. Principalmente devemos levar em conta os fatores abaixo:

  • Alto volume de dados
  • Rápido crescimento, pois os sistemas MPP escalam com mais facilidade
  • Requisitos de ETL mais simples com atualizações mínimas da tabela de fatos, pois tendem a ser mais problemáticas para arquitetura MPP
  • Uma arquitetura que usa pouca ou nenhuma tecnologia OLAP ou de cubo e, portanto, tem uma carga de consulta grande e diversa diretamente no banco de dados do Data Warehouse.

 

Referências

Design Tip #175 There is No Database Magic

https://www.kimballgroup.com/2015/06/design-tip-175-there-is-no-database-magic/

 

MPP (massively parallel processing)

https://whatis.techtarget.com/definition/MPP-massively-parallel-processing

 

SQL Data Warehouse do Azure – arquitetura MPP

https://docs.microsoft.com/pt-br/azure/sql-data-warehouse/massively-parallel-processing-mpp-architecture

 

  

Capa

Data Warehousing Fundamentals for IT Professionals 

  • Segunda Edição
  • Autor: Paulraj Ponniah
  • ISBN-13: 978-0470462072
    ISBN-10: 0470462078
Azure Business Intelligence Data Warehouse Design de Software Microsoft SQL Server
  • COMENTÁRIOS: 0 Seja o primeiro a comentar!

Você tem o permissão de:

Compartilhar: copiar e redistribuir o material em qualquer suporte ou formato.

Adaptar: remixar, transformar, e criar a partir do material para qualquer fim, mesmo que comercial.

Esta licença é aceitável para Trabalhos Culturais Livres. O licenciante não pode revogar estes direitos desde que você respeite os termos da licença.


Blog do Eduardo - Todos os direitos reservados © 2020 Licença Creative Commons