我有一个存储项目(例如web文档)的应用程序。每个项目可以包含任意大量的标签。典型的常见查询是使用给定的标签集检索所有文档。那么,一个很常见的Web应用程序。NoSQL:索引和基于关键字的搜索
现在我正在考虑将NoSQL数据库作为持久存储。各种NoSQL系统(例如MongoDB)支持辅助索引和基于关键字的搜索。显示如何在不同系统中执行操作的示例很容易找到。问题是,我想知道“底层”中发生了什么,即二级索引如何/在哪里存储,以及如何实际执行带有一列标记的查询。特别是在有许多节点的系统中。
我知道基于Map/Reduce或类似的解决方案。但在这里我很感兴趣的索引工作。例如,我有的问题是:
- 辅助索引是否仅存储项目/对象ID或更多?
- 如果一个查询包含k个标签,是否有k个子查询 - 每个标签一个 - 执行并且k个部分结果合并成一个起始节点?
哪里可以找到不同NoSQL系统的这种信息?非常感谢任何提示。
基督教
嗨泰勒,感谢您的回复和链接。演示文稿确实很有趣,也许有点太内部:)。我现在发现的是(至少)MongoDB为索引应用了基于文档的分区,即每个节点/分片/?维持它自己的本地索引。多条查询然后被发送到所有(?)节点并在本地处理。 (在我的第二个问题中描述的替代方法更适用于全局索引,即索引的基于术语的分区)。基督教再次感谢您的帮助 – Christian 2011-12-29 08:58:27