Esquema do floco de neve - Snowflake schema

O esquema em floco de neve é ​​uma variação do esquema em estrela, apresentando a normalização das tabelas de dimensão.

Na computação , um esquema em floco de neve é um arranjo lógico de tabelas em um banco de dados multidimensional de forma que o diagrama de relacionamento da entidade se pareça com uma forma de floco de neve . O esquema em floco de neve é ​​representado por tabelas de fatos centralizadas que são conectadas a várias dimensões . "Snowflaking" é um método de normalizar as tabelas de dimensão em um esquema em estrela . Quando está completamente normalizado ao longo de todas as tabelas de dimensão, a estrutura resultante se assemelha a um floco de neve com a tabela de fatos no meio. O princípio por trás do snowflaking é a normalização das tabelas de dimensão, removendo atributos de baixa cardinalidade e formando tabelas separadas.

O esquema do floco de neve é ​​semelhante ao esquema em estrela. No entanto, no esquema em floco de neve, as dimensões são normalizadas em várias tabelas relacionadas, enquanto as dimensões do esquema em estrela são desnormalizadas com cada dimensão representada por uma única tabela. Uma forma complexa de floco de neve emerge quando as dimensões de um esquema em floco de neve são elaboradas, tendo vários níveis de relacionamentos, e as tabelas filho têm várias tabelas pai ("bifurcações na estrada").

Usos comuns

Os esquemas em estrela e em floco de neve são mais comumente encontrados em data warehouses dimensionais e data marts, onde a velocidade de recuperação de dados é mais importante do que a eficiência das manipulações de dados. Como tal, as tabelas nesses esquemas não são muito normalizadas e frequentemente são projetadas em um nível de normalização aquém da terceira forma normal .

Normalização e armazenamento de dados

A normalização divide os dados para evitar redundância (duplicação), movendo grupos de dados comumente repetidos para novas tabelas. A normalização, portanto, tende a aumentar o número de tabelas que precisam ser unidas para executar uma determinada consulta, mas reduz o espaço necessário para conter os dados e o número de locais onde eles precisam ser atualizados se os dados mudarem.

Do ponto de vista do armazenamento de espaço, as tabelas dimensionais são geralmente pequenas em comparação com as tabelas de fatos. Isso geralmente nega os benefícios potenciais do espaço de armazenamento do esquema em estrela em comparação com o esquema em floco de neve. Exemplo: Um milhão de transações de vendas em 300 lojas em 220 países resultariam em 1.000.300 registros em um esquema em estrela (1.000.000 registros na tabela de fatos e 300 registros na tabela dimensional onde cada país seria listado explicitamente para cada loja naquele país). Um esquema em floco de neve mais normalizado com chaves de país referindo-se a uma tabela de país consistiria na mesma tabela de fatos de 1.000.000 de registros, uma tabela de loja de 300 registros com referências a uma tabela de países com 220 registros. Neste caso, o esquema em estrela, embora desnormalizado ainda mais, reduziria apenas o número de registros por um fator (insignificante) de ~ 0,9998 (= [1.000.000 + 300] dividido por [1.000.000 + 300 + 220])

Alguns desenvolvedores de banco de dados se comprometem criando um esquema em floco de neve subjacente com visualizações construídas sobre ele que realizam muitas das junções necessárias para simular um esquema em estrela. Isso fornece os benefícios de armazenamento obtidos por meio da normalização de dimensões com a facilidade de consulta que o esquema em estrela fornece. A desvantagem é que exigir que o servidor execute as junções subjacentes automaticamente pode resultar em um impacto no desempenho ao consultar, bem como em junções extras a tabelas que podem não ser necessárias para preencher certas consultas.

Benefícios

O esquema do floco de neve pertence à mesma família do modelo lógico do esquema em estrela . Na verdade, o esquema em estrela é considerado um caso especial do esquema em floco de neve. O esquema do floco de neve oferece algumas vantagens sobre o esquema em estrela em certas situações, incluindo:

  • Algumas ferramentas de modelagem de banco de dados multidimensional OLAP são otimizadas para esquemas em flocos de neve.
  • A normalização dos atributos resulta em economia de armazenamento, sendo a desvantagem a complexidade adicional nas junções de consulta de origem.

Desvantagens

A principal desvantagem do esquema em floco de neve é ​​que os níveis adicionais de normalização de atributo adicionam complexidade às junções de consulta de origem, quando comparados ao esquema em estrela .

Os esquemas em floco de neve, em contraste com as dimensões planas de uma única mesa, foram fortemente criticados. Supõe-se que seu objetivo seja um armazenamento compacto e eficiente de dados normalizados, mas isso tem um custo significativo de baixo desempenho ao navegar pelas junções necessárias nesta dimensão. Esta desvantagem pode ter diminuído nos anos desde que foi reconhecida pela primeira vez, devido ao melhor desempenho de consulta nas ferramentas de navegação.

Quando comparado a um esquema transacional altamente normalizado , a desnormalização do esquema em floco de neve remove as garantias de integridade de dados fornecidas pelos esquemas normalizados. As cargas de dados no esquema em floco de neve devem ser altamente controladas e gerenciadas para evitar atualizações e inserir anomalias.

Exemplos

Esquema do floco de neve usado pela consulta de exemplo.

O esquema de exemplo mostrado à direita é uma versão em flocos de neve do exemplo de esquema em estrela fornecido no artigo do esquema em estrela .

O exemplo de consulta a seguir é o esquema em floco de neve equivalente ao código de exemplo do esquema em estrela que retorna o número total de unidades de televisão vendidas por marca e por país em 1997. Observe que a consulta do esquema em floco de neve requer muito mais junções do que a versão do esquema em estrela para atender até mesmo uma consulta simples. A vantagem de usar o esquema em floco de neve neste exemplo é que os requisitos de armazenamento são menores, pois o esquema em floco de neve elimina muitos valores duplicados das próprias dimensões.

SELECT
	B.Brand,
	G.Country,
	SUM(F.Units_Sold)
FROM Fact_Sales F
INNER JOIN Dim_Date D             ON F.Date_Id = D.Id
INNER JOIN Dim_Store S            ON F.Store_Id = S.Id
INNER JOIN Dim_Geography G        ON S.Geography_Id = G.Id
INNER JOIN Dim_Product P          ON F.Product_Id = P.Id
INNER JOIN Dim_Brand B            ON P.Brand_Id = B.Id
INNER JOIN Dim_Product_Category C ON P.Product_Category_Id = C.Id
WHERE
	D.Year = 1997 AND
	C.Product_Category = 'tv'
GROUP BY
	B.Brand,
	G.Country

Veja também

Referências

Bibliografia

links externos