Pergunta

Em um aplicativo de relatórios, é possível a lógica de relatórios resumo e os detalhes do esquema de banco de dados?

Eu tenho um aplicativo Reporting Services com uma lógica de relatórios razoavelmente complexa, estou tentando migrar o aplicativo para outros bancos de dados. (Bancos de dados que são construídos para o mesmo fim, mas desenvolvidos por diferentes software-houses.)

É uma decisão sábia para usar uma camada de serviços web / WCF no meio? Quais as opções mais pode ser considerado?

Foi útil?

Solução

Seria difícil fazer esse tipo de coisa em um one-size-fits-all maneira no caso geral, mas você pode tentar um destes:

  • Construir alguns vistas sobre o esquema do banco e escrever os sprocs relatórios contra Essa. Isso significa que você tem alguma flexibilidade no esquema de banco de dados subjacente e pode usar os pontos de vista como uma camada de abstração.

  • Criar uma espécie de armazém de dados plataforma e escrever um processo de ETL para preenchê-lo a partir das várias fontes de dados. Esta é mais flexível, mas mais esforço para construir e isso só vai trabalhar a partir de uma actualização periódica. Se esse grau de latência é aceitável para a sua aplicação, então eu sugiro que o sistema de data warehouse é a melhor abordagem.

    A principal vantagem de um data warehouse é que ele é otimizado para comunicação e tem uma interface consistente em todas as fontes de dados - você consolidá-los em um único banco de dados com um esquema. Os relatórios são desenvolvidos contra esse esquema. A adição de novos sistemas é conseguido por escrever um processo de ETL para preencher o armazém; os relatórios de continuar a trabalhar, independentemente da fonte de dados.

WCF é um sistema de comunicação de rede. Você vai achar que é difícil fazer esse tipo de arquitetura lidar com grandes volumes de dados em uma base transacção a transacção - um processo ETL carregamento lote seria muito mais eficiente. No entanto, se você precisa de um feed em tempo real (talvez por um sistema de pregão) que você pode ser capaz de fazê-lo com algo como isto.

Se você NEAD uma baixa latência alimentar outra abordagem seria investigar um gênero de ferramentas chamado Enterprise Information Integration . Talvez a ferramenta mais amplamente disponível que pode fazer isso é um Data Source View em SSIS que lhe dá alguma flexibilidade no mapeamento fontes de dados arbitrários a um esquema consistente. Não é tão sofisticado como o melhor da raça EII ferramentas, mas você pode colocar pacotes SSIS em cima dela e usá-las como fonte de dados para os relatórios, se você precisa para transformar ainda mais os dados.

No entanto, eu nunca construiu um sistema estruturado como este, então não posso realmente atestar o quão bem ele funciona na prática. Eu acho que seria bastante frágil e difícil de quebrar em partes que podem ser unidade testada, por isso, desenvolvimento e manutenção vai ser muito demorado para um sistema de complexidade não-trivial.

Se você deseja investigar outros sistemas EII no mercado Este link é um diretório de vários artigos sobre EII e alguns outros fornecedores EII de ferramentas.

Outras dicas

Concordo com a sugestão de data warehouse de NXC:

  • Se fosse um one-off trabalho, não, mas uma vez que é uma "aplicação de relatórios", é altamente provável que muitos dos seus relatórios vai se encaixar no paradigma OLAP.
  • É, obviamente, uma tarefa capaz de fazer, pois há muitas ferramentas de consulta OLAP bem sucedidos disponíveis no mercado, com diferentes graus de complexidade
  • esquemas OLAP, por exemplo, o padrão esquema em estrela , são concebido para ser fácil de consulta. Elas são planas na natureza, com o quadro de fato se juntar a uma ou mais tabelas de dimensões usando as teclas simples de uma forma muito simples.
  • os tipos de operações de pessoas vai querer fazer com os relatórios são previsíveis:. Filtro, tipo, grupo por, adicionar ou remover colunas, exportação para CSV, etc
  • você vai ter um bom nível de flexibilidade com os relatórios que são gerados - a capacidade de explorar os dados para vários relacionamentos é muito viciante
  • Uma vez que você escrever a ferramenta de consulta, ele é portátil para reutilização com qualquer outro esquema em estrela - não é mau
  • "É possível à lógica de relatórios resumo e os detalhes do esquema de banco de dados?" - sim, esquemas OLAP são exatamente isso - eles fazem todos os dados em conformidade com um esquema padronizado. É claro que esta lógica de negócios se move para a camada de ETL, mas eu diria que é onde ele pertence.

Assim, você é obrigado a fazer ETL com esta abordagem - uma opção é fazer algum tipo de ROLAP , mas na prática eu achei que fosse tão fácil de scripts de gravação de ETL, pois é para o desempenho cajole boa fora de uma configuração ROLAP.

Uma resposta que eu acho que vai geralmente voltar a morder-lhe na parte traseira, mas que os outros Eu sei como, é produzir os dados como XML a partir de cada banco de dados. Isso dá-lhe um conjunto consistente de dados de uma forma que a maioria dos produtos pode facilmente manipular.

Se você fizer isso, certifique-se que as consultas XPath você será executado em que vai ser rápido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top