NoSql vs Banco de dados relacional

Recentemente o NoSQL ganhou imensa popularidade.

Quais são as vantagens do NoSQL sobre o RDBMS tradicional?

    Nem todos os dados são relacionais. Para essas situações, o NoSQL pode ser útil.

    Com isso dito, NoSQL significa “Not Only SQL”. Não se destina a bater SQL ou suplantá-lo.

    O SQL tem várias vantagens muito grandes:

    1. Base matemática forte.
    2. Sintaxe declarativa.
    3. Uma linguagem bem conhecida na Linguagem de Consulta Estruturada (SQL).

    Aqueles não foram embora.

    É um erro pensar nisso como um argumento ou / ou. O NoSQL é uma alternativa que as pessoas precisam considerar quando se encheckbox, isso é tudo.

    Os documentos podem ser armazenados em bancos de dados não relacionais, como o CouchDB.

    Talvez ler isso ajude.

    A história parece ter esta aparência:

    1. O Google precisa de uma camada de armazenamento para seu índice de pesquisa invertida. Eles imaginam que um RDBMS tradicional não vai cortá-lo. Então, eles implementam um armazenamento de dados NoSQL, BigTable no topo do sistema de arquivos GFS. A maior parte é que milhares de máquinas de hardware de commodities baratas fornecem a velocidade e a redundância.

    2. Todos os outros percebem o que o Google acabou de fazer.

    3. Teorema Brewers CAP está provado. Todos os sistemas de uso do RDBMS são sistemas da CA. As pessoas começam a brincar com os sistemas CP e AP também. As lojas K / V são muito mais simples, então são o principal veículo para a pesquisa.

    4. Sistemas de software como serviço em geral não fornecem uma loja semelhante a SQL. Assim, as pessoas ficam mais interessadas nos repositorys do tipo NoSQL.

    Acho que muito da decolagem pode estar relacionada a essa história. Escalonando Google tomou algumas idéias novas no Google e todo mundo segue o exemplo, porque esta é a única solução que eles sabem para o problema de escala agora. Assim, você está disposto a refazer tudo em torno da idéia de database distribuído do Google, porque é a única maneira de dimensionar além de um determinado tamanho.

    C – Consistência
    A – Disponibilidade
    P – tolerância à partição
    K / V – chave / valor

    O NoSQL é melhor que o RDBMS por causa dos seguintes motivos / propósitos do NoSQL

    1. Suporta dados semi-estruturados e dados voláteis
    2. Não tem esquema
    3. A taxa de transferência de leitura / gravação é muito alta
    4. Escalabilidade horizontal pode ser alcançada facilmente
    5. Apoiará Bigdata em volumes de Terra Bytes e Peta Bytes
    6. Fornece um bom suporte para ferramentas analíticas sobre o Bigdata
    7. Pode ser hospedado em máquinas de hardware mais baratas
    8. A opção de armazenamento em cache na memory está disponível para aumentar o desempenho de consultas
    9. Ciclos de vida de desenvolvimento mais rápidos para desenvolvedores

    EDITAR:

    Para responder “por que o RDBMS não pode escalar”, por favor, dê uma olhada no RDBMS Overheads pdf escrito por Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden e Michael Stonebraker

    Os RDBMS têm desafios ao lidar com grandes volumes de dados de bytes Terabytes & Peta . Mesmo se você tiver o Redundant Array de discos independentes / baratos (RAID) e a destruição de dados, ele não será dimensionado para um grande volume de dados. Você precisa de hardware muito caro.

    Criação de Log : Montar registros de log e rastrear todas as alterações nas estruturas de database reduz o desempenho. O registro em log pode não ser necessário se a capacidade de recuperação não for um requisito ou se a capacidade de recuperação for fornecida por outros meios (por exemplo, outros sites na rede).

    Bloqueio : O bloqueio tradicional de duas fases representa uma sobrecarga considerável, uma vez que todos os accesss às estruturas de database são governados por uma entidade separada, o Gerenciador de Bloqueios.

    Travamento : Em um database multiencadeado, muitas estruturas de dados precisam ser retidas antes de poderem ser acessadas. Remover esse recurso e ir para uma abordagem single-threaded tem um impacto no desempenho perceptível.

    Gerenciamento de Buffer : Um sistema de database de memory principal não precisa acessar páginas através de um buffer pool, eliminando um nível de indireção em cada access de registro.

    Isso não significa que tenhamos que usar NoSQL sobre SQL.

    Ainda assim, o RDBMS é melhor que o NoSQL pelos seguintes motivos / propriedades do RDBMS

    1. Transações com propriedades ACID – Atomicidade, Consistência, Isolamento e Durabilidade
    2. Adesão ao esquema forte de dados sendo escritos / lidos
    3. Gerenciamento de consultas em tempo real (no caso de tamanho de dados <1 0 10 Tera bytes)
    4. Execução de consultas complexas envolvendo cláusulas join e group by

    Nós temos que usar RDBMS (SQL) e NoSQL (não apenas SQL), dependendo do caso de negócio e requisitos

    O NOSQL não possui vantagens especiais sobre o modelo de database relacional. O NOSQL aborda certas limitações dos SGBDs SQL atuais, mas não implica em nenhum recurso fundamentalmente novo em relação aos modelos de dados anteriores.

    NOSQL significa apenas sem SQL (ou “não apenas SQL”), mas isso não significa o mesmo que nenhum relacional . Um database relacional, em princípio, seria uma solução NOSQL muito boa – é apenas que nenhum dos atuais conjuntos de produtos NOSQL usa o modelo relacional.

    Se você precisar processar uma quantidade enorme de dados com alto desempenho

    OU

    Se o modelo de dados não é predeterminado

    então

    O database NoSQL é uma escolha melhor.

    O RDBMS se concentra mais no relacionamento e no NoSQL se concentra mais no armazenamento.

    Você pode considerar o uso do NoSQL quando o RDBMS atingir gargalos. O NoSQL torna o RDBMS mais flexível.

    A maior vantagem do NoSQL sobre o RDBMS é a escalabilidade. Bancos de dados NoSQL podem facilmente escalar para muitos nós, mas para o RDBMS é muito difícil. A escalabilidade não apenas oferece mais espaço de armazenamento, mas também um desempenho muito mais alto, já que muitos hosts trabalham ao mesmo tempo.

    De mongodb.com:

    Os bancos de dados NoSQL diferem da tecnologia relacional mais antiga em quatro áreas principais:

    Modelos de dados : Um database NoSQL permite criar um aplicativo sem ter que definir o esquema primeiro, diferentemente dos bancos de dados relacionais, que fazem com que você defina seu esquema antes de poder adicionar quaisquer dados ao sistema. Nenhum esquema predefinido torna os bancos de dados NoSQL mais fáceis de atualizar à medida que seus dados e requisitos mudam.

    Estrutura de dados : bancos de dados relacionais foram construídos em uma época em que os dados eram razoavelmente estruturados e claramente definidos por seus relacionamentos. Os bancos de dados NoSQL são projetados para manipular dados não estruturados (por exemplo, textos, postagens de mídia social, vídeo, e-mail), o que compõe grande parte dos dados que existem hoje.

    Dimensionamento : É muito mais barato dimensionar um database NoSQL do que um database relacional, pois é possível aumentar a capacidade dimensionando servidores commodity mais baratos. Bancos de dados relacionais, por outro lado, exigem que um único servidor hospede todo o seu database. Para escalar, você precisa comprar um servidor maior e mais caro.

    Modelo de desenvolvimento : os bancos de dados NoSQL são de código aberto, enquanto os bancos de dados relacionais geralmente são de código fechado, com taxas de licenciamento associadas ao uso de seu software. Com o NoSQL, você pode começar um projeto sem investimentos pesados ​​em taxas de software antecipadamente.