У кого-нибудь есть опыт работы с NetCDF и HDF5, чтобы дать им некоторые плюсы/минусы в качестве способа хранения научных данных?Мнения о NetCDF vs HDF5 для хранения научных данных?
Я использовал HDF5 и хотел бы читать/писать через Java, но интерфейс по сути является оберткой вокруг библиотек C, которую я счел запутанной, поэтому NetCDF кажется интригующим, но я почти ничего не знаю об этом.
Редактировать: мое приложение является «единственным» для регистрации данных, поэтому я получаю файл с самоописательным форматом. Важные функции для меня - возможность добавлять произвольные метаданные, иметь быстрый доступ для записи для добавления в байтовые массивы и иметь параллелизм с одним сценарием и несколькими читателями (настоятельно рекомендуется, но не обязательно. NetCDF-документы говорят, что у них есть SWMR, но нет скажите, поддерживают ли они какой-либо механизм обеспечения того, чтобы два писателя не могли сразу открыть один и тот же файл с катастрофическими результатами). Мне нравится иерархический аспект HDF5 (в частности, иерархия направленного ациклического графа, гораздо более гибкая, чем «обычная» иерархия, подобная файловой системе) читает сейчас документы NetCDF ... если это только позволяет dataset для файла, то, вероятно, это не сработает для меня. :(
обновление — выглядит NetCDF-Java читает NetCDF-4 файлов, но пишет только из NetCDF-3 файлов, которые не поддерживают иерархические группы штопать
обновление 2009-Jul-14..: Я начинаю сильно расстраиваться из-за HDF5 на Java. Доступная библиотека не так уж хороша, и у нее есть некоторые основные камни преткновения, связанные с уровнями абстракции Java (сложные типы данных). Отличный формат файла для C, но выглядит Я просто теряю.> :(
postscript: HDF5 * очень * проще в использовании в Python с PyTables, чем Java. –
К сожалению для пользователей Java, как netCDF, так и HDF5 разработаны в C, в основном для пользователей C или Fortran. Большинство других API, таких как Python, построены на слое C.) –
@EdwardHartnett - Я не покупаю этот аргумент. Разумеется, это означает, что вы не получаете никаких хороших функций Java бесплатно, но люди приступили к созданию полезных API в Python. Нет причин, по которым кто-то не мог это сделать на Java. (И фактически, я сделал это сам - в небольшой степени - в бывшей компании, когда я разместил этот вопрос еще в 2009 году, но у меня нет доступа к этому коду.) –