NoSQL 数据库系统中的键值存储

Key Value Store in NoSQL Database Systems

实际上,每当我搜索一些 NoSQL 数据库系统中使用的键值存储时,我都会遇到这样的定义:"Each value has its own unique key and values are stored depending on their keys."

但是,我无法理解这个数据库系统的子结构。

我们可以说键值存储是c++中的哈希映射,值可以是原始类型或对象吗?

这取决于您所使用的键值存储类型。

如果你举个例子gdbm,它与C++中的hasmap非常相似,除了键和值必须是字节。如果你想存储更复杂的数据结构,你必须序列化它们。在这种数据库中,AFAIK 没有多少模式可以使用。

还有 Ordered 键值存储,其中字典键使用 lexicographic order 按键排序。在这种情况下有多种模式。它们都依赖于以某种方式构建键的键组合,以利用键值存储提供的前缀搜索和快速 next/prev 查找。它还依赖于为单个记录创建多个键值对。

有关更多信息,请参阅我对该主题的回答:

  • How to store list in key-value store
  • Expressing multiple columns in berkeley db in python?
  • How to give multiple values to a single key using a dictionary?

也就是说,使用 wiredtiger 键值存储时,所有这些模式都变得更加明确,请参阅 Schema, Columns, Column Groups, Indices and Projections in wiredtiger documentation