我有一些相当大的二进制文件(固定长度记录,其布局在另一个 - textual - 文件中描述)。数据文件可以大到6 GB。布局文件(cobol copybooks)的大小很小,通常小于5 KB。
所有数据文件都集中在GNU / Linux服务器上(尽管它们是在大型机中生成的)。
我需要为测试人员提供编辑这些二进制文件的方法。有一个名为RecordEdit(http://record-editor.sourceforge.net/)的免费产品,但它有两个严重的缺点:
强制测试人员下载 通过SFTP的巨大文件,只有 每次轻微上传它们 已经做出改变。 非常 低效的。
加载整个 文件进入工作记忆,渲染 它对所有人都没用,但相对较小 数据文件。
我想到的是基于Java的客户端/服务器架构:
服务器将运行永久物 过程,倾听 面向编辑的请求来自 客户端。这样的要求会 包括像
这样的东西返回可用文件列表
锁定某个版本的文件
修改该记录中的此数据
返回第n页记录
依旧......
客户可以采取任何形式 (基于RCP的桌面 - 这是我的第一个候选人 - ncurses 在同一台服务器中,一个中间网 应用......)只要它能够 发送请求到服务器。
为了实现该方案,我一直在探索NIO(因为它的缓冲区)和MINA(因为协议透明性)。但是,在进一步推进这项工作之前,我想收集你的专家意见。
我的解决问题的方法是否合理?
使用我正在考虑的语言和框架来做它是否可行?方便吗?
你知道任何与我正在做的事情相似或有关的模式,蓝图,成功案例或开放项目吗?
答案 0 :(得分:2)
正如我所看到的,这里的棘手问题是解码服务器上的文件。一旦你写完了,就应该很容易。
我建议,无论你使用客户端的是什么,它应该基本上传一个人的变化的“差异”。
为这些数据创建类似于数据库(或使用现有数据库)的东西是否有意义?或者它太多了?
根据需要执行此操作的人数,快速而肮脏的解决方案是通过X转发运行程序 - 这消除了许多问题..只要该服务器具有相当多的RAM免费。
答案 1 :(得分:1)
您是否考虑过使用像OpenAFS这样的分布式文件系统?这应该能够处理非常大的文件。然后,您可以编写一个客户端应用程序来编辑文件,就好像它们是本地文件一样。
答案 2 :(得分:1)
我的解决问题的方法是否合理?
IMO,是的。
使用我正在考虑的语言和框架来做它是否可行?
我是这么认为的。但还有其他选择。例如:
将记录放入数据库,并通过由文件名+记录号组成的密钥进行访问。可以是完整的RDBMS,也可以是更轻量级的解决方案。
使用HTML + javascript实现的UI实现为RESTful Web服务。
使用可扩展的分布式文件系统实现。
此外,根据您的描述,似乎没有迫切需要使用高度可扩展/传输独立的层......除非您需要支持数百个并发用户。
方便吗?
方便谁?如果你在谈论开发人员,那取决于你是否已经熟悉这些框架。