Esquema de floco de neve x esquema de estrela

Ao escolher um esquema de banco de dados para um armazém de dados, floco de neve e esquemas em estrela tendem a ser escolhas populares. Esta comparação discute a adequação dos esquemas estrela vs. floco de neve em diferentes cenários e suas características.

Gráfico de comparação

Gráfico de comparação Esquema de floco de neve versus esquema de estrelas
Esquema de floco de neveEsquema em estrela
Facilidade de manutenção / alteração Sem redundância, portanto, os esquemas de floco de neve são mais fáceis de manter e alterar. Possui dados redundantes e, portanto, menos fácil de manter / alterar
Fácil de usar Consultas mais complexas e, portanto, menos fáceis de entender Menor complexidade de consulta e fácil compreensão
Desempenho da consulta Mais chaves estrangeiras e, portanto, maior tempo de execução da consulta (mais lento) Menor número de chaves estrangeiras e, portanto, menor tempo de execução da consulta (mais rápido)
Tipo de Datawarehouse É bom usar o núcleo do datawarehouse para simplificar relacionamentos complexos (muitos: muitos) Bom para datamarts com relacionamentos simples (1: 1 ou 1: muitos)
Junções Maior número de junções Menos junções
Tabela de dimensões Um esquema de floco de neve pode ter mais de uma tabela de dimensões para cada dimensão. Um esquema em estrela contém apenas uma tabela de dimensão única para cada dimensão.
Quando usar Quando a tabela de dimensões é relativamente grande, os flocos de neve são melhores, pois reduzem o espaço. Quando a tabela de dimensões contém menos número de linhas, podemos escolher o esquema em estrela.
Normalização / Des Normalização As tabelas de dimensão estão no formato Normalizado, mas a Tabela de fatos está no formato Des Normalizado As tabelas de dimensões e fatos estão na forma desnormalizada
Modelo de dados Abordagem de baixo para cima Abordagem de cima para baixo

Conteúdo: Esquema Floco de Neve vs Esquema Estrela

  • 1 Exemplos
    • 1.1 Exemplo de esquema em estrela
    • 1.2 Exemplo de esquema do floco de neve
  • 2 Referências

Exemplos

Considere um banco de dados para um varejista que tenha muitas lojas, com cada loja vendendo muitos produtos em várias categorias de produtos e de várias marcas. Um data warehouse ou data mart para esse varejista precisaria fornecer aos analistas a capacidade de executar relatórios de vendas agrupados por loja, data (ou mês, trimestre ou ano) ou categoria ou marca do produto.

Exemplo de esquema em estrela

Se este data mart estivesse usando um esquema em estrela, ficaria da seguinte maneira:

Exemplo de um esquema em estrela

A tabela de fatos seria um registro das transações de vendas, enquanto existem tabelas de dimensões para data, loja e produto. Cada tabela de dimensão é conectada à tabela de fatos por meio de sua chave primária, que é uma chave estrangeira para a tabela de fatos. Por exemplo, em vez de armazenar a data real da transação em uma linha da tabela de fatos, o date_id é armazenado. Esse date_id corresponde a uma linha exclusiva na tabela Dim_Date, e essa linha também armazena outros atributos da data que são necessários para o agrupamento nos relatórios. por exemplo, dia da semana, mês, trimestre do ano e assim por diante. Os dados são desnormalizados para facilitar a geração de relatórios.

Aqui está como obter um relatório do número de televisores vendidos por marca e por país com a ajuda de junções internas.

Exemplo de esquema de floco de neve

O mesmo cenário também pode usar um esquema de floco de neve, caso em que seria estruturado da seguinte maneira:

Exemplo de esquema de floco de neve (clique para ampliar)

A principal diferença, quando comparada com o esquema em estrela, é que os dados nas tabelas de dimensões são mais normalizados. Por exemplo, em vez de armazenar mês, trimestre e dia da semana em cada linha da tabela Dim_Date, eles são divididos em suas próprias tabelas de dimensão. Da mesma forma, para a tabela Dim_Store, o estado e o país são atributos geográficos que são removidos em uma etapa - em vez de serem armazenados na tabela Dim_Store, agora são armazenados em uma tabela Dim_Geography separada.

O mesmo relatório - o número de televisores vendidos por país e por marca - agora é um pouco mais complicado do que em um esquema em estrela:

Consulta SQL para obter o número de produtos vendidos por país e marca, quando o banco de dados usa um esquema de floco de neve.

Referências

  • wikipedia: Snowflake_schema
  • wikipedia: Star_schema