과학 데이터 저장에 대한 NetCDF 대 HDF5에 대한 의견?
누구든지 NetCDF 및 HDF5에 대한 충분한 경험이있어 과학적 데이터를 저장하는 방법으로 그들에 대한 장단점을 제공 할 수 있습니까?
저는 HDF5를 사용했고 Java를 통해 읽고 쓰고 싶지만 인터페이스는 본질적으로 C 라이브러리를 둘러싼 래퍼이므로 혼란스러워 보이므로 NetCDF는 흥미로워 보이지만 그것에 대해 거의 알지 못합니다.
편집 : 내 응용 프로그램은 데이터 로깅을위한 "전용"이므로 자체 설명 형식의 파일을 얻습니다. 저에게 중요한 기능은 임의의 메타 데이터를 추가 할 수 있고, 바이트 배열에 추가하기위한 빠른 쓰기 액세스 권한을 가지며, 단일 작성자 / 다중 판독기 동시성을 갖는 것입니다 (강력하게 선호되지만 필수는 아닙니다. NetCDF 문서에서는 SWMR이 있지만 두 명의 작성자가 한 번에 같은 파일을 열 수 없도록하는 메커니즘을 지원하는지 여부는 말하지 마십시오. HDF5의 계층 적 측면 등의 난 (특히 내가 좋아하는 것이 하나 개의 데이터 세트 당을 허용하는 경우 ..., 계층 구조는 "일반적인"와 같은 파일 시스템보다 훨씬 더 유연 감독 - 비순환 그래프 계층 구조를) 지금 netCDF의 워드 프로세서를 읽고있다 파일이 있으면 아마도 나를 위해 작동하지 않을 것입니다. :(
업데이트 — NetCDF-Java 가 netCDF-4 파일에서 읽는 것처럼 보이지만 계층 적 그룹을 지원하지 않는 netCDF-3 파일에서만 작성합니다. 꿰매다.
업데이트 2009-Jul-14 : Java의 HDF5에 정말 화가 나기 시작했습니다. 사용 가능한 라이브러리는 그다지 좋지 않으며 Java의 추상화 계층 (복합 데이터 유형)과 관련된 몇 가지 주요 걸림돌이 있습니다. C에 대한 훌륭한 파일 형식이지만 잃어버린 것처럼 보입니다. > :(
NetCDF 대신 HDF5를 강력히 권장합니다. NetCDF는 평평하고, 물건을 분류 할 수 없으면 잠시 후 매우 더러워집니다. 물론 분류도 논란의 여지가 있지만 적어도 유연성이 있습니다.
Q5Cost를 작성할 때 HDF5와 NetCDF의 정확한 평가를 수행했으며 최종 결과는 HDF5 핸드 다운이었습니다.
나는 HDF5를 사용하는 것이 장기적으로 매우 쉽다는 것을 인정해야 할 것입니다. 간단한 데이터 구조를 NetCDF 형식으로 가져 오는 것은 어렵지 않지만 길을 따라 조작하는 것은 일종의 고통입니다.
HDF5의 "H"는 "계층 적"을 의미합니다. 이것은 (어쨌든 저에게는) 노드를 이동하고 다른 위치에서 노드를 참조하여 데이터를 조작하는 정말 쉬운 방법으로 변환되었습니다.
어떤 프로젝트인지 물어봐도 될까요? 저는이 두 가지를 HPC 과학 모델링 작업에 많이 사용합니다. 당신도 똑같이하고 있다고 가정해도 될까요? 그렇다면 내가보고있는 추세는 사람들이 HDF5로 이동하는 것이지만 특정 도메인에서는 다를 수 있습니다.
그러나 결국에는 행운을 빕니다!
버전 4.0 (2008)부터 NetCDF는 대부분의 HDF5 파일을 읽고 쓸 수 있으며 향상된 데이터 모델을 통해 HDF5의 계층 적 기능에 대한 액세스를 제공합니다.
HDF5는 기능이 매우 풍부하며 몇 가지 뛰어난 성능 기능이 있습니다.
NetCDF는 더 간단한 API와 훨씬 더 넓은 도구 기반을 가지고 있습니다. netCDF 데이터를 처리하는 많은 도구가 있습니다.
나는 이것이 오래된 게시물이라는 것을 알고 있으며 원본 포스터는 그들이 계속 진행했다고 표시했지만 여기에있는 모든 사람들을 위해 ... netCDF-Java 라이브러리 (4.3.13 기준)에는 netCDF-4 쓰기 지원이 있습니다. netCDF C 라이브러리. 아직 베타 버전이지만 작동하며 피드백 은 확실히 감사합니다!
자세한 내용은 netCDF-Java 참조 문서를 참조하십시오.
각각에 몇 가지 작은 샘플 응용 프로그램을 작성하고 경험을 비교하십시오. MPI 등을 통한 병렬 실행에 대한 코드의 향후 확장 성이 중요하다면 HDF에 병렬 구현이 있으며 사람들은 지속적으로 개선하기 위해 노력하고 있습니다. NetCDF에 대해 잘 모르겠습니다.
후기 편집 : NetCDF의 경우 이제 Argonne의 Parallel NetCDF가 있습니다. 그것은 아주 잘 작동하고 개발 팀은 그것을 더 개선하는 데 매우 적극적입니다.
1) Netcdf-4 C 라이브러리는 HDF-5 C 라이브러리 위에있는 레이어입니다. API는 HDF5 라이브러리보다 더 간단한 것으로 간주되지만 결국 거의 동일한 기능을 갖게됩니다. Netcdf는 그래프를 지원하지 않지만 HDF5는 지원합니다. 사실, HDF는 내 생각에 그래프의주기를 방지하지 않습니다.
2) HDF 그룹에는 HDF-5 C 라이브러리 위에 Java API가 있습니다.
3) Unidata에는 순수 Java 인 Netcdf-Java 라이브러리가 있지만 HDF-5 만 읽을 수 있습니다.
HDF5를 자체 데이터 모델로 변환하는 NetCDF는 멋지게 보이고 작동 합니다. NetCDF가 부호없는 값을 지원하지 않는다는 사실을 알게 될 때까지 ! NetCDF를 사용하여 기존 HDF5 파일에서 서명되지 않은 값을 감지하는 방법에 대한 내 질문 을 참조하십시오 .
업데이트 : 사실, NetCDF-3은 서명 된 값을 지원하지 않지만 NetCDF-4는 서명 된 값을 지원하지만 서명 여부를 결정하는 Java의 NetCDF API가 약간 복잡 합니다.
참고 URL : https://stackoverflow.com/questions/1075074/opinions-on-netcdf-vs-hdf5-for-storing-scientific-data
'Programing' 카테고리의 다른 글
Redis 세트 대 해시 (0) | 2020.11.12 |
---|---|
IEnumerable은 왜 (0) | 2020.11.12 |
후기 입 및 연속 기입 캐싱? (0) | 2020.11.12 |
프로그래밍 관용구 란 무엇입니까? (0) | 2020.11.12 |
HTML5 위치 정보는 어떻게 작동합니까? (0) | 2020.11.12 |