实际上,每当我搜索某些NoSQL数据库系统中使用的键值存储时,我都会遇到如下定义:“每个值都有自己唯一的键,值根据其键存储。”
但是,我无法理解这个数据库系统的子结构。
我们可以说键值存储是c ++中的哈希映射,值是原始类型还是对象?
答案 0 :(得分:1)
这取决于您正在谈论的键值存储类型。
如果采用例如gdbm,它与C ++中的hasmap非常相似,除了键和值必须是字节。如果要存储更复杂的数据结构,则必须对它们进行序列化。在这种数据库中,AFAIK没有太多的模式可供使用。
还有 Ordered 键值存储,其中字典键按键使用lexicographic order排序。在这种情况下有各种模式。它们都依赖于构建密钥的密钥组合,以便利用键值存储提供的前缀搜索和快速next / prev查找。它还依赖于为单个记录创建多个键值对。
有关详细信息,请参阅我对该主题的回答:
也就是说,使用有线键值存储时,所有这些模式都更加明确,请参阅Schema, Columns, Column Groups, Indices and Projections in wiredtiger documentation