MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was ist ein besserer Ansatz zum Speichern und Abfragen eines großen Datensatzes meteorologischer Daten?

Es ist eine schwierige Frage und ich bin mir nicht sicher, ob ich eine definitive Antwort geben kann, aber ich habe Erfahrung sowohl mit HDF5/pyTables als auch mit einigen NoSQL-Datenbanken.
Hier sind einige Gedanken.

  • HDF5 hat per se keinen Begriff von Index. Es ist nur ein hierarchisches Speicherformat, das für mehrdimensionale numerische Daten gut geeignet ist. Es ist möglich, HDF5 zu erweitern, um einen Index zu implementieren (z. B. PyTables, HDF5 FastQuery ) für die Daten.
  • HDF5 (sofern Sie nicht die MPI-Version verwenden) unterstützt keinen gleichzeitigen Schreibzugriff (Lesezugriff ist möglich).
  • HDF5 unterstützt Komprimierungsfilter, die - entgegen der landläufigen Meinung - den Datenzugriff tatsächlich beschleunigen können (Sie müssen jedoch über die richtige Chunk-Größe nachdenken, die davon abhängt, wie Sie auf die Daten zugreifen).
  • HDF5 ist keine Datenbank. MongoDB hat ACID-Eigenschaften, HDF5 nicht (möglicherweise wichtig).
  • Es gibt ein Paket (SciHadoop ). ), das Hadoop und HDF5 kombiniert.
  • HDF5 macht es relativ einfach, Kernberechnungen durchzuführen (d. h. wenn die Daten zu groß sind, um in den Speicher zu passen).
  • PyTables unterstützt einige schnelle "im Kernel"-Berechnungen direkt in HDF5 mit numexpr

Ich denke, Ihre Daten eignen sich im Allgemeinen gut zum Speichern in HDF5. Sie können auch statistische Analysen entweder in R durchführen oder über Numpy/Scipy .
Sie können aber auch über einen hybriden Ansatz nachdenken. Speichern Sie die rohen Massendaten in HDF5 und verwenden Sie MongoDB für die Metadaten oder zum Zwischenspeichern bestimmter Werte, die häufig verwendet werden.