MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Quelle est la meilleure approche pour stocker et interroger un grand ensemble de données météorologiques ?

C'est une question difficile et je ne suis pas sûr de pouvoir donner une réponse définitive, mais j'ai de l'expérience avec HDF5/pyTables et certaines bases de données NoSQL.
Voici quelques réflexions.

  • HDF5 en soi n'a pas de notion d'index. Il s'agit uniquement d'un format de stockage hiérarchique bien adapté aux données numériques multidimensionnelles. Il est possible de s'étendre au-dessus de HDF5 pour implémenter un index (c'est-à-dire PyTables, HDF5 FastQuery ) pour les données.
  • HDF5 (sauf si vous utilisez la version MPI) ne prend pas en charge l'accès simultané en écriture (l'accès en lecture est possible).
  • HDF5 prend en charge les filtres de compression qui peuvent - contrairement à la croyance populaire - accélérer l'accès aux données (cependant, vous devez penser à la bonne taille de bloc qui dépend de la façon dont vous accédez aux données).
  • HDF5 n'est pas une base de données. MongoDB a des propriétés ACID, pas HDF5 (cela peut être important).
  • Il existe un package (SciHadoop ) qui combine Hadoop et HDF5.
  • HDF5 facilite relativement le calcul du cœur (c'est-à-dire si les données sont trop volumineuses pour tenir en mémoire).
  • PyTables prend en charge certains calculs rapides "dans le noyau" directement dans HDF5 à l'aide de numexpr

Je pense que vos données sont généralement bien adaptées au stockage dans HDF5. Vous pouvez également faire une analyse statistique soit en R ou via Numpy/Scipy .
Mais vous pouvez aussi penser à une approche hybride. Stockez les données de masse brutes dans HDF5 et utilisez MongoDB pour les métadonnées ou pour mettre en cache des valeurs spécifiques souvent utilisées.