【问题标题】:What possibilities are there for an xarray based database?基于 xarray 的数据库有哪些可能性?
【发布时间】:2021-07-24 05:29:19
【问题描述】:

我在 python 中大量处理地理空间数据(主要是天气预报),对于这个问题,我正在使用 xarray 做很多事情。

xarray 支持转换为 hdf/netcdf 文件,如果您想存储数据而不要求再次访问的速度,这很好。我正在寻找的是一个数据库,用于快速访问 xarray 的单个数据点以建立一个安静的 WEB-API。有没有一种简单的方法可以将 xarray 存储到这样的数据库中?

注意:典型的xarray.DataArray 包含一个值数组,坐标如纬度、经度和时间戳。值的水平维度等于经纬度组成的网格,第三维度等于xarray.DataArray中时间戳的长度

【问题讨论】:

    标签: python database python-xarray


    【解决方案1】:

    我会考虑两种选择。

    如果您有一个分布式文件系统基础架构,您可以通过创建带有数据块的 netcdf 文件来利用它,使用 ncml 聚合数据并将数据集发布到 ERDDAP 服务器中。走这条路,您可以获得不错的访问速度,并且 API 可以以多种格式(.nc、.mat、csv、json 等)访问数据,您还可以将数据直接拉入您的 xarray 工作流程。

    我也会探索使用zarr格式来存储你的数据的可能性,这个与netcdf不同,数据以块的形式存储在一个文件夹结构中,它也支持并发访问,使用这种格式你可以store the data with cloud providers(google,aws),使用键值存储。您还可以通过并行化分析来利用 dask 的工作流程。

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

    【讨论】:

    【解决方案2】:

    我认为这将是令人兴奋的。您可以以其本机格式存储数据,并可能将一些 reduce 计算推送到数据库。

    在某个时候,SciDB 存在问题 - 即,我们能否将其变为 xarray 后端。

    我还看到TileDB 有一些重叠的目标。

    但现在什么都不存在 - 您可以使用您建议的一种平面格式,或者从传统数据库中的表格数据构建一个数组。

    【讨论】:

    • 感谢您的建议。