O que significa “orientado a documento” x valor-chave quando se fala em MongoDB x Cassandra?


Respostas:


153

Um armazenamento de valor-chave fornece o modelo de dados mais simples possível e é exatamente o que o nome sugere: é um sistema de armazenamento que armazena valores indexados por uma chave. Você está limitado à consulta por chave e os valores são opacos , a loja não sabe nada sobre eles. Isso permite operações de leitura e gravação muito rápidas (um acesso simples ao disco) e vejo esse modelo como uma espécie de cache não volátil (ou seja, bem adequado se você precisa de acessos rápidos por chave para dados de longa duração).

Um banco de dados orientado a documentos estende o modelo anterior e os valores são armazenados em um formato estruturado (um documento, daí o nome) que o banco de dados pode entender. Por exemplo, um documento pode ser uma postagem de blog e os comentários e as tags armazenados de forma não normalizada. Como os dados são transparentes , a loja pode fazer mais trabalho (como campos de indexação do documento) e você não está limitado à consulta por chave. Como sugeri, esses bancos de dados permitem buscar os dados de uma página inteira com uma única consulta e são adequados para aplicativos orientados a conteúdo (é por isso que grandes sites como Facebook ou Amazon gostam deles).

Outros tipos de bancos de dados NoSQL incluem armazenamentos orientados a colunas , bancos de dados gráficos e até bancos de dados de objetos . Mas isso vai além da questão.

Veja também


2
Os armazenamentos de valores-chave não precisam ser feitos com um acesso ao disco e chamá-los de não voláteis é incorreto em algumas implementações. Você pode criar um armazenamento de valor-chave na memória sem write-through ou write-back em um meio de armazenamento não volátil. Chamar os dados de vida longa também é enganoso, porque a vida útil dos dados não tem nada a ver com a maneira como você os recupera.
Anthony

17

Bem, estive investigando o NoSQL por conta própria no mês passado. Eu acho que geralmente poderia ser declarado algo como

  • As lojas KV não sabem do conteúdo do valor realmente armazenado para uma chave
  • Com base em documento, você pode definir índices secundários dentro do conteúdo do valor, pois o banco de dados conhece a estrutura do documento (por exemplo, tags de uma postagem de blog).
  • Cada solução NoSQL tem características específicas que devem ser levadas em consideração, como
    • Tipos de dados especiais em uma loja KV (por exemplo, conjuntos com pop / push esquerdo / direito como no redis)
    • fácil escalar para cima / para baixo do cluster como riak diz que tem (eu não tentei ... ainda)
    • armazenamento de dados conectável como em Voldemort
    • configuração da web integrada e suporte a aplicativo da web como em CouchDB / couchapp

2

Um banco de dados orientado a documentos, ou armazenamento de documentos, serve para armazenar, recuperar e gerenciar informações orientadas a documentos, que são dados semiestruturados. O armazenamento de valores-chave é herdado do banco de dados Orientado a Documentos. A diferença está na forma como os dados são processados; em um armazenamento de valor-chave, os dados são considerados inerentemente opacos para o banco de dados, enquanto um sistema orientado a documentos depende da estrutura interna do documento para extrair metadados que o mecanismo de banco de dados usa para otimização posterior.

Se tratarmos da diferença entre MOngoDb e Cassandra. O MongoDB atua como um banco de dados relacional. Seu modelo de dados consiste em um banco de dados no nível superior, em seguida, coleções que são como tabelas no MySQL (por exemplo) e, em seguida, documentos que estão contidos na coleção, como linhas no MySQL. Cada documento possui um campo e um valor semelhante a colunas e valores no MySQL. Os campos podem ser chave / valor simples, por exemplo, {'nome': 'David Mytton'}, mas também podem conter outros documentos, por exemplo, {'nome': {'primeiro': David, 'último': 'Mytton'}}. No Cassandra, os documentos são conhecidos como “colunas”, que são, na verdade, apenas uma única chave e valor. por exemplo, {'chave': 'nome', 'valor': 'David Mytton'}. Há também um campo de carimbo de data / hora para replicação interna e consistência. O valor pode ser um único valor, mas também pode conter outra “coluna”. Essas colunas existem em famílias de colunas que ordenam os dados com base em um valor específico nas colunas, referenciado por uma chave.

Mas, no nível superior, há um keyspace, que é semelhante ao banco de dados MongoDB.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.