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!