RFC: Что хороший подход к удаленно редактировать очень большие двоичные файлы?

StackOverflow https://stackoverflow.com/questions/3136546

Вопрос

У меня есть ряд довольно больших двоичный Файлы (записи фиксированной длины, макет которой описан в другом -текстовый- файл). Файлы данных могут получить максимум 6 ГБ. Файлы макета (копировальные книги Cobol) небольшие по размеру, обычно менее 5 КБ.

Все файлы данных сосредоточены на сервере GNU / Linux (хотя они были сгенерированы в мэйнфрейме).

Мне нужно предоставить тестерами средствами редактирования этих двоичных файлов. Есть бесплатный продукт, называемый RecordedIt (http://record-editor.sourceforge.net/), но имеет два тяжелых недостатка:

  1. Это заставляет тестеров загружать огромные файлы через SFTP только для того, чтобы загрузить их еще раз каждый раз, когда было сделано небольшие изменения. Оченьнеэффективно.

  2. Он загружает весь файл в рабочую память, что делает его бесполезным для всех, кроме относительно небольших файлов данных.

То, что я имею в виду, это архитектура клиент / сервер в Java:

  • Сервер будет запущен постоянный процесс, прослушивающий для редактирования запросов, исходящих от клиента. Такие запросы будут включать в себя такие вещи, как

    • Вернуть список доступных файлов

    • Блокировка определенного файла для издания

    • Изменить эти данные в этой записи

    • Верните N-Th страницу записей

    и так далее…

  • Клиент может принять любую форму (на основе RCP на рабочем столе - что мой первый кандидат-, NCURSES На том же сервере, среднее веб-приложение ...) до тех пор, пока он способен отправлять запросы на сервер.

Я изучал Nio (из-за его буферов) и Mina (из-за прозрачности протокола), чтобы реализовать схему. Однако перед любым дальнейшим прогрессом этого усилия я хотел бы собрать свои экспертные мнения.

Мой разумный способ оформить проблему?

Это возможно, чтобы сделать это, используя язык и рамки, о которых я думаю? Это удобно?

Знаете ли вы о каких-либо узорах, синих принтах, случаях успеха или открытые проекты, которые напоминают или должны делать с тем, что я пытаюсь сделать?

Это было полезно?

Решение

Мой разумный способ оформить проблему?

ИМО, да.

Это возможно, чтобы сделать это, используя язык и рамки, о которых я думаю?

Я так думаю. Но есть и другие альтернативы. Например:

  • Поместите записи в базу данных и доступа к ключу, состоящей из имени файла + записи записи. Может быть полный RDBMS или более легкое решение.

  • Реализуйте как спокойный веб-сервис с помощью UI, реализованный в HTML + JavaScript.

  • Внедрить с использованием масштабируемой распределенной файловой системы.

Кроме того, из вашего описания, кажется, не настраивается на необходимость использования высокомасштабируемого / транспортировки независимого слоя ... Если вам не нужно поддерживать сотни одновременных пользователей.

Это удобно?

Удобно для того, кто? Если вы говорите о вас, разработчик, это зависит, если вы уже знакомы с этими рамками.

Другие советы

Как я вижу это, сложная вещь здесь декодирует файлы на сервере. Как только вы написали это, это должно быть довольно легко.

Я бы предположил, что все, что вы используете на стороне клиента, она должна в основном загружать «различие» изменений человека.

Может иметь смысл сделать то, что действует как база данных (или использовать существующую базу данных) для этих данных? Или это слишком много всего?

В зависимости от того, сколько людей необходимо сделать это, быстро-грязное решение состоит в том, чтобы запустить программу через X переадресацию - что исключает ряд проблем .. Пока что этот сервер имеет довольно много бесплатно.

Вы рассматривали, используя распределенную файловую систему, как Openafs? Это должно быть в состоянии обрабатывать очень большие файлы. Затем вы можете написать приложение для клиента для редактирования файлов, как будто они являются локальными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top