67 votes

Avis sur NetCDF vs HDF5 pour le stockage des données scientifiques?

Quelqu'un là-bas ont assez d'expérience w/ NetCDF et HDF5 de donner quelques points positifs / négatifs sur eux comme un moyen de stocker des données scientifiques?

J'ai utilisé HDF5 et que vous souhaitez lire/écrire via Java, mais l'interface est essentiellement un wrapper autour de la bibliothèque C, que j'ai trouvé confus, de sorte NetCDF semble intriguant, mais je sais presque rien sur elle.

edit: ma demande est "seulement" pour l'enregistrement chronologique des données, de sorte que j'obtiens un fichier qui a une auto-description du format. Les caractéristiques importantes pour moi sont en mesure d'ajouter arbitraire de métadonnées, d'avoir rapidement accès en écriture pour l'ajout de tableaux d'octets, et avoir une seule écrivain / multiple-lecteur de simultanéité (fortement conseillée mais non obligatoire. NetCDF docs disent qu'ils ont SWMR mais ne dis pas si ils ont le soutien d'aucun mécanisme pour s'assurer que les deux écrivains ne pouvez pas ouvrir le même fichier à la fois avec des résultats désastreux). J'aime l'aspect hiérarchique de HDF5 (en particulier, j' aime l'-acyclique-graphique de la hiérarchie, beaucoup plus souple que celle d'un "régulier" système de fichiers comme de la hiérarchie), je suis la lecture de la NetCDF docs maintenant... si elle permet uniquement d'un dataset par fichier, alors il ne sera probablement pas travailler pour moi. :(

mise à jour — ressemble NetCDF-Java lit de netCDF-4 fichiers mais écrit seulement à partir de netCDF-3 fichiers qui ne prennent pas en charge les groupes hiérarchiques. darn.

mise à jour 2009-Juil-14: je commence à être vraiment en colère avec HDF5 en Java. La librairie n'est pas grande et il a quelques principales pierres d'achoppement qui ont à voir avec Java de couches d'abstraction (composé de types de données). Un grand format de fichier pour le C mais on dirait que je viens de perdre. >:(

30voto

Stefano Borini Points 36904

Je vous suggère fortement de HDF5 au lieu de NetCDF. NetCDF est plat, et c'est très sale après un certain temps si vous n'êtes pas en mesure de classer les choses. Bien sûr, la classification est également un sujet de débat, mais au moins vous avez cette flexibilité.

Nous avons effectué une évaluation précise de la HDF5 vs NetCDF quand j'ai écrit Q5Cost, et le résultat final a été pour HDF5 mains vers le bas.

22voto

Mike Points 3295

Je dois admettre à l'aide de HDF5 est beaucoup plus facile dans le long terme. Il n'est pas difficile d'obtenir de simples structures de données en format NetCDF, mais de les manipuler en bas de la route est une sorte de douleur.

Le "H" dans HDF5 est l'acronyme de "hiérarchique", qui traduit (pour moi en tout cas) dans une manière très facile de manipuler les données, par simple déplacement de nœuds et de référencement des nœuds à partir d'autres endroits.

Puis-je demander quel genre de projet c'est? J'utilise ces deux pour un grand nombre de HPC scientifique tâches de modélisation. Puis-je supposer que vous êtes en train de faire la même chose? Si oui, la tendance que je vois est les personnes se déplaçant à HDF5, mais qui peut être différent dans votre domaine particulier.

Cependant, en fin de compte vous allez, bonne chance!

16voto

user849852 Points 61

NetCDF, à partir de la version 4.0 (2008) peut lire et écrire la plupart des HDF5 fichiers, et permet d'accéder aux fonctions hiérarchiques de HDF5 via le renforcement du modèle de données.

HDF5 est extrêmement riche en fonctionnalités, et a quelques grandes caractéristiques de performance.

NetCDF a une API simple, et beaucoup plus d'outil de base. Il existe de nombreux outils qui gèrent netCDF de données.

9voto

Sean A. Points 326

Je sais que c'est un vieux poste, et l'affiche originale a indiqué qu'ils ont déménagé sur, mais pour quelqu'un qui se termine ici...le netCDF-bibliothèque Java (comme de 4.3.13) a netCDF-4 support en écriture via le netCDF C de la bibliothèque. Il est encore en version bêta, mais il fonctionne bien et la rétroaction est certainement apprécié!

Veuillez voir le netCDF-Java référence de la documentation pour plus de détails.

8voto

Novelocrat Points 12126

Essayez d'écrire quelques petits exemple d'application dans chaque, et de comparer l'expérience. Si l'avenir de l'évolutivité de votre code à l'exécution en parallèle (via MPI ou similaire) est important pour vous, je sais que HDF a un parallèle à la mise en œuvre, quelles sont les personnes qui travaillent en permanence à améliorer. Je ne suis pas sûr NetCDF.

Fin edit: Pour NetCDF, il est maintenant Parallel NetCDF de l'Argonne. Il fonctionne très bien, et l'équipe de développement est très active dans l'améliorer davantage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X