首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IRLBot纸鼓实现-为什么将键、值对和辅助桶分开?

IRLBot纸鼓实现-为什么将键、值对和辅助桶分开?
EN

Stack Overflow用户
提问于 2014-12-27 12:15:56
回答 1查看 313关注 0票数 2

我试图按照IRLBot纸 (相关页面从4开始)在Java中实现鼓(带有更新管理的磁盘存储库),但作为快速总结,它实际上只是对持久存储库进行批处理更新(键、值)对的一种有效方法。在链接文件中,它被用作爬虫URLSeen测试、RobotsTxt检查和DNS缓存的主干。

在c++ done 这里中有了一个很有帮助的实现,它以一种更易于理解的方式来布局架构。为了便于参考,这是来自c++实现的体系结构图:

我很难理解的部分是将(键,值)桶和辅助桶分开的原因。关于c++实现的文章声明如下:

在合并过程中,一个键/值桶被读取到一个单独的缓冲区中并进行排序。它的内容与持久存储库的内容同步。检查和更新就在此时进行。之后,将缓冲区重新排序为原来的顺序,使密钥/值对再次匹配相应的辅助桶,A调度机制随后将密钥、值和辅助性转发给后续处理和操作结果。此过程对所有桶依次重复。

那么,如果(键,值)桶的顺序需要恢复到辅助桶的顺序,以便将(键,值)对与辅助信息重新链接,为什么不将(键、值、辅助值)值保持在单数桶中?保持它们分离的原因是什么?将它们保持在一起是否更有效(因为您不再需要恢复桶的原始未排序顺序)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-31 22:48:30

在合并时间鼓上,加载相应桶的键/值磁盘文件的内容,并根据所使用的操作使用检查、更新或check+updates,该文件的每个条目都带有备份数据存储。

因此,辅助磁盘文件是不相关的,没有将辅助数据加载到内存中,只需在排序时节省一些内存占用,为了处理60亿多个条目的唯一性,哪个鼓试图最小化。如果是f.e。在RobotsCache,辅助数据甚至可以是100 be左右的每一项。然而,这只是我自己的一篇论文,如果你真的想知道为什么他们分开这两个缓冲区和磁盘文件,你应该问一下Dmitri。

我还创建了一个基于Java的鼓实现 (也是一个基于Java的IRLbot实现),但两者都可能需要更多的爱。还有一个名为鼓声的基于Java的Github项目,它扩展了Java,并提供了一个选择特性,用于存储基因组代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27667138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档