2

我有许多相当大的二进制文件(固定长度的记录,其布局在另一个 -<strong>textual- 文件中描述)。数据文件可以达到 6 GB。布局文件(cobol copybooks)很小,通常小于 5 KB。

所有数据文件都集中在 GNU/Linux 服务器中(尽管它们是在大型机中生成的)。

我需要为测试人员提供编辑这些二进制文件的方法。有一个名为 RecordEdit ( http://record-editor.sourceforge.net/ ) 的免费产品,但它有两个严重的缺点:

  1. 它迫使测试人员通过 SFTP 下载大文件,每次稍作更改时才再次上传。非常 低效。

  2. 它将整个文件加载到工作内存中,除了相对较小的数据文件外,它对所有文件都无用。

我想到的是基于 Java 的客户端/服务器架构:

  • 服务器将运行一个永久进程,监听来自客户端的面向版本的请求。此类请求将包括以下内容

    • 返回可用文件列表

    • 锁定特定文件以供编辑

    • 修改该记录中的此数据

    • 返回第 n 页记录

    等等……</p>

  • 客户端可以采用任何形式(基于 RCP 的桌面——这是我的第一个候选者——、同一服务器中的ncurses、中间 Web 应用程序……)只要它能够向服务器发送请求。

为了实现该方案,我一直在探索 NIO(因为它的缓冲区)和 MINA(因为协议透明性)。但是,在进一步推进这项工作之前,我想收集您的专家意见。

我的方法是解决问题的合理方法吗?

使用我正在考虑的语言和框架是否可行?方便吗?

您是否知道与我正在尝试做的事情相似或与之相关的任何模式、蓝图、成功案例或开放项目?

4

3 回答 3

2

正如我所看到的,这里的棘手之处在于解码服务器上的文件。一旦你写了,它应该很容易。

我建议,无论您在客户端使用什么,它基本上都应该上传该人更改的“差异”。

为这些数据制作类似于数据库(或使用现有数据库)的东西是否有意义?还是它太多了?

根据需要执行此操作的人数,快速而简单的解决方案是通过 X 转发运行程序——这消除了许多问题……只要该服务器有相当多的可用 RAM。

于 2010-06-28T22:21:21.360 回答
1

您是否考虑过使用像OpenAFS这样的分布式文件系统?那应该能够处理非常大的文件。然后,您可以编写一个客户端应用程序来编辑文件,就好像它们是本地的一样。

于 2010-06-29T06:10:27.310 回答
1

我的方法是解决问题的合理方法吗?

海事组织,是的。

使用我正在考虑的语言和框架是否可行?

我认同。但还有其他选择。例如:

  • 将记录放入数据库,并通过文件名+记录号组成的键进行访问。可能是一个完整的 RDBMS,或更轻量级的解决方案。

  • 使用 HTML + javascript 实现的 UI 实现为 RESTful Web 服务。

  • 使用可扩展的分布式文件系统实现。

此外,根据您的描述,似乎并不迫切需要使用高度可扩展/独立传输的层……除非您需要同时支持数百个用户。

方便吗?

方便谁?如果您谈论的是开发人员,这取决于您是否已经熟悉这些框架。

于 2010-06-29T06:12:43.397 回答