将字符串存储在 NoSQL 数据库中时,广泛使用的索引技术是JSON
什么?XML
Redis
我知道类似数据库MongoDB
已经提供了这个,但是我想了解当我将使用键值存储时如何实现这个,比如Redis
or Voldemort
。
这样:
- 它将允许平滑搜索或查询节点实体键或值
使用纯键/值存储,您应该维护一组额外的键来模拟二级索引。
例如,您可以存储:
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 表达式实现查询的便捷方式。
另请参阅以下问题:
Project Voldemort 还支持可用于类似目的的列表存储(前提是每个值没有太多条目)。