L'évaluation HDF5: Quelles sont les limites / caractéristiques ne fournit HDF5 pour les données de modélisation?

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

Question

Nous sommes dans l'évaluation des technologies que nous utilisons pour stocker des données que nous collectons lors de l'analyse du code C / C ++. Dans le cas de C ++, la quantité de données peut être relativement importante, ~ 20 Mo par TU.

Après avoir lu la réponse suivante SO il m'a fait considérer que HDF5 pourrait être une technologie appropriée pour nous d'utiliser. Je me demandais si les gens pouvaient me aider ici répondre à quelques questions initiales que j'ai:

  1. Performance. L'utilisation générale des données est réinscriptible et lu fois « plusieurs », semblable à la durée de vie d'un fichier « .o » généré par un compilateur. Comment se compare-t HDF5 contre l'utilisation de quelque chose comme un SQLite DB? Est-ce même une comparaison raisonnable de faire?

  2. Au fil du temps, nous allons ajouter à l'information que nous stockons, mais ne voudrons pas nécessairement redistribuera une toute nouvelle série de « lecteurs » pour soutenir un nouveau format. Après avoir lu le guide de l'utilisateur Je comprends que HDF5 est similaire au format XML ou un DB, dans cette information est associée à une étiquette / colonne et donc un outil conçu pour lire une structure plus ancienne sera tout simplement ignorer les champs qu'il ne se préoccupe pas? Je crois comprendre ce correct?

  3. Une importante partie de l'information que nous voulons écrire sera un type d'arbre de la structure: hiérarchie de portée, la hiérarchie de type, etc. L'idéal serait modèle portées comme ayant les parents, les enfants, etc. Est-il possible d'avoir un objet HDF5 « point » à un autre? Dans le cas contraire, il est une technique standard pour résoudre ce problème en utilisant HDF5? Ou, comme cela est nécessaire dans une base de données, nous avons besoin de faire une clé unique qui « lien » un objet à l'autre avec lors de la recherche appropriés lookups pour les données?

Merci!

Était-ce utile?

La solution

  

Comment se compare-t HDF5 contre l'utilisation de quelque chose comme un SQLite DB?   Est-ce même une comparaison raisonnable de faire?

Trier de similaire, mais pas vraiment. Ils sont tous les deux fichiers structurés. SQLite a des fonctions pour supporter des requêtes de base de données en utilisant SQL. HDF5 a des caractéristiques pour soutenir de grands ensembles de données scientifiques.

Ils sont tous deux destinés à être haute performance.

  

Au fil du temps, nous allons ajouter à l'information que nous stockons, mais ne voudrons pas nécessairement redistribuera une toute nouvelle série de « lecteurs » pour soutenir un nouveau format.

Si vous stockez des données sous forme structurée, les types de données de ces structures sont également stockées dans le fichier HDF5. Je suis un peu rouillé à la façon dont cela fonctionne (par exemple si elle inclut la rétrocompatibilité innée), mais je sais que si vous concevez votre « lecteur » correctement, il devrait être en mesure de traiter les types qui sont modifiés à l'avenir.

  

Est-il possible d'avoir un objet HDF5 « point » à un autre?

Tout à fait! Vous voulez utiliser attributs . Chaque objet a une ou plusieurs chaînes décrivant le chemin pour atteindre cet objet. Les groupes de HDF5 sont analogues aux dossiers / répertoires, sauf que les dossiers / répertoires sont hiérarchiques = un chemin unique décrit l'emplacement de chacun (dans les systèmes de fichiers w / o liens physiques tout au moins), tandis que les groupes forment un graphe orienté qui peut comprendre des cycles. Je ne suis pas sûr que vous pouvez stocker un « pointeur » à un objet directement comme un attribut, mais vous pouvez toujours stocker un chemin absolu / relatif comme attribut de chaîne. (Ou nulle part ailleurs comme une chaîne,., Vous pouvez avoir des tables de consultation à gogo si vous voulez)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top