Desenho de um sistema de entrada múltipla / saída múltiplos [fechado]
-
19-09-2019 - |
Pergunta
Fundo
Eu estou desenhando em um aplicativo que precisa para executar algo como isto
database a >--| |--> fileformat 1
database b >--+--> custom application >--+--> fileformat 2
... | | ...
database n >--| |--> fileformat n
As bases de dados em questão são todos do mesmo tipo mas com diferentes quadros e na estrutura. Os objetos que devem ser carregados são todos os produtos de algum tipo. Os arquivos têm estrutura semelhante, mas não necessariamente o mesmo, alguns são xml, alguns são csv etc.
O aplicativo personalizado está aqui para garantir uma interface consistente para manipular os objetos recuperados a partir dos dados relacional. É uma aplicação web simples com algumas opções em cada produto e um display paginado dos produtos. Acrescenta dados adicionais para cada registro que é mantido através dos meios de um ORM.
Apenas um banco de dados estará ativo em cada instância do aplicativo, no entanto muitos formatos de arquivos pode estar ativo. A escrita destes arquivos são simultâneos.
Pergunta ??strong>
Eu estive lutando com encontrar a melhor abordagem para projetar as etapas de conversão.
Existe um padrão que de alguma forma consegue combinar os esquemas diferentes em um único modelo? Há a suposição aqui que apenas os campos que estão presentes em todos os bancos de dados devem acabar no modelo.
E o que dizer o contrário? Quando os objetos produtos estão a ser escrito para o arquivo?
Eu olhei padrões diferentes, tais como o padrão de estratégia, mas eu ainda não estou tendo aquele momento em que todos os bits e peças parecem se encaixar.
Por que vale a pena o próprio aplicativo provavelmente será escrito em PHP.
Solução
Esta seria a minha abordagem:
Cada DB teria uma visão sobre ele que iria apresentar os dados necessários para a sua aplicação.
O aplicativo teria uma camada que iria ler os dados e reformulá-la em uma estrutura de dados (bastante normal).
Então você teria uma camada que iria ler essas estruturas de dados padrão e escrever para os arquivos solicitados.