Não estou sabendo pesquisar sobre o assunto. Estou com o seguinte problema:
Irei começar a desenvolver um software para minha empresa de fiscalização de obras. Eu quero que cada OBRA tenha seu próprio banco de dados no mySQL. Cada obra vai funcionar como uma aplicação independente. Até ai eu sei desenvolver.
O problema é que eu também vou desenvolver um modulo de gerenciamento de OBRAS, ou seja, toda vez que eu adicionar uma OBRA no modulo gerencial ele cria um novo banco de dados. Para acessar uma obra eu carregaria esta base de dados (como se fosse um programa chamando o outro).
Não estou conseguindo pensar numa forma de estruturar o acesso ao banco de dados. So tenho experiência em trabalhar com 1 atendendo toda a aplicação. Como vocês estruturariam as classes DAO, os entitymanegar, etc?
Entendo ser melhor ter um BD por obra. Uma obra não conversa com outra em nada. É como se fosse um programa por obra e um gerencial que coleta informações delas.
Diversos pontos, fundamentalmente pelo modelo de negócio. Em geral:
Uma obra gera um volume grande de informações (planilhas excel com centenas de milhares de item que são medidos mensalmente, etc).
Juntando o banco de dados eu teria uma infinidade de registros que dificultariam a comercialização dos serviços uma vez que cobro uma mensalidade por obra.
Por questão de confidencialidade, quando a obra acaba envio uma cópia para as partes envolvidas e deleto todas as informações (o cliente pode manter o resumo que fica no modulo gerencial se quiser).
Alguns clientes podem exigir para obra específica o armazenamento em servidores próprios.
Órgãos públicos podem exigir armazenamento em servidores próprios.
Posso agregar o serviço de hospedagem por obra para clientes que não possuem servidores próprios.
Posso negociar preços de armazenamento conforme demanda com diversas empresas por obra.