Data structures 用于存储双向关系的数据结构

Data structures 用于存储双向关系的数据结构,data-structures,Data Structures,我在谷歌上搜索过,找不到任何DS可以在O(1)时间内存储和读取双向数据。例如书籍和作家。有了书的名字,就必须找到作者。有了作者的名字,就必须找到书 在数据库中,这些关系(如联接表)是如何存储的 提前感谢。这个想法是以下几点的结合: 第一个元素到第二个元素的哈希映射(或它们的列表) 第二个元素到第一个元素的哈希映射(或它们的列表) 给出预期的O(1)查找 不过,据我所知,我不认为数据库通常使用哈希映射(提供O(logn)性能)。扩展Dukeling的答案,我相信Google有一个名为HashB

我在谷歌上搜索过,找不到任何DS可以在O(1)时间内存储和读取双向数据。例如书籍和作家。有了书的名字,就必须找到作者。有了作者的名字,就必须找到书

在数据库中,这些关系(如联接表)是如何存储的


提前感谢。

这个想法是以下几点的结合:

  • 第一个元素到第二个元素的哈希映射(或它们的列表)
  • 第二个元素到第一个元素的哈希映射(或它们的列表)
给出预期的O(1)查找


不过,据我所知,我不认为数据库通常使用哈希映射(提供O(logn)性能)。

扩展Dukeling的答案,我相信Google有一个名为HashBiMap的实现:

谢谢。我将检查b树,相信Teradata和SQL Server内存中的表使用哈希索引FWIW。哈希表的问题是:它使用了N个内存空间(哈希值的大小);仅基于散列值存储大型数据库索引要么需要巨大的数据磁盘,要么在冲突频繁发生时重新定位数据。RB-tree或b-tree可能会改善这一点。