科学计算正从本地文件转向对象存储,但采用单体格式的巨型数组在远程切片时很不方便。读取一个小区域仍可能意味着要在网络上拖拽过多数据。

Zarr 的诀窍在于:保持 N 维类型化数组的心智模型不变,同时改变存储单元。数据存放在压缩块中,每个块都有确定性的键,元数据则描述形状、类型、块网格和编解码器。

这使该格式契合分布式计算:工作进程可以并行读取块,不同的实现可以面向 Python、Rust、JavaScript、Java、C++ 及其他语言。OGC 后来认可 Zarr V2.0 作为多维数组存储的社区标准。

让每个块都可寻址

块键天然映射到云对象存储和可按字节寻址的存储。

JSON 元数据使该格式可被检查,也便于独立实现解析。

v3 规范将扩展点正式化,使编解码器和块网格能够演进,而无需集中重写。

它解决了气候、显微成像、遥感和仿真工作流中的一个真实痛点。

对于云端数据,胜出的格式往往是那种能让部分读取变得廉价、同时又不迫使科学家放弃其数组模型的格式。

Zarr 成为分析就绪型科学数据的常见基础。该项目列出了 10 种语言的实现和 8 个公共数据集,总计约 3.1 PB;OGC 的标准页面将 Zarr 描述为面向 ND 数组数据与元数据的开源规范。

从这里,追溯依据

参考来源

  1. Zarr core specification Zarr specs documentation · zarr-specs.readthedocs.io
  2. Zarr Storage Specification Open Geospatial Consortium · ogc.org
  3. Zarr Implementations Zarr · zarr.dev
  4. Zarr Datasets Zarr · zarr.dev