>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Bezpieczeństwo
C

Jak przechowywać gigabajty danych naukowych bez utraty zmysłów

595 gwiazdki

Wyobraź sobie, że musisz zapisać dziesięć lat wyników symulacji prądów oceanicznych. Masz siatkę milionów punktów, z których każdy zawiera temperaturę, zasolenie i wektor prędkości. Jeśli zapiszesz to do zwykłego pliku CSV, plik rozrośnie się do absurdalnych rozmiarów, a odczytanie niewielkiego regionu zamieni się w wieczne czekanie, podczas gdy parser będzie przeżuwał gigabajty tekstu. Dokładnie taki problem netCDF został zaprojektowany, aby rozwiązać.

Co to za zjawisko

Projekt netCDF-4 jest sercem ekosystemu NetCDF (Network Common Data Form). Zasadniczo to nie tylko biblioteka, ale cały standard przechowywania danych wielowymiarowych. Jeśli kiedykolwiek pracowałeś z HDF5, koncepcja będzie znajoma. Ale netCDF kładzie nacisk na łatwość wymiany danych między naukowcami a różnymi środowiskami programistycznymi.

To nie jest jakiś modny startup, który zostanie zamknięty za rok. Biblioteka jest rozwijana od dziesięcioleci w Unidata, a dobrych połowa światowych modeli meteorologicznych i klimatycznych polega na tym formacie. Główna implementacja jest napisana w C, ale istnieją wrappery dla Pythona, Javy, Fortrana i C++.

Dlaczego jest to wygodniejsze niż popularne formaty

Główną cechą netCDF jest to, że pliki są „samoodnoszące się”. Otwierasz plik i od razu widzisz: jakie zmienne się w nim znajdują, w jakich jednostkach są przechowywane i kto jest autorem danych. Nie potrzebujesz osobnego dokumentu PDF opisującego strukturę — cała metadana jest przechowywana w środku.

Biblioteka zapewnia przezroczystość sieciową. Oznacza to, że plik utworzony na starej maszynie mainframe z nietypową kolejnością bajtów zostanie bez problemu odczytany na Twoim nowoczesnym laptopie. Kod biblioteki automatycznie obsługuje wszystkie konwersje typów i wyrównania.

Inną ważną rzeczą jest bezpośredni dostęp do danych. Jeśli chcesz poznać temperaturę wody tylko w jednym punkcie na głębokości 100 metrów, biblioteka nie będzie czytać całego pliku z dysku. Obliczy przesunięcie i pobierze tylko niezbędne bajty. Jest to krytyczne, gdy rozmiar zestawu danych przekracza dziesiątki gigabajtów.

Jak to działa pod maską

U podstawy znajduje się model danych z wymiarami, zmiennymi i atrybutami.

  • Wymiary definiują osie współrzędnych: czas, szerokość geograficzną, długość geograficzną.
  • Zmienne zawierają rzeczywiste tablice danych powiązane z tymi osiami.
  • Atrybuty przechowują metadane, takie jak „jednostki: celsjusza

Powiązane projekty