Job Scheduling, procedimentos armazenados

5

Estou trabalhando em um projeto de aplicativo da Web poliglota que tem funcionalidades que podem ser separadas, mas que dependem umas das outras. Eu não estou familiarizado com o seguinte (quais palavras-chave para procurar, quais conceitos estão em jogo):

Eu tenho algumas fontes diferentes de dados diferentes que são criados / ingeridos separadamente em um armazenamento de dados. os dados necessários para fazer o backup do aplicativo da Web real exigem a limpeza e a organização dos diferentes tipos de dados.

Como exemplo concreto, talvez você tenha um armazenamento de dados de livro / artigo grande e um armazenamento de dados de usuário. Você deseja organizar e enviar dados de ambos para uma loja de gráficos para fins de recomendação e uma versão emparelhada da livraria para realmente exibir o aplicativo da Web e a funcionalidade de pesquisa.

Como você costuma fazer isso? Não são dados que mudam rapidamente, então eu não acho que um sistema reativo completo baseado em eventos seja necessário. O conceito de alguma forma é para agendar trabalhos em um período específico?

    
por Ar415 24.12.2015 / 11:51
fonte

2 respostas

4

Um conceito-chave / termo de pesquisa pode ser ETL (extrair, transformar, carregar) . Essa é uma formalização do processo que você descreve: pegue os dados de todo o lugar, limpe-os e entregue-os. Você está com sorte, há uma série de ferramentas existentes que você pode usar e muito escrito sobre o assunto.

Estou mais familiarizado com Pentaho (Kettle, na verdade). Não tome isso como uma recomendação, mas mais como um exemplo do que pode ser feito ...

Com o Kettle, eu pego muitos dados de várias fontes: arquivos, bancos de dados e até mesmo serviços da web. Se a sua fonte de dados não for compatível imediatamente, você provavelmente encontrará um plug-in que funcione. Então, eu transformo os dados em uma forma apropriada, limpo e solto em outro lugar. Novamente, se o seu destino não for compatível imediatamente, provavelmente você encontrará um plug-in para ajudar. (Na verdade, escrever seu próprio plug-in não é insuperável.) O melhor de tudo é que posso agendar todos esses processos de qualquer maneira idiossincrática que eu achar adequado.

Não deixe de avaliar várias ferramentas para decidir o que funciona melhor para sua equipe.

Com relação às melhores práticas, há muita coisa escrita, mas a maioria é específica da tecnologia. Os bancos de dados de grandes fornecedores têm sua própria abordagem. Ferramentas de código aberto têm sua abordagem. Você não menciona a tecnologia que está usando, mas provavelmente encontrará mais detalhes procurando por ETL relacionado a essa tecnologia. Genericamente, as melhores práticas recomendadas tendem a ser uma espécie de óbvio: conheça suas necessidades, registrando, esse tipo de coisa. Talvez faça perguntas secundárias ao descobrir detalhes.

    
por 24.12.2015 / 16:18
fonte
1

Para responder a minha própria pergunta sobre o que acabei indo, e para o meu julgamento, a melhor abordagem: Streams! Embora muito menos falado sobre o caso de uso (você normalmente só ouve sobre consumir dados rápidos), estruturas de vapor são uma maneira muito boa de raciocinar e uma maneira simples de construir pipelines de ETL. Eu construo no ecossistema Scala / Java. Akka Streams (para um nível baixo) e Apache Flink são ótimas ferramentas para isso.

    
por 13.08.2016 / 01:27
fonte