Couchdb 了解关键价值存储

Couchdb 了解关键价值存储,couchdb,key-value,Couchdb,Key Value,我正试着把我的头脑集中在像CouchDB和Cassandra这样的关键价值商店上。我理解它们为什么有用,但至于它们如何取代像MySql这样的RDBMS,我不明白 假设这是我需要存储的内容: {123456: {'model' : 'Ford' 'color': 'blue' 'MPG': 23}} 然后我需要找到所有蓝色的车 键值存储如何使用该值查询键?我读了一些可能使用map reduce的地方,但是查看一些项目的来源,我找不到一个例子 让我知道我问的

我正试着把我的头脑集中在像CouchDB和Cassandra这样的关键价值商店上。我理解它们为什么有用,但至于它们如何取代像MySql这样的RDBMS,我不明白

假设这是我需要存储的内容:

{123456: {'model' : 'Ford'
          'color': 'blue'
          'MPG': 23}}
然后我需要找到所有蓝色的车

键值存储如何使用该值查询键?我读了一些可能使用map reduce的地方,但是查看一些项目的来源,我找不到一个例子


让我知道我问的问题是否正确

您可能希望维护一个单独的键/值存储,它本质上是一个索引。它将以“蓝色”作为键,然后列出“主”汽车商店中所有蓝色ID的列表

是的,这是复制常规rdbms的索引功能

这是一篇很好的文章,介绍了FriendFeed团队如何处理这个问题并解决这个解决方案,以及他们的基本原理(我知道,有点奇怪,因为他们使用RDBMS作为键/值存储,但讨论的要点是合理的理论):

本质上,当您使用键值存储时,您是在用关系数据库内部具有的相同组件构建数据库。这样做的原因是为了对缩放和性能有更多的控制和灵活性,或者只是为了直截了当

在这种情况下,您需要将表行和索引的等价物存储为两个独立的东西。所以,如果您想在颜色上建立索引,那么您需要存储

{'blue': {123456}}
在相当于索引表中


当然,一些键值存储为您提供索引和搜索机制,因此没有适用于所有键值存储的通用规则

它需要:{{'color':'blue'}:[123456]}否则它怎么知道blue指的是什么。文本呢?{'Lorem ipsum dolor sit amet,Concertetuer Adipising Elite…':[123456]}键值存储可以像搜索一样吗?我假设索引将只包含颜色作为键。此操作的详细信息取决于您将要使用的键值存储。你在回答中提到了两个不同的问题,所以我认为这个问题更像是一个一般的键值存储问题。Redis、Hadoop、Tokyo Cabinet、Metakit、Berkeley db、gdbm都为键值存储提供了不同的功能。