基于xarray的数据库有哪些可能性?

3
我经常使用Python处理地理空间数据(主要是天气预报),并且在这个问题上我会用到许多关于 xarray 的操作。 xarray 可以将数据转换为hdf/netcdf文件,如果您只是想存储数据而没有对速度有太高的要求,那这样是可以的。但是我需要的是一个数据库,能够快速访问单独的 xarray 数据点,以建立一个RESTful WEB-API。是否有一种简单的方式将 xarray 存储到这样的数据库中呢?
注意:一个典型的 xarray.DataArray 包含值数组、坐标如纬度、经度和时间戳。值数组的水平维度等于由纬度和经度形成的网格,第三个维度等于 xarray.DataArray 中时间戳的长度。
2个回答

4
我会考虑两种选择。
如果您拥有分布式文件系统基础设施,可以通过创建具有数据块的netcdf文件来利用它,使用ncml聚合数据并在ERDDAP服务器上发布数据集。选择这条路线,您可以获得相当快的访问速度和API rest以访问数据,以多种格式(.nc,.mat,csv,json等)访问数据,还可以直接将数据拉到xarray工作流程中。
我还会探索使用zarr格式存储您的数据的可能性,这与netcdf不同,数据以块的形式存储在文件夹结构中,它还支持并发访问,使用此格式,您可以使用云提供商(谷歌、aws)的键值存储将数据存储起来。您还可以通过将分析并行化来利用dask来优化工作流程。

如果计划构建自定义API Rest,请查看FastAPI


仅仅是为了扩展 @Favo 的答案。Zarr 还可以使用多种数据库后端,例如 DBM、Redis、MongoDB 和 LMDB。更多信息请参见:https://zarr.readthedocs.io/en/stable/api/storage.html - jhamman

2
我认为这将非常令人兴奋。您可以以其原生格式存储数据,并可能将一些减少计算下推到数据库中。
曾经有一个关于SciDB的问题 - 也就是说,我们能否将其变成xarray后端。
我还看到TileDB有一些重叠的目标。
但现在没有任何东西 - 您可以使用您建议的其中一种平面格式,或者从传统数据库的表格数据构建一个数组。

感谢您的建议。 - dl.meteo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接