Die wissenschaftliche Datenverarbeitung verlagerte sich von lokalen Dateien zu Objektspeichern, doch riesige Arrays in monolithischen Formaten ließen sich aus der Ferne nur umständlich ausschneiden. Das Lesen einer kleinen Region konnte immer noch bedeuten, zu viele Daten durch das Netzwerk zu ziehen.
Zarrs Kniff bestand darin, das mentale Modell als N-dimensionales typisiertes Array beizubehalten und zugleich die Speichereinheit zu ändern. Die Daten liegen in komprimierten Chunks, jeder mit einem deterministischen Schlüssel, und Metadaten beschreiben Form, Typ, Chunk-Raster und Codecs.
Dadurch passte das Format zum verteilten Rechnen: Worker konnten Chunks parallel lesen, und verschiedene Implementierungen konnten Python, Rust, JavaScript, Java, C++ und andere Sprachen ansprechen. Die OGC erkannte Zarr V2.0 später als Community-Standard für die Speicherung mehrdimensionaler Arrays an.
Jeden Chunk adressierbar machen
Chunk-Schlüssel lassen sich natürlich auf Cloud-Objektspeicher und byte-adressierbaren Speicher abbilden.
JSON-Metadaten machten das Format inspizierbar und für unabhängige Implementierungen leicht zu parsen.
Die v3-Spezifikation formalisierte Erweiterungspunkte, sodass sich Codecs und Chunk-Raster weiterentwickeln konnten, ohne zentrale Umschreibungen.
Es löste ein echtes Problem in Arbeitsabläufen der Klimaforschung, Mikroskopie, Fernerkundung und Simulation.
Für Cloud-Daten ist das siegreiche Format oft jenes, das Teil-Lesevorgänge günstig macht, ohne dass Wissenschaftler ihr Array-Modell aufgeben müssen.
Zarr wurde zu einem verbreiteten Substrat für analysebereite wissenschaftliche Daten. Das Projekt listet Implementierungen in 10 Sprachen und acht öffentliche Datensätze mit insgesamt etwa 3,1 PB auf; die Standardseite der OGC beschreibt Zarr als Open-Source-Spezifikation für ND-Array-Daten und -Metadaten.
DEN BELEGEN FOLGEN
Die Quellen
- Zarr core specification Zarr specs documentation · zarr-specs.readthedocs.io
- Zarr Storage Specification Open Geospatial Consortium · ogc.org
- Zarr Implementations Zarr · zarr.dev
- Zarr Datasets Zarr · zarr.dev