계층 데이터 형식

Hierarchical Data Format
계층 데이터 형식
HDF transparent original.png
파일 이름 확장자.hdf,.h4,.hdf4,.he2,.h5,.hdf5,.he5
인터넷 미디어 유형application/x-hdf, application/x-hdf5
매직 넘버\211 HDF\r\n\032\n
개발자HDF 그룹
최신 릴리즈
5-1.12.2[1]
2022년 4월 19일, 3개월 전(2022-04-19)
포맷의 종류과학적 데이터 형식
오픈 포맷?네.
웹 사이트www.hdfgroup.org Edit this at Wikidata

계층형 데이터 형식(HDF)은 대량의 데이터를 저장하고 정리하도록 설계된 파일 형식(HDF4, HDF5) 세트입니다.원래는 미국 국립 슈퍼컴퓨팅 애플리케이션 센터에서 개발되었으며, HDF5 기술의 지속적인 개발과 HDF에 저장된 데이터의 지속적인 접근을 보장하는 것을 사명으로 하는 비영리 법인인 The HDF Group의 지원을 받고 있습니다.

이 목표에 따라 HDF 라이브러리와 관련 툴은 일반적인 용도로 자유롭고 BSD와 같은 라이선스로 사용할 수 있습니다.HDF는 많은 상용 및 비상용 소프트웨어 플랫폼과 프로그래밍 언어에 의해 지원됩니다.무료로 이용할 수 있는 HDF 배포는 라이브러리, 명령줄 유틸리티, 테스트 스위트소스, Java 인터페이스 및 Java 기반 HDF Viewer(HDF Viewer)[2]로 구성됩니다.

현재 버전인 HDF5는 주요 레거시 버전인 HDF4와 디자인과 API가 크게 다릅니다.

초기 역사

원래 AEHOU(All Aclusing Hierarchical Object Oriented format)라고 불리는 휴대용 과학 데이터 포맷의 탐구는 1987년 NCSA(National Center for Supercomputing Applications)의 그래픽스 재단 태스크포스(GFTF)에 의해 시작되었습니다.1990년과 1992년에 받은 NSF 보조금은 프로젝트에 중요했다.무렵 NASA는 EOS(Earth Observating System) 프로젝트에서 사용할 15가지 파일 형식을 조사했습니다.2년간의 검토 과정을 거쳐 HDF가 표준 데이터 및 정보 시스템으로 [3]선정되었습니다.

HDF4

HDF4는 이 포맷의 오래된 버전이지만, The HDF Group은 여전히 적극적으로 지원하고 있습니다.다차원 배열, 래스터 이미지, 테이블 등 다양한 데이터 모델의 확산을 지원합니다.각각은 특정 집약 데이터 유형을 정의하고 데이터 및 메타데이터의 읽기, 쓰기 및 구성을 위한 API를 제공합니다.HDF 개발자 또는 사용자가 새로운 데이터 모델을 추가할 수 있습니다.

HDF는 외부 정보가 없는 파일의 구조와 내용을 응용 프로그램에서 해석할 수 있도록 하는 자체 기술입니다.하나의 HDF 파일에는 그룹 또는 개별 개체로 액세스할 수 있는 여러 개의 관련 개체를 포함할 수 있습니다.사용자는 "vgroups"라고 하는 자체 그룹 구조를 만들 수 있습니다.

HDF4 포맷에는 많은 [4][5]제한이 있습니다.명확한 객체 모델이 없기 때문에 지속적인 지원과 개선이 어렵습니다.다양한 인터페이스 스타일(이미지, 테이블, 어레이)을 지원하면 API가 복잡해집니다.메타데이터 지원은 사용 중인 인터페이스에 따라 달라집니다.SD(Scientific Dataset) 오브젝트는 임의의 이름 있는 속성을 지원하지만 다른 유형은 미리 정의된 메타데이터만 지원합니다.아마도 가장 중요한 것은 32비트 부호 정수를 사용하여 주소를 지정하면 HDF4 파일이 최대 2GB로 제한됩니다. 이는 현대의 많은 과학 애플리케이션에서 허용되지 않습니다.

HDF5

HDF5 포맷은 HDF4 라이브러리의 몇 가지 제한에 대응하고 최신 시스템 및 애플리케이션의 현재 및 예상 요건에 대응하도록 설계되었습니다.2002년에는 R&D 100상[6]수상했습니다.

HDF5는 파일 구조를 단순화하고 다음 두 가지 유형의 객체만 포함합니다.

HDF 구조 예시
  • 입력된 다차원 어레이인 데이터 세트
  • 그룹 - 데이터 세트 및 기타 그룹을 보유할 수 있는 컨테이너 구조입니다.

그 결과, 파일 시스템과 같은 진정한 계층형 데이터 [clarification needed][citation needed]형식이 됩니다.실제로 HDF5 파일의 리소스는 POSIX와 유사한 구문 /path/to/resource를 사용하여 액세스할 수 있습니다.메타데이터는 그룹 및 데이터셋에 연결된 사용자 정의 명명된 속성 형식으로 저장됩니다.그런 다음 데이터 세트, 그룹 및 속성을 사용하여 이미지와 테이블을 나타내는 보다 복잡한 스토리지 API를 구축할 수 있습니다.

이러한 파일 포맷의 진보에 가세해, HDF5는 개량된 타입의 시스템과 데이터 세트 영역의 선택을 나타내는 데이터 스페이스 오브젝트를 포함한다.또한 API는 데이터 세트, 그룹, 속성, 유형, 데이터 공간 및 속성 목록과 관련하여 객체 지향적입니다.

NetCDF의 최신 버전인 버전 4는 HDF5를 기반으로 합니다.

HDF5는 B-tree를 이용해 테이블 오브젝트를 인덱스하기 때문에 주가 시리즈, 네트워크 모니터링 데이터, 3D 기상 데이터 등 시계열 데이터에 적합합니다.대부분의 데이터는 SQL 데이터베이스의 행보다 훨씬 빠르게 액세스할 수 있는 간단한 배열(테이블 개체)에 포함되지만 B-tree 액세스는 어레이 이외의 데이터에 대해 사용할 수 있습니다.HDF5 데이터 스토리지 메커니즘은 SQL 스타 [example needed]스키마보다 간단하고 빠를 수 있습니다.

피드백

HDF5에 대한 비판은 일체형 디자인과 긴 사양에서 비롯됩니다.

  • HDF5는 UTF-8을 강제적으로 사용하지 않기 때문에 클라이언트애플리케이션에서는 대부분의 장소에서 ASCII를 상정하고 있을 가능성이 있습니다.
  • 외부 도구(h5repack)[7]를 사용하여 파일 복사본을 생성하지 않고는 데이터 집합 데이터를 파일에서 해방할 수 없습니다.

인터페이스

공식적으로 지원되는 API

  • C
  • C++
  • CLI - .Net
  • Fortran, Fortran 90
  • HDF5 Lite (H5LT)– C용 경량 인터페이스
  • HDF5 이미지(H5IM)– 이미지 또는 래스터용 C 인터페이스
  • HDF5 테이블(H5TB)– 테이블용 C 인터페이스
  • HDF5 Packet Table (H5PT)– C 및 C++가 고속으로 액세스 하는 '패킷' 데이터를 처리하는 인터페이스
  • HDF5 Dimension Scale (H5DS)– HDF5에 치수 스케일 추가 가능
  • 자바

서드파티제 바인딩

  • CGNS는 HDF5를 메인 스토리지로 사용
  • 공통 Lisp 라이브러리 hdf5-cffi
  • D는 높은 수준의 h5py 스타일 D 래퍼를 개발 중인 C API에 바인딩제공합니다.
  • Dymola는 Dymola 2016 FD01 릴리즈와 함께 SDF(Scientific Data Format)라는 구현을 사용한 HDF5 수출 지원을 도입했습니다.
  • Erlang, ElixirLFEBEAM 언어의 바인딩을 사용할 수 있습니다.
  • GNU 데이터 언어
  • Go-gonumhdf5 패키지.
  • HDFql을 사용하면 C, C++, Java, Python, C#, Fortran 및 R의 고급 언어(SQL과 유사)를 통해 HDF5 파일을 관리할 수 있습니다.
  • Huygens Software는 버전 3.5 이후 HDF5를 프라이머리 스토리지 포맷으로 사용합니다.
  • IDL
  • IGOR Pro는 HDF5 파일을 완전히 지원합니다.
  • JHDF5는 [8]일부 사용자가 단순하다고 생각하는 공식 HDF5 Java 바인딩과는 다른 접근방식을 취하는 대체 Java 바인딩입니다.
  • jHDF HDF 파일에 대한 읽기 전용 액세스를 제공하는 순수 Java 구현
  • JSON ~hdf5-json
  • JuliaHDF5 패키지를 통해 HDF5를 지원합니다.
  • LabVIEWh5labviewlvhdf5 등의 서드파티 라이브러리를 통해 HDF를 지원할 수 있습니다.
  • Lua-hdf5 라이브러리를 통해 Lua.
  • MATLAB, Scilab 또는 Octab – 최근 출시에서는 HDF5를 프라이머리 스토리지 형식으로 사용
  • Mathematica[9] HDF 및 HDF5 데이터를 즉시 분석합니다.
  • [10]
  • Python은 h5py(HDF5 추상화에 대한 하이 레벨 및 로우 레벨 액세스) 및 PyTables(고급 인덱싱 및 데이터베이스와 유사한 쿼리 기능을 갖춘 하이 레벨 인터페이스)를 통해 HDF5를 지원합니다.HDF4는 Python-HDF4 및/또는 PyHDF를 통해 Python 2와 Python 3 모두에서 사용할 수 있습니다.인기 있는 데이터 조작 패키지는 PyTables를 통해 HDF5에서 수출입할 수 있습니다.
  • Rrhdf5hdf5r 패키지를 지원합니다.
  • RustHDF5와 같은 서드파티 라이브러리를 통해 HDF를 지원할 수 있습니다.

도구들

  • Apache Spark HDF5 커넥터 HDF5 커넥터
  • Apache Drill HDF5 Plugin HDF5 Plugin for Apache Drill을 사용하면 HDF5 파일을 통한 SQL 쿼리를 사용할 수 있습니다.
  • HDF Product Designer Interoperable HDF5 데이터 제품 생성 GUI 도구
  • HDF Explorer HDF, HDF5, netCDF 데이터 파일 형식을 읽어내는 데이터 시각화 프로그램
  • HDF View HDF 파일용 브라우저 및 편집기
  • ViTables Python으로 작성된 HDF5 및 PyTables 파일용 브라우저 및 편집기
  • Panoply A netCDF, HDF 및 GRIB 데이터 뷰어

「 」를 참조해 주세요.

  • 공통 데이터 형식(CDF)
  • 천문학에서 사용되는 데이터 형식인 FITS
  • 기상학에서 사용되는 데이터 형식인 GRIB(Grided Binary)
  • HDF 탐색기
  • NetCDF, Netcdf Java 라이브러리는 순수 Java를 사용하여 HDF5, HDF4, HDF-EOS 및 기타 형식을 읽습니다.
  • 프로토콜 버퍼 - Google의 데이터 교환 형식

레퍼런스

  1. ^ "HDF5 version 1.12.2 released on 2022-04-19". Retrieved 27 Apr 2022.
  2. ^ Java 기반의 HDF 뷰어(HDF View)
  3. ^ "History of HDF Group". Retrieved 15 July 2014.
  4. ^ HDF5는 HDF4와 어떻게 다릅니까?2009-03-30 Wayback Machine 아카이브 완료
  5. ^ "Are there limitations to HDF4 files?". Archived from the original on 2016-04-19. Retrieved 2009-03-29.
  6. ^ R&D 100 Awards 아카이브 2011-01-04 Wayback Machine 아카이브
  7. ^ Rossant, Cyrille. "Moving away from HDF5". cyrille.rossant.net. Retrieved 21 April 2016.
  8. ^ JHDF5 라이브러리
  9. ^ HDF Mathematica ImportExport 문서
  10. ^ PDL::IO::HDF5

외부 링크