我正在寻找一个节省空间的键值映射/字典/数据库,它满足某些属性:
最初,数据将由1亿到10亿个网址组成,每个网址有几十个字节的数据。它将托管在少量便宜的商用服务器上,具有10-20GB的RAM和几TB的硬盘。在这种情况下,将占用大部分空间来存储密钥和索引信息。出于这个原因,并且因为我预算紧张,我正在寻找能够在尽可能小的空间内存储这些信息的东西。特别是,我希望利用许多URI共享的公共前缀。通过这种方式,我相信可以将密钥和索引存储在比URI的总长度更小的空间中。
我已经研究了几种传统的数据结构(例如哈希映射,自平衡树(例如红黑,AVL,B),尝试)。只有尝试(有一些技巧)似乎有可能减少索引和键的大小(除了索引之外所有其他存储键)。我想到的最有希望的选择是将URI分成几个组件(例如example.org/a/b/c?d=e&f=g变成类似[example,org,a,b,c,d] = e,f = g])。各种组件都会在树状结构的后续级别中为子项编索索引,类似于文件系统。这似乎有利可图,因为许多URI共享相同的域和目录前缀。
不幸的是,我对各种数据库产品知之甚少。据我所知,他们中的很多人使用B树来索引数据。据我了解,索引和键所需的空间超过了URL的总长度。
所以,我想知道是否有人可以提供任何数据结构或数据库的指导,这些数据结构或数据库可以利用URI中的冗余来节省空间。其他的东西不太重要,但任何帮助都会受到赞赏。
谢谢,对于冗长而感到抱歉;)