A computação científica estava migrando de arquivos locais para armazenamentos de objetos, mas grandes matrizes em formatos monolíticos eram difíceis de fatiar remotamente. Ler uma pequena região ainda podia significar arrastar dados demais pela rede.

O truque do Zarr foi manter o modelo mental como uma matriz tipada N-dimensional enquanto mudava a unidade de armazenamento. Os dados vivem em blocos comprimidos, cada um com uma chave determinística, e os metadados descrevem forma, tipo, grade de blocos e codecs.

Isso fez o formato se encaixar na computação distribuída: os trabalhadores podiam ler blocos em paralelo, e diferentes implementações podiam ter como alvo Python, Rust, JavaScript, Java, C++ e outras linguagens. A OGC mais tarde endossou o Zarr V2.0 como padrão comunitário para armazenamento de matrizes multidimensionais.

Tornar cada bloco endereçável

As chaves dos blocos se mapeiam naturalmente para armazenamentos de objetos em nuvem e armazenamento endereçável por byte.

Os metadados JSON tornaram o formato inspecionável e fácil de analisar por implementações independentes.

A especificação v3 formalizou pontos de extensão para que codecs e grades de blocos pudessem evoluir sem reescritas centrais.

Resolveu uma dor real em fluxos de trabalho de clima, microscopia, sensoriamento remoto e simulação.

Para dados em nuvem, o formato vencedor costuma ser aquele que torna as leituras parciais baratas sem fazer os cientistas abandonarem seu modelo de matrizes.

O Zarr tornou-se um substrato comum para dados científicos prontos para análise. O projeto lista implementações em 10 linguagens e oito conjuntos de dados públicos totalizando cerca de 3,1 PB; a página de padrões da OGC descreve o Zarr como uma especificação de código aberto para dados e metadados de matrizes ND.

CONFIRA AS EVIDÊNCIAS

As fontes

  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