No IBM developerWorks: Forneça escalabilidade de dados no nível da nuvem com bancos de dados NoSQL
Escalabilidade é o sistema que deve suportar bancos de dados muito grandes com taxas de solicitação muito altas e com latência muito baixa.
Os sistemas NoSQL têm vários recursos de design em comum:
- A capacidade de dimensionar horizontalmente a taxa de transferência em muitos servidores.
- Uma interface ou protocolo simples em nível de chamada (em contraste com uma ligação SQL).
- Suporte para modelos de consistência mais fraca que as transações ACID na maioria dos RDBMS tradicionais.
- Uso eficiente de índices distribuídos e RAM para armazenamento de dados.
- A capacidade de definir dinamicamente novos atributos ou esquema de dados.
Por que os bancos de dados relacionais podem não ser ideais para o Scaling
Em geral, os sistemas de gerenciamento de banco de dados relacional têm sido considerados uma "solução única para persistência e recuperação de dados" por décadas. Eles amadureceram após extensos esforços de pesquisa e desenvolvimento e criaram com muito sucesso um grande mercado e soluções em diferentes domínios de negócios.
A crescente necessidade de escalabilidade e novos requisitos de aplicativos criaram novos desafios para o RDBMS tradicional, incluindo alguma insatisfação com essa abordagem de tamanho único em alguns aplicativos de escala da Web. A resposta para isso foi uma nova geração de software de banco de dados de baixo custo e alto desempenho, projetado para desafiar o domínio dos sistemas de gerenciamento de banco de dados relacional. Uma grande razão para o movimento NoSQL é que diferentes implementações de aplicativos da Web, corporativos e de computação em nuvem têm requisitos diferentes de seus bancos de dados - nem todo aplicativo exige consistência rígida de dados, por exemplo.
Outro exemplo: para sites de grande volume como eBay, Amazon, Twitter ou Facebook, escalabilidade e alta disponibilidade são requisitos essenciais que não podem ser comprometidos. Para essas aplicações, mesmo a menor interrupção pode ter consequências financeiras significativas e afetar a confiança do cliente.
Mais no DBA.SE: o que significa escala horizontal?
O dimensionamento horizontal é essencialmente construído em vez de aumentado. Você não compra um servidor maior e transfere toda a sua carga para ele; em vez disso, compra mais de 1 servidor adicional e distribui sua carga entre eles.
A escala horizontal é usada quando você tem a capacidade de executar várias instâncias nos servidores simultaneamente. Normalmente, é muito mais difícil ir de 1 servidor para 2 servidores, depois é de 2 para 5, 10, 50, etc.
Depois de resolver os problemas de execução de instâncias paralelas, você pode tirar grande proveito de ambientes como Amazon EC2, Cloud Service da Rackspace, GoGrid etc., pois pode ativar e desativar instâncias com base na demanda, reduzindo a necessidade de pagar pela energia do servidor você não está usando apenas para cobrir essas cargas de pico.
Bancos de dados relacionais são um dos itens mais difíceis de executar leitura / gravação completa em paralelo.