Recentemente NoSQL ganhou imensa popularidade.
Quais são as vantagens do NoSQL sobre o RDBMS tradicional ?
Recentemente NoSQL ganhou imensa popularidade.
Quais são as vantagens do NoSQL sobre o RDBMS tradicional ?
Respostas:
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 derrubar o SQL ou substituí-lo.
O SQL tem várias vantagens muito grandes:
Aqueles não foram embora.
É um erro pensar nisso como um argumento de um ou outro. NoSQL é uma alternativa que as pessoas precisam considerar quando se encaixa, só isso.
Os documentos podem ser armazenados em bancos de dados não relacionais, como o CouchDB.
Talvez ler isso ajude.
SELECT blob FROM images WHERE blob CONTAINS('red car')
. Portanto, enquanto você pode armazenar os dados brutos no banco de dados, não é possível pesquisá-los sem anexar metadados. Os módulos de pesquisa de texto completo nos sistemas RDBMS preenchem parte da lacuna semi-estrutural.
A história parece assim:
O Google precisa de uma camada de armazenamento para o índice de pesquisa invertido. Eles acham que um RDBMS tradicional não será suficiente. Portanto, eles implementam um armazenamento de dados NoSQL, BigTable, sobre o sistema de arquivos GFS. A maior parte é que milhares de máquinas baratas de hardware de commodities fornecem a velocidade e a redundância.
Todo mundo percebe o que o Google acabou de fazer.
O teorema do CAP de cervejeiros é comprovado. Todos os sistemas de uso RDBMS são sistemas CA. As pessoas começam a brincar também com os sistemas CP e AP. As lojas K / V são muito mais simples, por isso são o principal veículo da pesquisa.
Os sistemas de software como serviço em geral não fornecem um armazenamento semelhante ao SQL. Portanto, as pessoas se interessam mais pelas lojas do tipo NoSQL.
Acho que boa parte da decolagem pode estar relacionada a essa história. Escalonamento O Google adotou novas idéias no Google e todo mundo segue o exemplo, porque esta é a única solução que eles conhecem para o problema de escalonamento no momento. Portanto, você está disposto a refazer tudo o que se refere à idéia de banco de dados distribuído do Google, porque é a única maneira de escalar além de um determinado tamanho.
C - Consistência
A - Disponibilidade
P - Tolerância de partição
K / V - Chave / Valor
O NoSQL é melhor que o RDBMS devido aos seguintes motivos / propriedades do NoSQL
EDITAR:
Para responder "por que o RDBMS não pode ser dimensionado", consulte as despesas gerais do RDBMS PDF do 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 Terabytes e Peta bytes . Mesmo se você tiver uma matriz redundante de discos independentes / baratos (RAID) e trituração de dados, ela não será dimensionada bem para um grande volume de dados. Você precisa de hardware muito caro.
Log : A montagem de registros de log e o rastreamento de todas as alterações nas estruturas do banco de dados diminuem o desempenho. O registro 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 bifásico tradicional representa uma sobrecarga considerável, pois todos os acessos às estruturas de banco de dados são governados por uma entidade separada, o Gerenciador de Bloqueios.
Travamento : em um banco de dados multithread, muitas estruturas de dados precisam ser travadas antes que possam ser acessadas. A remoção desse recurso e a adoção de uma abordagem de thread único causa um impacto perceptível no desempenho.
Gerenciamento de buffer : um sistema de banco de dados de memória principal não precisa acessar páginas através de um buffer pool, eliminando um nível de indireção em cada acesso ao registro.
Isso não significa que precisamos usar o NoSQL sobre SQL.
Ainda assim, o RDBMS é melhor que o NoSQL pelos seguintes motivos / propriedades do RDBMS
Temos que usar RDBMS (SQL) e NoSQL (não apenas SQL), dependendo do caso de negócios e requisitos
O NOSQL não possui vantagens especiais sobre o modelo de banco de dados relacional. O NOSQL trata de certas limitações dos DBMSs SQL atuais, mas não implica nenhum recurso fundamentalmente novo em relação aos modelos de dados anteriores.
NOSQL significa apenas nenhum SQL (ou "não apenas SQL"), mas isso não significa o mesmo que nenhum relacional . Um banco de dados relacional, em princípio, seria uma solução NOSQL muito boa - apenas que nenhum dos conjuntos atuais de produtos NOSQL usa o modelo relacional.
O RDBMS se concentra mais no relacionamento e o 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 .
Os bancos de dados NoSQL podem ser escalonados facilmente para muitos nós, mas para RDBMS é muito difícil.
A escalabilidade não apenas oferece mais espaço de armazenamento, mas também um desempenho muito mais alto, pois muitos hosts funcionam ao mesmo tempo.
Apenas adicionando a todas as informações fornecidas acima
Vantagens NoSql:
1) O NoSQL é bom se você deseja estar pronto para a produção rapidamente, devido ao seu suporte à arquitetura sem esquema e orientada a objetos.
2) Os NoSql db são eventualmente consistentes, o que em linguagem simples significa que eles não fornecerão nenhum bloqueio nos dados (documentos), como no caso do RDBMS, e o que isso significa é que o último instantâneo de dados está sempre disponível e aumenta a latência do seu aplicativo .
3) Utiliza a estratégia MVCC (Multi view concurrency control) para manter e criar instantâneos de dados (documentos).
4) Se você deseja ter dados indexados, pode criar uma exibição que indexará automaticamente os dados pela definição de exibição que você fornecer.
Desvantagens NoSql:
1) Definitivamente, não é adequado para grandes aplicativos transacionais pesados, pois é eventualmente consistente e não suporta propriedades ACID.
2) Além disso, ele cria vários snapshots (revisões) dos seus dados (documentos), pois usa a metodologia MVCC para controle de simultaneidade, como resultado de qual espaço é consumido mais rapidamente do que antes, o que torna a compactação e, portanto, a reindexação mais frequente, além de diminuir a velocidade do seu resposta do aplicativo à medida que os dados e transações em seu aplicativo aumentam. Para combater isso, você pode dimensionar horizontalmente os nós, mas, novamente, será um custo mais alto do que comparar o banco de dados sql.
From mongodb.com :
Os bancos de dados NoSQL diferem da tecnologia relacional mais antiga em quatro áreas principais:
Modelos de dados : um banco de dados NoSQL permite criar um aplicativo sem ter que definir o esquema primeiro, ao contrário dos bancos de dados relacionais, que fazem você definir seu esquema antes de poder adicionar quaisquer dados ao sistema. Nenhum esquema predefinido facilita a atualização dos bancos de dados NoSQL à medida que seus dados e requisitos mudam.
Estrutura dos dados : os bancos de dados relacionais foram construídos em uma época em que os dados eram bastante estruturados e claramente definidos por seus relacionamentos. Os bancos de dados NoSQL são projetados para lidar com dados não estruturados (por exemplo, textos, postagens de mídia social, vídeo, email), que compõem grande parte dos dados que existem hoje.
Escalonamento : é muito mais barato escalar um banco de dados NoSQL do que um banco de dados relacional, porque você pode aumentar a capacidade escalonando em servidores básicos e baratos. Os bancos de dados relacionais, por outro lado, exigem um único servidor para hospedar todo o banco de dados. 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 incluídas no uso de seu software. Com o NoSQL, você pode iniciar um projeto sem grandes investimentos em taxas de software antecipadamente.