MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Qual é a melhor abordagem para armazenar e consultar um grande conjunto de dados meteorológicos


É uma pergunta difícil e não tenho certeza se posso dar uma resposta definitiva, mas tenho experiência com HDF5/pyTables e alguns bancos de dados NoSQL.
Aqui estão alguns pensamentos.
  • HDF5 por si só não tem noção de índice. É apenas um formato de armazenamento hierárquico que é adequado para dados numéricos multidimensionais. É possível estender em cima do HDF5 para implementar um índice (ou seja, PyTables, HDF5 FastQuery ) para os dados.
  • HDF5 (a menos que você esteja usando a versão MPI) não suporta acesso de gravação simultâneo (acesso de leitura é possível).
  • O HDF5 suporta filtros de compactação que podem - ao contrário da crença popular - tornar o acesso aos dados realmente mais rápido (no entanto, você precisa pensar no tamanho adequado do bloco, que depende da maneira como você acessa os dados).
  • HDF5 não é um banco de dados. MongoDB tem propriedades ACID, HDF5 não (pode ser importante).
  • Há um pacote (SciHadoop ) que combina Hadoop e HDF5.
  • O HDF5 torna relativamente fácil fazer a computação principal (ou seja, se os dados forem grandes demais para caber na memória).
  • O PyTables é compatível com alguns cálculos rápidos "no kernel" diretamente no HDF5 usando numexpr

Acho que seus dados geralmente são adequados para armazenamento em HDF5. Você também pode fazer análises estatísticas em R ou via Numpy/Scipy .
Mas você também pode pensar em uma abordagem híbrida. Armazene os dados brutos em massa em HDF5 e use o MongoDB para os metadados ou para armazenar em cache valores específicos que são frequentemente usados.