我正试图围绕像CouchDB和Cassandra这样的Key-Value商店。我明白为什么它们很有用但是就它们如何替换像MySql这样的RDBMS而言,我不明白它。

让我们说这是我需要存储的内容:

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

然后我需要找到所有蓝色的汽车。

Key-Value商店如何使用该值查询密钥?我读了一些可以使用map-reduce的地方,但是看了几个项目的来源,我找不到一个例子。

如果我问的是正确的问题,请告诉我。

有帮助吗?

解决方案

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

在这种情况下,您需要将表行和索引的等效项存储为两个单独的东西。因此,如果要对颜色进行索引,则需要存储

{'blue': {123456}}

相当于索引表。

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

其他提示

您可能希望维护一个基本上是索引的单独键/值存储。它将具有“蓝色”。作为密钥,然后是来自“主”的所有ID的列表。汽车店是蓝色的。

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

这是一篇很好的文章,讲述了FriendFeed团队如何解决这个问题,并确定了这个解决方案及其基本原理(我知道,因为他们使用RDBMS作为键/值存储而有点奇怪,但谈话要点是声音理论):
http://bret.appspot.com/entry/how-friendfeed-uses- MySQL的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top