Question

Quels sont les principaux avantages de stocker des données dans HDF? Et quelles sont les principales tâches scientifiques de données où HDF est vraiment adapté et utile?

Était-ce utile?

La solution

Peut-être une bonne façon de paraphraser la question est, quels sont les avantages par rapport à d'autres formats?

Les principales alternatives sont, je pense. Une base de données, fichiers texte ou un autre format compressé / binaire

Les options de base de données à considérer sont probablement un magasin ou colonnaire NoSQL, ou pour les petits ensembles de données autonomes SQLite. Le principal avantage de la base de données est la capacité de travailler avec des données beaucoup plus que la mémoire, d'avoir un accès aléatoire ou indexé et ajouter / append / modifier les données rapidement. La principale * * Dis avantage est qu'il est beaucoup plus lent que HDF, pour des problèmes où à lire tous les besoins en jeu de données et traitées. Un autre inconvénient est que, à l'exception des bases de données de type intégré comme SQLite, une base de données est un système (nécessitant admnistration, l'installation, l'entretien, etc.) plutôt qu'un simple magasin de données autonome.

Les options de format de fichier texte sont XML / JSON / CSV. Ils sont multi-plateforme / langue / boîte à outils, et sont un bon format d'archivage en raison de la capacité à être auto-description (ou :) évidente. Si non compressé, ils sont énormes (10x-100x HDF), mais si comprimé, ils peuvent être assez efficaces espace (XML compressé est environ le même que HDF). Le principal inconvénient est à nouveau la vitesse ici. Parsing est beaucoup, beaucoup plus lent que HDF

Les autres formats binaires (NPY / NPZ numpy fichiers, fichiers blaze BLZ, des tampons de protocole, Avro, ...) ont des propriétés très similaires à HDF, sauf qu'ils sont moins largement pris en charge (peut être limité à une seule plate-forme: numpy ) et peuvent avoir des limites spécifiques. En général, ils n'offrent pas un avantage convaincant.

HDF est un bon complément aux bases de données, il peut être judicieux d'exécuter une requête pour produire un ensemble de données à peu près la taille mémoire, puis cache dans HDF si les mêmes données seraient utilisées plus d'une fois. Si vous avez un ensemble de données qui est fixe, et généralement traité dans son ensemble, le stockage comme une collection de fichiers de taille appropriée HDF est pas une mauvaise option. Si vous avez un ensemble de données qui est souvent mis à jour, la mise en scène certaines d'entre elles sous forme de fichiers HDF pourrait encore être utile périodiquement.

En résumé, HDF est un bon format pour les données qui est lu (ou écrit) généralement dans son ensemble; il est la lingua franca ou commune / format d'échange préféré pour de nombreuses applications en raison de la compatibilité et un large soutien, décent comme un format d'archivage, et très rapide.

P.S. Pour donner à ce un contexte pratique, mon expérience la plus récente comparant HDF alternatives, une certaine petite (beaucoup moins que la mémoire de taille) jeu de données a pris 2 secondes pour lire comme HDF (et la plupart de c'est probablement en tête de Pandas); ~ 1 minute pour lire JSON; et 1 heure pour écrire à la base de données. Certes, la base de données d'écriture pourrait être accéléré, mais vous feriez mieux d'avoir un bon DBA! Voici comment cela fonctionne hors de la boîte.

Autres conseils

L'un des avantages est un large soutien -. C, Java, Perl, Python et R ont toutes HDF5 liaisons

Un autre avantage est la vitesse. Je n'ai jamais vu étalonnée, mais HDF est censé être plus rapide que les bases de données SQL.

Je comprends qu'il est très bon lorsqu'il est utilisé avec les deux grands ensembles de données scientifiques et des données de séries chronologiques - la surveillance du réseau, suivi de l'utilisation, etc

.

Je ne crois pas qu'il y ait une limitation de la taille des fichiers HDF (bien que les limites du système d'exploitation seraient toujours en vigueur.

Pour ajouter, consultez ASDF en particulier leur papier ASDF: Un nouveau format de données pour l'astronomie ; ASDF essaie d'améliorer HDF5 et le document décrit certains aspects négatifs de forme HDF5.

Licencié sous: CC-BY-SA avec attribution
scroll top