MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Qual è un approccio migliore per archiviare e interrogare un grande set di dati meteorologici

È una domanda difficile e non sono sicuro di poter dare una risposta definitiva, ma ho esperienza sia con HDF5/pyTables che con alcuni database NoSQL.
Ecco alcuni pensieri.

  • HDF5 di per sé non ha la nozione di indice. È solo un formato di archiviazione gerarchico adatto per dati numerici multidimensionali. È possibile estendere l'HDF5 per implementare un indice (ad esempio PyTables, HDF5 FastQuery ) per i dati.
  • HDF5 (a meno che non si utilizzi la versione MPI) non supporta l'accesso simultaneo in scrittura (è possibile l'accesso in lettura).
  • HDF5 supporta i filtri di compressione che, a differenza della credenza popolare, possono rendere l'accesso ai dati effettivamente più veloce (tuttavia devi pensare alla dimensione del blocco corretta che dipende dal modo in cui accedi ai dati).
  • HDF5 non è un database. MongoDB ha proprietà ACID, HDF5 no (potrebbe essere importante).
  • Esiste un pacchetto (SciHadoop ) che combina Hadoop e HDF5.
  • HDF5 rende relativamente facile eseguire il calcolo di base (cioè se i dati sono troppo grandi per essere inseriti nella memoria).
  • PyTables supporta alcuni calcoli veloci "nel kernel" direttamente in HDF5 utilizzando numexpr

Penso che i tuoi dati in generale siano adatti per l'archiviazione in HDF5. Puoi anche eseguire analisi statistiche in R o tramite Numpy/Scipy .
Ma puoi anche pensare a un approccio ibrido. Archivia i dati di massa grezzi in HDF5 e usa MongoDB per i metadati o per memorizzare nella cache valori specifici che vengono spesso utilizzati.