我正在寻找一种简单的方法来存储和检索数百万个xml文件。目前一切都在文件系统中完成,这存在一些性能问题。我们的要求是:能够在批处理过程中存储数百万个xml文件。XML文件可能有几兆大,大多数在100KB范围内。通过ID进行非常快速的随机查找(例如文档URL)可通过Java和Perl访问在最重要的Linux发行版和Windows上可用我确实看过几个NoSQL平台(例如CouchDB、Riak和其他),虽然这些系统看起来很棒,但它们似乎有点矫枉过正:无需聚类不需要守护进程(“服务”)不需要巧妙的搜索功能在深入研究Riak之后,我发现了Bitcask(参见intro),这似乎正是我想要的。介
翻译论文来源:bitcask-intro.pdf(riak.com)背景介绍Bitcask的起源与Riak分布式数据库的历史紧密相连。在Riak的K/V集群中,每个节点都使用了可插拔的本地存储;几乎任何结构的K/V存储都可以用作每个主机的存储引擎。这种可插拔性使得Riak的处理能够并行化,从而可以在不影响代码库其他部分的情况下改进和测试存储引擎。有很多类似的本地K/V存储系统,包括但不限于BerkeleyDB、TokyoCabinet和Innostore。在评估此类存储引擎时,我们想实现的目标包括:读取或写入每个项目的低延迟高吞吐量,尤其是在写入随机项目的传入流时处理比RAM大得多的数据集的能
Riak是一个专注于分布式存储的公司,他们想打造一个新的存储引擎,该引擎要能实现以下几个目标:读写数据时,延迟要低;高吞吐量;能够在不降低性能的前提下,处理超过内存容量的数据集;具备从崩溃中快速恢复的能力,并且不丢数据;简单的备份和恢复策略;代码结构和数据格式相对简单且易于理解;即使面临大数据集,性能依旧不受影响;拥有简单的授权机制,能够和Riak的其它系统轻松集成;当时Riak团队只能找到满足部分条件的存储引擎,而这不是Riak团队想要的,于是他们从头设计了一个存储引擎,也就是Bitcask。Bitcask在概念上非常简单,一个Bitcask实例就是一个目录,并且规定同一时刻只能有一个进程操
Riak是一个专注于分布式存储的公司,他们想打造一个新的存储引擎,该引擎要能实现以下几个目标:读写数据时,延迟要低;高吞吐量;能够在不降低性能的前提下,处理超过内存容量的数据集;具备从崩溃中快速恢复的能力,并且不丢数据;简单的备份和恢复策略;代码结构和数据格式相对简单且易于理解;即使面临大数据集,性能依旧不受影响;拥有简单的授权机制,能够和Riak的其它系统轻松集成;当时Riak团队只能找到满足部分条件的存储引擎,而这不是Riak团队想要的,于是他们从头设计了一个存储引擎,也就是Bitcask。Bitcask在概念上非常简单,一个Bitcask实例就是一个目录,并且规定同一时刻只能有一个进程操