Utilizando SlowlyChanging Dimension em tabela Fato Desnormalizada
-
sexta-feira, 18 de fevereiro de 2011 11:27
Amigos,
Tenho uma tabela fato que é atualizada diariamente. Ela terá inserção de novos dados e atualização dos antigos. Atualmente para "atualizar os antigos", eu faço um delete na fato e realizo a inserção do conteúdo novo. O problema é que isso é um pouco problemático ao BD em termos de performance, pois está "alimentando" o log constantemente. Logo, gostaria de saber se é possível utlilizar o SlowlyChanging dimension numa tabela-fato desnormalizada.
O Forte Sobreviverá e o Fraco irá Sofrer
Todas as Respostas
-
segunda-feira, 21 de fevereiro de 2011 19:09Moderador
Pablolobo,
Uma tabela fato desnormalizada!!!
Mas porque você esta trabalhando com uma tabela fato desnormalizada?
Realmente o log vai crescer de forma consideravél durante os processos de Delete/Insert, você já esta utilizando o SlowlyChanging Dimension?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
segunda-feira, 21 de fevereiro de 2011 20:05Não estou usando o SlowlyChanging Dimension ainda e eu desnormalizei pois a maioria das dimensões não estão totalmente povoadas. Poderia normalizá-la mas teria o problema das chaves, pois poderia ter algum código que não esteja nas dimensões.
O Forte Sobreviverá e o Fraco irá Sofrer -
domingo, 27 de fevereiro de 2011 01:16Moderador
Pabloslobo,
Então mas este possível dado que supostamente não estaria na dimensões, seria pertencem a alguma tabela que não esta envolvida no esquema?
Se for isso, podemos dizer que existe um erro na sua modelagem!!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
quarta-feira, 2 de março de 2011 18:11Não é bem um erro. Se for falar nos padrões de modelagem multidimensional seria um erro, mas neste caso eu posso não ter alguns códigos nas dimensões e sem tempo hábil para atualização destas, e com isso teria que atualizar a fato com nomenclaturas do tipo NÃO SE APLICA ou código 0 para os registros que porventura não tenham nada nas dimensões por falta de atualização.
O Forte Sobreviverá e o Fraco irá Sofrer -
quinta-feira, 3 de março de 2011 18:14Moderador
Pablo,
Se você não esta utilizando uma modelagem multidimensional, então qual seria? Algo similar a Modelo Entidade Relacionamento?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
quinta-feira, 3 de março de 2011 19:02
Seria a Modelagem multidimensional, sendo que estou sendo obrigado a passar lefts joins, pois devido ao fato de não ser o owner dos sistemas de origem das dimensões, acabo tendo colunas com valor NULL.
O Forte Sobreviverá e o Fraco irá Sofrer -
quinta-feira, 3 de março de 2011 19:57
Pablo,
não sei se entendi bem mas a idéia de deletar dados da tabela fato, que não por algum motivo de carga errônea, é altamente Não Recomendável, perde, inclusive, o sentido real da tabela que é a foto da situação historicamente. Então o ideal seria analisar o porquê da necessidade dessa deleção e posterior inserção de dados. O que pode ocorrer é a sua fato ser do tipo Accumulating Snapshot, esse tipo de tabela fato tem como caracteristica atualização de uns campos, campos de dada (key), para casos em que a fato representa negócios que sejam por etapas, um exemplo clássico é o e-commerce que vc tem o momento da venda, aprovação do pagamento, data da entrega e outras possiveis data.. então como a carga da fato é feita no momento da venda, os outros campos de data são atualizados a medida que vão ocorrendo, entende?! Os outros tipo de tabela de fatos (transaction e periodic snapshot) não devem ter atualização de registro.
Nayron Araújo - Desenvolvedor BI - Setor de TI - Universidade Potiguar - UnP -
quinta-feira, 3 de março de 2011 20:10Exatamente como citado acima. Para se ter uma idéia, a idéia desta fato é ser do tipo ROLAP, pois os dados são extraídos de um OLTP de tempos em tempos.
O Forte Sobreviverá e o Fraco irá Sofrer -
sexta-feira, 4 de março de 2011 17:01O fato do modo de armazenamento ser ROLAP não muda nada nas questões debatidas, vai mudar o desempenho da consulta, a latência do dado, já que você não vai precisar processar o cubo ao término de cada carga. E com relação a extração dos dados é comum ser extraído dos sistemas OLTP's realmente, quando não é de arquivo flat file ou algo do tipo. Já a freqüência de carga vai mudar de acordo com cada negócio e com a necessidade do cliente. Não consegui entender o que isso muda na questão de deletar registros, ou de usar SlowlyChangingDimension em uma tabela de fatos.
Nayron Araújo - Desenvolvedor BI - Setor de TI - Universidade Potiguar - UnP -
sexta-feira, 4 de março de 2011 17:13
Resumindo tudo,
Eu preciso saber como eu criaria um processo no SlowlyChanging Dimension para saber se uma determinada linha da fato será atualizada ou não, ou seja, quando eu for realizar uma nova carga e o dado desta nova carga for mais atual do que o está na fato, atualiza o dado da fato. Se os dados a serem carregados forem os mesmos da fato, não faz nada.
Atualmente eu deleto os dados da fato (atualizados ou não) e carrego denovo. Porém isto é muito custoso ao banco.
O Forte Sobreviverá e o Fraco irá Sofrer -
segunda-feira, 16 de abril de 2012 09:14Como isto pode ser feito, tambem necessito de ajuda nesta questão.
-
segunda-feira, 16 de abril de 2012 12:43
Amigo,
você poderia detalhar mais no que você está precisando de ajuda. Qual o seu cenário e o que você deseja fazer?
Atenciosamente,
Nayron Araújo - Desenvolvedor BI - Setor de TI - Universidade Potiguar - UnP

