[Conceitos] Bancos de dados de integração e de aplicação

Olá, pessoal

Pretendo inaugurar com este post uma categoria de posts mais curtos (pelo menos, na intenção!) que tenham por objetivo definir determinados conceitos, uma vez que saber do que estamos falando e não confundir nomes é importante para nos comunicarmos melhor e transferir conhecimento de forma satisfatória. Afinal, nem tudo é farinha do mesmo saco!

Começo por um tema que não costumo falar: bancos de dados.

Podemos dizer que, quanto à integração entre aplicações, os bancos de dados são classificados em: bancos de dados de integração (integration databases) e bancos de dados de aplicação (application databases).

BANCO DE DADOS DE INTEGRAÇÃO

Um banco de dados de integração é aquele banco de dados comum para diversas aplicações, ou seja, os dados de todas elas estão centralizados em um único banco.

Adotando esta estratégia “comunitária”, temos as seguintes vantagens e desvantagens:

1) O esquema do banco tende a tornar-se mais complexo, pois deve acomodar necessidades de múltiplas aplicações.

2) Pode haver conflitos de interesses entre as aplicações. Por exemplo: “tunar” o banco para atender determinada aplicação pode provocar queda de performance em outra(s).

3) A integridade dos dados é normalmente garantida pelo próprio banco, já que as atualizações vêm de diferentes aplicações, mantidas por diferentes times de desenvolvimento.

4) Sem liberdade de escolha de banco de dados.

5) Maior dificuldade de manter e evoluir o esquema, exigindo maior organização e comunicação dos times para que uma alteração não quebre uma ou mais aplicações.

6) Como vantagem, maior facilidade de comunicação entre as aplicações. Se uma aplicação precisa de dados de outra, ela tem acesso a eles de forma direta.

BANCOS DE DADOS DE APLICAÇÃO

Um banco de dados de aplicação é um banco de dados acessado diretamente por uma única aplicação, mantido e controlado pelo time de desenvolvimento da aplicação.

Com essa abordagem, o cenário se inverte. Há maior facilidade de manter e evoluir o banco, a integridade dos dados pode ser feita pela aplicação, pode-se escolher o banco de acordo com a necessidade da aplicação, etc.

Uma aplicação acessa dados de outra aplicação somente por meio de serviços, forma de integração que se popularizou na última década. Dessa forma, o banco de dados fica totalmente “oculto” do mundo exterior, proporcionando mais flexibilidade na forma de expor os dados (XML e JSON estão entre os formatos mais difundidos).

CENÁRIOS MISTOS

É possível que aplicações façam parte de cenários mistos, onde, por exemplo, cada uma possui seu próprio banco e ainda utilizam um banco de integração para um módulo comum (aka Shared Kernel).

…………………

Era isso.

Fui claro? O que acharam?

Até o próximo!

Anúncios

13 comentários em “[Conceitos] Bancos de dados de integração e de aplicação

  1. Achei bem legal a ideia dos conceitos, faz com quem não conheça veja novas possibilidades e se familiarize mais com o mundo do desenvolvimento, certo?

    Abraço e sucesso no blog.

  2. Muito bom o post, não conhecia estes conceitos. Acho muito válido essa ideia de mostrar e conceituar os exemplos, existe muito post por ai na web que mostra a pratica e esquece de dizer o porquê desta ou daquela pratica! Até o próximo e sucesso!

    1. Hoje é uma realidade pequenas apps com funcionalidades bem coesas conversando por meio de serviços. Eu gosto bastante da ideia. Cada um no seu quadrado. Além das vantagens mostradas no post, você pode trabalhar com times menores, o que eu também acho bastante vantajoso.

      Pode haver um banco somente-leitura acessível para mais de uma aplicação.

      No mais, não consigo ver mais razões para múltiplas apps nascerem com a ideia de banco de integração em mente. (A menos que haja algum tipo de impedimento para o uso de bancos de aplicação, como imposição e clausulas contratuais forçando o uso de um banco existente.). Alguma outra ocasião?

      []s

      1. Não sei cara, pensei no caso de se estar fazendo uma segunda versão melhorada e com uma arquitetura mais sofisticada de um sistema antigo, em que os desenvolvedores desse sistema não estão mais presentes, então a ideia seria ir utilizando o banco desse antigo em pontos estratégicos e ir descontinuando o antigo aos poucos, até que se possa retirar o sistema antigo de vez e remodelar o banco antigo com mais facilidade, para tuna-lo ou, deixar.mais ubíquo o nome das tabelas e colunas, ou recriar os dados numa nova estrutura, enfim ter mais liberdade. Então esse caso seria o caso de um banco de aplicação passar para o de integração num processo de transição e depois voltar novamente a ser um banco de aplicação.
        O que você acha da idéia?
        Sei lá foi uma outra possibilidade que imaginei…

      2. Nunca tive essa experiência de migrar app aos poucos, reaproveitando o banco legado, mas é fato que é bem mais complexa de lidar, pois você teria que cuidar para não quebrar o app legado devido a modificações no banco. Demandaria boa comunicação caso fosse outro time mantendo o legado.

        Num cenário ideal, é melhor deixar o legado de lado e trabalhar no green field, num banco novinho, sem ter que ficar misturando com banco velho.
        My opinion!
        []s

      3. Sim, tudo isso que falei é somente hipotético não é mesmo? O cenário que descrevi esta bem longe do ideal. Porém seja pelo modo x ou y de migração/refatoração uma hora ou outra você vai precisar dos dados/estruturas antigos, isso se, logicamente, você desejar que eles estejam na nova aplicação.
        Uma curiosidade, você falou que as aplicações se comunicam através de serviços, lembrei do VB 2008 em que ele fornecia dois tipos de bancos SQL Server; o service-based database, e o local database, O SQL Server é um Windows Service, acho que a intenção era permitir ser utilizado por mais de um lugar, obviamente isso é configurável.
        De qualquer forma, otimo post, bem consiso, conceitos são importantes, muito importantes mesmo, a tecnologia passa, o conceito, nem tanto. []’s

Participe! Vamos trocar uma ideia sobre desenvolvimento de software!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s