[논문 리뷰] A Comparison of HDF5, Zarr, and netCDF4 in Performing Common I/O Operations
이 연구는 파이썬을 사용하여 합성 데이터셋을 활용해 일반적인 I/O 작업—생성, 열기, 왤기, 읽기, 닫기—에 대해 HDF5, netCDF4, Zarr를 벤치마킹한다. 결과적으로 읽기/쓰기 작업에서는 HDF5가 가장 빠르며, 생성/열기 시간에서는 netCDF4가 뛰어나다. Zarr는 대부분의 작업에서 HDF5에 약간 뒤지지만, 성능은 API 오버헤드와 소규모 데이터 환경에서의 캐싱에 크게 영향을 받는다.
Scientific data is often stored in files because of the simplicity they provide in managing, transferring, and sharing data. These files are typically structured in a specific arrangement and contain metadata to understand the structure the data is stored in. There are numerous file formats in use in various scientific domains that provide abstractions for storing and retrieving data. With the abundance of file formats aiming to store large amounts of scientific data quickly and easily, a question that arises is, "Which scientific file format is best suited for a general use case?" In this study, we compiled a set of benchmarks for common file operations, i.e., create, open, read, write, and close, and used the results of these benchmarks to compare three popular formats: HDF5, netCDF4, and Zarr.
연구 동기 및 목표
- 세 가지 일반적인 과학적 파일 포맷—HDF5, netCDF4, Zarr—의 I/O 성능을 일반적인 작업들에 대해 객관적으로 비교하는 것.
- 일반적인 과학적 데이터 워크플로우(데이터셋 생성, 쓰기, 열기, 읽기 포함)에서 가장 뛰어난 성능을 보이는 포맷을 특정하는 것.
- 소규모에서 중간 규모의 데이터셋(다양한 과학적 응용 분야에서 흔함)에서 파일 포맷 선택이 성능에 미치는 영향을 평가하는 것.
- 연구자들이 통제된 조건에서 파일 포맷을 비교할 수 있도록 재현 가능한 벤치마킹 프레임워크를 제공하는 것.
- 파이썬 API 오버헤드와 캐싱이 관측된 성능 차이에 미치는 영향을 탐색하는 것.
제안 방법
- 합성 데이터셋에 대한 생성, 열기, 쓰기, 읽기, 닫기 작업의 시간을 측정하기 위해 파이썬으로 표준화된 벤치마킹 세트를 구현하였다.
- 랜덤화된 데이터로 생성된 데이터셋을 HDF5(h5py), netCDF4(netCDF4-python), Zarr(zarr-python)의 네이티브 파이썬 API를 사용해 파일에 저장하였다.
- 확장성과 로드 영향을 평가하기 위해 데이터셋 수(1,024에서 8,192)와 배열 차원(1D에서 3D)을 다양화하였다.
- 각 작업은 다수의 런을 거쳐 평균을 내어 시스템 수준의 변동성에 의한 노이즈를 줄였다.
- 성능 비교를 위해 바 차트를 활용해 각 작업에 대한 포맷 간 상대적 성능을 시각화하였다.
- 벤치마킹은 오픈소스로 구현되어 있으며, 커뮤니티의 사용, 확장, 기여를 위해 깃허브에 호스팅되어 있다.
실험 결과
연구 질문
- RQ1HDF5, netCDF4, Zarr 중 어느 파일 포맷이 새로운 데이터셋을 생성하는 데 가장 빠른가?
- RQ2데이터를 데이터셋에 쓰는 데 있어 세 포맷은 어떻게 성능을 비교할 수 있는가?
- RQ3이전에 닫힌 데이터셋을 여는 데 있어 각 포맷의 상대적 성능는 어떠한가?
- RQ4데이터셋 값의 읽기 성능가 가장 빠른 포맷은 무엇인가?
- RQ5데이터셋 수가 증가함에 따라 각 파일 포맷의 성능는 어떻게 영향을 받는가?
주요 결과
- HDF5는 데이터 쓰기 성능가 가장 빠르며, netCDF4와 Zarr보다 유의미하게 더 짧은 시간에 완료되었다.
- netCDF4는 새로운 데이터셋을 생성하는 데 가장 빠르며, 그 다음으로 HDF5, 그 다음 Zarr였다.
- 데이터셋을 여는 데서 netCDF4는 평균 시간이 가장 짧았고, 그 다음 Zarr, 그 다음 HDF5였다.
- HDF5는 표준 출력으로 데이터셋 값을 읽는 데 가장 빠르며, Zarr는 그에 가까운 성능을 보였고, netCDF4는 유의미하게 느렸다.
- 데이터셋 수를 1,024에서 8,192로 늘여도 평균 작업 시간에 큰 영향을 주지 않아, 이 워크로드에서는 확장성이 주요 병목이 되지 않는 것으로 나타났다.
- 성능 차이는 파이썬 API 오버헤드와 캐싱 효과에 기인한 것으로 보이며, 이는 기가바이트 수준의 더 큰 데이터 크기에서는 감소할 수 있다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.