1

将字符串存储在 NoSQL 数据库中时,广泛使用的索引技术是JSON什么?XMLRedis

我知道类似数据库MongoDB已经提供了这个,但是我想了解当我将使用键值存储时如何实现这个,比如Redisor Voldemort

这样:

  • 它将允许平滑搜索或查询节点实体键或值
4

1 回答 1

1

使用纯键/值存储,您应该维护一组额外的键来模拟二级索引。

例如,您可以存储:

user:1   ->   { id:1, firstname:Bilbo, lastname:Baggins, race:hobbit }
user:2   ->   { id:2, firstname:Peregrin, lastname:Took, race:hobbit }

接着:

firstname:Bilbo   -   > [1]
lastname:Baggins     -> [1]
firstname:Peregrin   -> [2]    
lastname:Took        -> [2]
race:hobbit          -> [1,2]

要查找 hobbit 用户,获取 race:hobbit 的值,然后对于每个返回的 id,获取 user:id。

当然,对于纯键/值存储(例如 memcached),很难管理具有低基数的索引(即,给定值的大量条目)。

使用 Redis,由于它支持 set 和 hash 数据类型,因此更容易。此外,redis 集的交集/并集是使用逻辑 AND/OR 表达式实现查询的便捷方式。

另请参阅以下问题:

如何在redis中建立多对多关系

从 SQLite 移植到 Redis

Project Voldemort 还支持可用于类似目的的列表存储(前提是每个值没有太多条目)。

于 2013-04-11T09:28:23.713 回答