2012-02-20 69 views
0

我打算开发一个服务器应用程序来支持和处理hign卷数据迁移。如何使用java管理文件系统上的索引

想象一下,这是一个基于队列的平台,其中客户端程序(从内容管理系统提取元数据的源代理程序)将向服务器发送数据包(大小约为1KB),服务器将这些数据包存储在其指定的文件系统。

服务器将根据来自数据包的一些头信息对数据包进行分类,并且应该能够在使用某些头信息查询时检索并返回合适的数据包。

我们可以用标准的DBMS执行此,如果元数据被正确定义,但我的情况下,数据包报头信息,将在改变了一段时间,我不想经常重新设计我的数据库。

我在这里看到的挑战是有效地将数据包文件存储在文件系统中(这样它就不会影响文件服务器的性能),并且还维护一个索引信息,用于在请求时定位适当的数据包。

我正在考虑使用任何非DBMS开源框架(基于Java - NoSQL的?),可满足上述目的。根据源存储库的容量,数据包的数量可以从几千到几百万不等。

欣赏您的输入。

+0

的数据量不应该是一个问题的情况下,但你找什么类型的索引呢?通过数字标识或文本标签简单查找,或者什么? – DNA 2012-02-20 23:06:00

+0

是的,简单地查看每个数据包的一些标签具有文件名,类型,大小等,是否有任何开源框架提供可搜索的索引存储? – 2012-02-21 06:23:41

回答

0

面向列的数据库,如Apache Cassandra可以处理这种情况 - 在卡桑德拉提供的索引是比较基本的,但很可能是为您的方案确定。几百万个1KB值将是Cassandra的一个非常小的数据集,应该没有问题。

其他元数据列可以与主要数据包一起写入;列名可以在需要时即时决定,所以这将允许您的标题格式发展。

在卡桑德拉的数据被写入磁盘中不可改变“SSTables”以有效的方式之前被收集在内存中的表。它也立即被写入commitlog以提供耐用性死机等