No contexto de banco de dados, encontrei a escalabilidade horizontal como uma das vantagens dos bancos de dados NOSQL. O que significa o termo?
Como isso se compara ao dimensionamento vertical ?
No contexto de banco de dados, encontrei a escalabilidade horizontal como uma das vantagens dos bancos de dados NOSQL. O que significa o termo?
Como isso se compara ao dimensionamento vertical ?
Dimensionamento
horizontal O dimensionamento horizontal é essencialmente construído para fora em vez de para cima. Você não compra um servidor maior e mais robusto e move toda a sua carga para ele; em vez disso, você compra mais de 1 servidor adicional e distribui sua carga entre eles.
O dimensionamento horizontal é usado quando você tem a capacidade de executar várias instâncias em servidores simultaneamente. Normalmente é muito mais difícil ir de 1 servidor para 2 servidores do que ir de 2 para 5, 10, 50, etc.
Depois de abordar os problemas de execução de instâncias paralelas, você pode tirar grande proveito de ambientes como Amazon EC2, Rackspace's Cloud Service, 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 as cargas de pico.
Bancos de dados relacionais são um dos itens mais difíceis de executar leitura/gravação completa em paralelo.
Eu vi Damien Katz falando sobre CouchDB no StackOverflow DevDays em Austin e um de seus principais focos para sua criação foram essas instâncias paralelas. Como esse tem sido o foco desde o primeiro dia, seria muito mais capaz de aproveitar o dimensionamento horizontal.
Dimensionamento
vertical O dimensionamento vertical é o oposto, aumenta em vez de diminuir. Vá e compre o hardware mais forte que puder e coloque seu aplicativo, banco de dados etc.
Mundo real
Claro, ambos têm suas vantagens e desvantagens. Muitas vezes, uma combinação desses dois é usada para uma solução final.
Você pode ter seu banco de dados primário onde todos escrevem e leem dados em tempo real em um grande pedaço de hardware. Em seguida, distribua cópias somente leitura do banco de dados para análises e relatórios de dados mais pesados, onde estar atualizado não importa tanto. Em seguida, o aplicativo da Web de front-end pode estar sendo executado em vários servidores da Web por trás de um balanceador de carga.
O dimensionamento horizontal é ótimo quando você precisa de um aplicativo que precisa lidar com uma grande quantidade de gravações e leituras paralelas. Pense em um site que está recebendo uma grande quantidade de tráfego e precisa registrar isso ou precisa registrar um grande número de eventos.
Acho que o maior ponto positivo é que o dimensionamento horizontal pode ser feito usando hardware comum, e há muito o que você pode fazer com o dimensionamento vertical e tentar aumentar as caixas existentes.
Os RDBMSs tradicionais falham aqui por vários motivos (incluindo o fato de serem ACID), e as soluções NoSQL se destacam aqui porque podem ser facilmente dimensionadas horizontalmente - mas isso é outra história (RDBMS/SQL x NoSQL).
Algumas pessoas na indústria usam terminologia diferente para significar a mesma coisa:
Torne-o mais simples de entender. NO SQL DB significa sem JOIN, o que significa que seu número de colunas permanece o mesmo, o que significa que tudo o que você se importa com o dimensionamento é o número de dados, ou seja, o número de linhas, o que significa crescimento horizontal ou dimensionamento.