Pergunta

Eu estou tentando envolver minha cabeça em torno lojas Chave-Valor como CouchDB e Cassandra. Eu entendo por que eles são úteis, mas, tanto quanto como eles substituem um RDBMS como MySql, eu não consegui-lo.

Vamos dizer que este é o meu que eu preciso para armazenar:

{123456: {'model' : 'Ford'
          'color': 'blue'
          'MPG': 23}}

Então eu preciso encontrar todos os carros que são azuis.

Como é que a loja Key-Value consulta as chaves usando o valor? Eu li em algum lugar pode ser usado que Map-Reduce mas olhando para a fonte de alguns projectos não consigo encontrar um exemplo.

Deixe-me saber se eu estou pedindo a pergunta certa.

Foi útil?

Solução

Essencialmente, quando você estiver usando lojas de valor-chave, você está construindo uma base de dados com os mesmos componentes que um banco de dados relacional tem internamente. A razão para fazer isso é ter mais controle e flexibilidade sobre dimensionamento e desempenho, ou apenas por simplicidade.

Neste caso, você precisa armazenar o equivalente das linhas da tabela e o índice como duas coisas separadas. Então, se você deseja indexar na cor, então você precisa loja

{'blue': {123456}}

no equivalente de uma tabela de índice.

É claro, algumas lojas de valor-chave fornecem indexação e busca mecanismos para você, assim não há nenhuma regra geral que cabe tudo.

Outras dicas

Você gostaria de manter um armazenamento de chave / valor separado que é essencialmente um índice. Ele teria "azul" como a chave e, em seguida, uma lista de todos os IDs do "principais" carros loja que são azuis.

Sim, isso é duplicar a funcionalidade índice de um RDBMS regulares.

Este é um bom artigo sobre como a equipe FriendFeed abordado este problema e estabeleceu-se sobre esta solução, juntamente com a sua lógica (eu sei, um pouco estranho, já que eles usaram um RDBMS como um armazenamento de chave / valor, mas os pontos de discussão são teoria de som):
http://bret.appspot.com/entry/how-friendfeed-uses- mysql

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top