Database 具有URI/URL键的节省空间的地图/字典/数据库
我正在寻找一个满足某些属性的节省空间的键值映射/字典/数据库:Database 具有URI/URL键的节省空间的地图/字典/数据库,database,url,dictionary,map,uri,Database,Url,Dictionary,Map,Uri,我正在寻找一个满足某些属性的节省空间的键值映射/字典/数据库: 格式:密钥将由http(s)URI表示。这些值将是可变长度的二进制数据 大小:将有10-1000亿个唯一密钥(平均长度60-70字节)。值最初只有几十个字节,但最终可能会增长到几十KB(如果我决定存储多个版本,可能会更大)。数据的总大小将以TB或PB为单位 硬件:数据必须分布在多台机器上。此分发版应确保来自特定域的所有URI最终位于同一台计算机上。此外,机器上的数据必须根据访问频率在RAM、SSD和HDD之间分配。随着机器从集群中
- 格式:密钥将由http(s)URI表示。这些值将是可变长度的二进制数据
- 大小:将有10-1000亿个唯一密钥(平均长度60-70字节)。值最初只有几十个字节,但最终可能会增长到几十KB(如果我决定存储多个版本,可能会更大)。数据的总大小将以TB或PB为单位
- 硬件:数据必须分布在多台机器上。此分发版应确保来自特定域的所有URI最终位于同一台计算机上。此外,机器上的数据必须根据访问频率在RAM、SSD和HDD之间分配。随着机器从集群中添加或删除,数据将不得不四处移动。最初不需要复制,但以后可能会有用
- 访问模式:我需要对数据进行顺序和(某种程度上)随机访问。顺序访问将来自连续扫描数据的低优先级批处理。在这种情况下,吞吐量比延迟重要得多。理想情况下,迭代将按字典顺序进行(即字典顺序)。随机访问是由于访问HTML页面中的URI而产生的,我希望其中大多数都指向与页面来自同一域的URI,因此将位于同一台机器上,而其他URI将位于不同的机器上。我预计每秒最多需要100000到1000000次内存随机访问。数据不是静态的。读取的频率将比写入的频率高一到两个数量级
谢谢,很抱歉这么冗长;) 根据使用情况,可能会选择存储ip地址而不是http URI的模式部分的预期寿命和质量要求。这将有一个额外的好处,即密钥前缀的长度不变(ipv4/6为32/128位)。可以使用位掩码来实现字典领域的分区。强烈的警告当然是ip和dns名称之间的映射不是静态的。