sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cuál es un mejor enfoque para almacenar y consultar un gran conjunto de datos meteorológicos?

Es una pregunta difícil y no estoy seguro de poder dar una respuesta definitiva, pero tengo experiencia tanto con HDF5/pyTables como con algunas bases de datos NoSQL.
Aquí hay algunas ideas.

  • HDF5 per se no tiene noción de índice. Es solo un formato de almacenamiento jerárquico que es adecuado para datos numéricos multidimensionales. Es posible extender sobre HDF5 para implementar un índice (es decir, PyTables, HDF5 FastQuery ) para los datos.
  • HDF5 (a menos que esté utilizando la versión MPI) no admite el acceso de escritura simultáneo (el acceso de lectura es posible).
  • HDF5 admite filtros de compresión que pueden, a diferencia de la creencia popular, hacer que el acceso a los datos sea realmente más rápido (sin embargo, debe pensar en el tamaño de fragmento adecuado que depende de la forma en que accede a los datos).
  • HDF5 no es una base de datos. MongoDB tiene propiedades ACID, HDF5 no (podría ser importante).
  • Hay un paquete (SciHadoop ) que combina Hadoop y HDF5.
  • HDF5 hace que sea relativamente fácil realizar cálculos básicos (es decir, si los datos son demasiado grandes para caber en la memoria).
  • PyTables admite algunos cálculos rápidos "en el kernel" directamente en HDF5 usando numexpr

Creo que, en general, sus datos encajan bien para almacenarlos en HDF5. También puede hacer análisis estadísticos en R o a través de Numpy/Scipy .
Pero también puede pensar en un enfoque híbrido. Almacene los datos masivos sin procesar en HDF5 y use MongoDB para los metadatos o para almacenar en caché valores específicos que se usan con frecuencia.