> > 2016-06-07 14:03 GMT-03:00 Michel Luiz Milezzi <michelmile...@gmail.com>: > >> Não consigo imaginar uma maneira sistemática e (ou) automática. > >> Dependendo das alterações, você pode criar visões que preservem o > >> esquema lógico anterior, mas é trabalho braçal. > > > > Também não consigo ver uma forma de colocar isso na prática. Talvez seja > o > > caso de recorrer a um banco de dados semi-estruturado, não relacional. > > Isso seria arrancar o nariz porque achou a cara feia. Para começo, o > SQL também não é exatamente relacional, e isso (via dificuldades de > atualização de visões e outros probleminhas decorrentes de violações > do modelo relacional) é justamente uma das coisas que atrapalha esse > tipo de trabalho. >
Em qual momento afirmei que SQL É estritamente relacional? Não entendi essa sua colocação. Você distorceu o que eu disse. > Depois, um ‘semi-estruturado’ não existe; o que existe é uma estrutura > não tão bem definida quanto pode ser em SQL. E quanto mais mal > definida, maior a dificuldade de lidar com versões e suas > conseqüências. No caso, ‘semi-estruturar’ é varrer a sujeira para > debaixo do tapete, e esperar que não tenha ninguém alérgico na sala… > Banco de dados 'semi-estruturado' não existe? Nem vou discutir muito com você, basta uma olhada rápida na página do MongoDB para essa sua afirmação cair por terra: "Developers are working with applications that create massive volumes of new, rapidly changing data types — structured, semi-structured, unstructured and polymorphic data." No mais, semi-estruturado não quer dizer que esteja mal definido. Não generalize os seus casos, por favor. > > > Mas, se você utilizar um ORM para abstrair as consultas no banco de > dados é > > possível manter as entidades mapeadas de forma "diferente" em cada > > aplicação. Neste cenário somente seria possível adicionar objetos novos > no > > banco de dados. Daria problema, por exemplo, se uma coluna fosse > removida e > > a mesma continuasse no mapeamento da entidade em questão em uma das > versões > > da sua aplicação. > > Isso nada tem a ver com ORM. ORM no caso vai é acrescentar > complexidade numa abordagem muito simples, e geralmente insuficiente, > que é de somente criar novos objetos. > Veja, se as duas aplicações do amigo já estiverem usando um ORM para consumir o mesmo banco de dados, é possível utilizar mapeamento diferente nestas duas aplicações, desde que você não altere o tipo ou remova as colunas das tabelas que estão mapeadas. Você entendeu o que eu quis dizer? Não estou afirmando que é para adotar um ORM, estou dizendo que se o mesmo já for utilizado, é possível manter as duas entidades diferentes diante daquelas condições. > > De qualquer forma não recomendo estes cenários, o ideal é você tratar > isto a > > nível de aplicação. Por exemplo, é possível criar um ponto comum de > acesso > > ao banco para as duas aplicações através de um servidor REST. Este > servidor > > poderia tratar as diferenças entre as aplicações pela versão da sua api > de > > comunicação. > > Como mudam os nomes! Antes do Rest, chamávamos isso de três camadas. > E implementávamos na própria base de dados, com as PLs. Não que isso > anule o Rest; mas Rest é para outros casos, e incidentalmente pode > ajudar nisso também. Em outras palavras, a questão aqui não é ser > Rest, é isolar a apresentação (servidor de aplicações, no caso) da > lógica (PLs, Rest, o que for). Qual parte do "por exemplo" você não entendeu? Vejo que você tem dificuldade em aceitar a opinião alheia, então não vou me alongar muito na discussão, mas Rest também é usado para estes casos, a nova stack da google, por exemplo, utiliza esta abordagem muito bem. Neste caso, o frontend (AngularJS) comunica com o backend (endpoints REST) em um modelo MVC. Uma abordagem de micro-serviços também utiliza comumente Rest. Você pode usar qualquer coisa como ponto comum de acesso ao banco, REST foi um exemplo, você pode usar SOAP ou o que quiser.
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral