Artigo no estilo: Curso

Por que eu devo ler este artigo:Este artigo apresenta o Couchbase, um banco de dados NoSQL com grande potencial de escalabilidade, pronto para aplicações acessadas globalmente e capaz de prover sincronização de dados para aplicações mobile. Com base nisso, esse conteúdo é útil para desenvolvedores que procuram alternativas ao clássico banco de dados relacional, principalmente àqueles que precisam implementar aplicações com expectativa de grande quantidade de acessos simultâneos, bem como àqueles que pretendem criar soluções mobile que funcionem mesmo sem acesso à internet e possibilitam a sincronização dos dados criados offline.

Há cerca de 40 anos os bancos relacionais vêm sendo largamente utilizados. Com uma arquitetura centralizada e um esquema de tabelas para armazenamento de dados, eles sempre foram o principal meio de armazenamento e recuperação de dados da grande maioria dos sistemas. Porém, eles foram criados em uma época em que os sistemas comumente eram construídos em apenas duas camadas: um cliente que apresentava a interface sendo utilizada pelo usuário no computador do mesmo e um banco de dados acessível através da rede fechada da empresa. Isso significa que não houve uma preocupação muito grande com os acessos simultâneos, visto que isso não ocorria naquela época.

Acontece que com a chegada da Internet e o grande número de usuários que veio com ela, esse panorama está mudando. Os sistemas, por exemplo, passaram a ser implementados em três camadas: o cliente, que utiliza navegadores web e dispositivos móveis; o servidor; e a camada de armazenamento e recuperação dos dados. O problema é que tais clientes não são mais apenas aqueles que se encontram dentro da mesma empresa. Agora eles podem estar espalhados por todo o mundo, navegando na aplicação através da Internet.

Por causa disso, grandes redes sociais como o Facebook, sistemas de busca como o Google, entre outros, vêm recebendo uma quantidade inimaginável de acesso por seus usuários e também por outros sistemas. Com o grande crescimento do acesso à internet em todo o mundo, esses sites agora precisam suportar diversos usuários durante todo o dia e em todos os dias do ano, o que os obriga a buscar pela mais alta taxa de disponibilidade.

Outro efeito colateral dessa grande quantidade de usuários é o grande volume de dados gerados pelos mesmos. Esses dados vêm sendo coletados por grandes empresas devido a seu grande valor de mercado e começam a ser utilizados como fonte de informação ao suporte de decisões estratégicas e mineração de dados. Esse novo uso faz com que ainda mais dados sejam coletados e mais espaço seja requerido para armazená-los.

Para suprir essas necessidades, tanto os sistemas quanto seus respectivos bancos de dados devem suportar a grande quantidade de acessos simultâneos, acomodar uma enorme quantidade de dados e estarem sempre disponíveis. O método comumente utilizado para que os sistemas Web suportem vários acessos simultâneos e permaneçam sempre disponíveis é o escalonamento horizontal. Ou seja, múltiplos computadores ou máquinas virtuais rodam o mesmo aplicativo e a carga de usuários é distribuída entre eles. Deste modo, em caso de atualizações, não é necessário deixar todo o sistema fora do ar, mas apenas uma máquina por vez.

No entanto, com bancos de dados relacionais, o método mais comum é o escalonamento vertical. Isso significa que ao invés de designar múltiplas máquinas para essa função, uma única máquina é utilizada e, quando preciso, investe-se no melhoramento da mesma. Em geral, investe-se em HD maior para suportar mais dados, um processador e uma conexão mais rápida para suportar o alto número de acessos simultâneos, bem como no crescimento da memória RAM. Isso acontece devido à natureza centralizada dos bancos relacionais, o que torna necessário que eles estejam em uma única máquina.

O principal problema do escalonamento vertical é a relação custo-benefício. A curva desse, nesse caso, não é linear. Assim, apesar de perceber-se bom desempenho no início, chega-se a um ponto em que maiores investimentos em hardware geram pouca melhora de performance do sistema. Além disso, as melhorias são fixas e no caso de sistemas que recebem grandes quantidades de acesso em determinados períodos de tempo, observa-se um gasto desnecessário de recursos em momentos com pouco acesso.

Para amenizar esses problemas existem algumas técnicas que possibilitam estender/prolongar o uso de bancos de dados relacionais, como sharding, desnormalização e cache distribuído. Porém, essas técnicas apenas tentam compensar as limitações destes bancos com escalonamento horizontal.

Outro problema encontrado está relacionado à ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora