Как управлять файлами с индексами в файловой системе, используя Java - PullRequest
0 голосов
/ 21 февраля 2012

Я планирую разработать серверное приложение для поддержки и обработки миграции объемных данных.

Представьте себе, что это платформа на основе очередей, где клиентская программа (исходные агенты, которые извлекают метаданные из системы управления контентом) будет отправлять пакеты данных (размером приблизительно 1 КБ) на сервер, и сервер будет хранить эти пакеты в своей назначенной файловой системе.

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

Мы можем легко выполнить это со стандартной СУБД, если метаданные правильно определены, но в моем случае информация заголовка пакета будет меняться с течением времени, и я не хочу часто пересматривать свою базу данных.

Задача, которую я вижу здесь, заключается в том, чтобы эффективно хранить файлы пакетов в файловой системе (чтобы это не влияло на производительность файлового сервера), а также поддерживать информацию индексации, которая может использоваться для определения местоположения соответствующих пакетов при запросе.

Я подумываю об использовании любой инфраструктуры с открытым исходным кодом, не относящейся к СУБД (основанной на Java - nosql ??), которая может служить вышеуказанной цели. Количество пакетов может варьироваться от нескольких тысяч до нескольких миллионов в зависимости от объема исходного хранилища.

Ценю ваш вклад.

1 Ответ

0 голосов
/ 21 февраля 2012

База данных, ориентированная на столбцы, такая как Apache Cassandra , может справиться с этим сценарием - индексирование, предоставляемое в Cassandra, является относительно базовым, но, вероятно, подойдет для вашего сценария. Несколько миллионов 1КБ значений были бы довольно маленьким набором данных для Кассандры и не должны вызывать никаких проблем.

Дополнительные столбцы метаданных могут быть записаны вместе с основными пакетами данных; При желании имена столбцов могут быть определены на лету, так что это позволит развить формат вашего заголовка.

Данные в Cassandra собираются в таблицы в памяти, прежде чем они будут эффективно записаны на диск в неизменяемых «SSTables». Он также немедленно записывается в commitlog для обеспечения долговечности в случае сбоев и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...