Banco de dados relacional vs NoSql

Respostas:

123

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:

  1. Forte base matemática.
  2. Sintaxe declarativa.
  3. Uma linguagem conhecida na linguagem de consulta estruturada (SQL).

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.

duffymo
fonte
10
Você poderia dar alguns exemplos de dados não relacionais?
user496949
7
Documentos e imagens também podem ser armazenados no RDBMS, como SQL Server e Oracle? Então por que NoSQL?
user496949
2
Dados semiestruturados são uma dessas classes. Ele contém XML, Emails, JSON, etc. Consulte a página da Wikipedia. A regra geral é que a estrutura existe, mas é vagamente definida e dinamicamente extensível (os últimos tendem a se classificar com o modelo relacional - e, embora não seja impossível modelar, é definitivamente complicado). Outra classe é "dados naturais": um romance, uma imagem, ambos sem metadados anexados.
DU RESPOSTAS DE EXCREMENTO
2
Bem, você não pode fazer 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.
DU RESPOSTAS DE EXCREMENTO
1
@duffymo: Os documentos não são "não relacionais". Os documentos geralmente são armazenados em DBMSs SQL e você não precisa de um DBMS NOSQL para isso. De fato, os bancos de dados NOSQL geralmente usam modelos de dados que são menos gerais e mais limitados em aplicativos que o modelo relacional. Por exemplo, bancos de dados gráficos. O tipo de dados que está sendo armazenado não explica nenhuma vantagem do NOSQL.
Nvogel
98

A história parece assim:

  1. 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.

  2. Todo mundo percebe o que o Google acabou de fazer.

  3. 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.

  4. 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

EU RESPONDO AO CRAP
fonte
10
O que é CAP, CP, AP, K / V?
knownasilya
3
Consulte o Teorema da CAP na Wikipedia. CA e CP decorre daí. K / V é a abreviação de Chave / Valor, um mapeamento finito (distribuído) de chaves em valores.
DUO RESPOSTAS DE EXCREMENTO
" Todo mundo percebe o que o Google acabou de fazer. " Parece uma resposta escocesa para mim (aka NÃO CRAP).
Ruffin
38

O NoSQL é melhor que o RDBMS devido aos seguintes motivos / propriedades do NoSQL

  1. Ele suporta dados semiestruturados e dados voláteis
  2. Não possui esquema
  3. O rendimento de leitura / gravação é muito alto
  4. A escalabilidade horizontal pode ser alcançada facilmente
  5. Apoiará o 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 cache na memória está disponível para aumentar o desempenho das consultas
  9. Ciclos de vida de desenvolvimento mais rápidos para desenvolvedores

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

  1. Transações com propriedades ACID - Atomicidade, Consistência, Isolamento e Durabilidade
  2. Adesão ao Esquema Forte de dados sendo gravados / lidos
  3. Gerenciamento de consultas em tempo real (no caso de tamanho de dados <10 Tera bytes)
  4. Execução de consultas complexas envolvendo junção e agrupamento por cláusulas

Temos que usar RDBMS (SQL) e NoSQL (não apenas SQL), dependendo do caso de negócios e requisitos

Ravindra babu
fonte
2
Vale ressaltar que alguns bancos de dados NoSQL suportam transações ACID.
Dave Cassel
15

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.

nvogel
fonte
4
Parece que, na recente O'Reilly Strata Conference, Mark Madsen cunhou uma nova interpretação do "NoSQL" em sua história de bancos de dados em notação para substituir o "Not Only SQL". Agora é: "Não, SQL" ;-)
Lukas Eder
4

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.

suiwenfeng
fonte
4

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.

Jon
fonte
3

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

OU

Se o modelo de dados não for predeterminado

então

O banco de dados NoSQL é uma escolha melhor.

Chris
fonte
2

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.

Manvendra Jina
fonte
1

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.

piscina morta
fonte