如何使用java在文件系统上管理带索引的文件

时间:2012-02-20 22:44:24

标签: java indexing filesystems nosql

我计划开发一个服务器应用程序来支持和处理高容量数据迁移。

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

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

如果正确定义了元数据,我们可以使用标准DBMS轻松执行此操作,但在我的情况下,数据包标题信息将在一段时间内发生变化,我不想经常重新设计我的数据库。

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

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

感谢您的投入。

1 个答案:

答案 0 :(得分:0)

面向列的数据库(如Apache Cassandra)可以处理这种情况 - Cassandra中提供的索引是相对基本的,但对于您的方案可能没问题。数百万个1KB的值对于Cassandra来说是一个相当小的数据集,应该没问题。

可以在主数据包旁边写入其他元数据列;如果需要,可以即时决定列名,因此这将允许您的标题格式发展。

Cassandra中的数据被收集在内存表中,然后以有效的方式在不可变的“SSTables”中写入磁盘。它也会立即写入commitlog,以便在发生崩溃时提供持久性等。