NoSQL数据库设计偏重性能和可扩展性,设计的键值存储仅仅提供通过主键或一些id字段查找的功能,往往忽略丰富的动态查询功能。部分数据存储(如文档数据库CouchDB和MongoDB)允许某些复杂查询。
许多NoSQL数据库基于DHT (Distributed Hash Table分散哈希表)模型。数据库根据提供的对象主键进行相等匹配。
NoSQL常见查询模型
查询模型 | 模型说明 | |
1 | 结合SQL数据库 | 将NoSQL数据库拷贝到关系数据库或者文本数据库来提供查询能力。可以仅将要查找的属性存到数据库中。 |
2 | 分散/集合本地搜索 | 提供本地数据库内的索引和查询处理机制。 让查询处理器将查询广播到DHT中的所有节点,在每个节点上将会并行地执行查询,并将结果返回查询处理器,然后将结果聚集成单一响应。 |
3 | 分布式B+树 | B+树是一种用在关系型数据库管理系统中常见的索引结构。B+树分布式版本可以用在DHT环境中。其基本思路是定位B+树的根节点哈希要搜索的属性。 |
4 | 前缀哈希表/分布式Tree | 前缀哈希表(Prefix Hash Table, PHT分布式Trie)是一个树形数据结构。从根节点到叶子的每一条路径上均包含了键值前缀,并且每个Trie中的节点都包含了它是谁的前缀的所有数据。 |