문제

과학적 데이터를 저장하는 방법으로 넷차 및 HDF5가 충분한 경험이있는 사람이 있습니까?

나는 HDF5를 사용했고 Java를 통해 읽기/쓰기를 원하지만 인터페이스는 본질적으로 C 라이브러리 주변의 래퍼이기 때문에 혼란 스러웠으므로 NetCDF는 흥미로워 보이지만 거의 알지 못합니다.

편집하다: 내 응용 프로그램은 Datalogging의 경우 "전용"이므로 자체 설명 형식이있는 파일을 얻습니다. 중요한 기능은 임의의 메타 데이터를 추가 할 수 있고, 바이트 어레이에 추가하기위한 빠른 쓰기 액세스, 단일 작가 / 다중 판독기 동시성 (강력하게 선호하지만 필수 아이템은 아닙니다. NetCDF 문서는 SWMR이 있지만 DON이라고 말합니다. '두 작가가 비참한 결과로 동일한 파일을 한 번에 열 수 없도록하는 메커니즘을 지원하는지 여부를 말합니다. 나는 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"는 "Heirarchical"을 나타냅니다. "Heirarchical"은 (어쨌든 나를 위해) 다른 장소의 노드를 움직이고 노드를 참조하여 데이터를 조작하는 정말 쉬운 방법으로 번역했습니다.

이것이 어떤 종류의 프로젝트인지 물어봐도 될까요? 나는 이것을 많은 HPC 과학적 모델링 작업에 사용합니다. 당신이 똑같이하고 있다고 가정 할 수 있습니까? 그렇다면 제가보고있는 추세는 사람들이 HDF5로 이사하는 것이지만 특정 도메인에서는 다를 수 있습니다.

그러나 당신은 결국 행운을 빕니다!

NetCDF는 버전 4.0 (2008)을 시작으로 대부분의 HDF5 파일을 읽고 쓸 수 있으며 향상된 데이터 모델을 통해 HDF5의 계층 적 기능에 대한 액세스를 제공합니다.

HDF5는 기능이 매우 풍부하며 몇 가지 훌륭한 성능 기능이 있습니다.

NETCDF에는 더 간단한 API와 훨씬 더 넓은 공구 기반이 있습니다. NetCDF 데이터를 처리하는 많은 도구가 있습니다.

나는 이것이 오래된 게시물이라는 것을 알고 있으며, 원래 포스터는 그들이 계속 이동했음을 나타 냈지만, 여기에 끝나는 사람에게는 ... NetCDF-Java 라이브러리 (4.3.13 기준)에는 NETCDF-4 쓰기 지원이 있습니다. NetCDF C 라이브러리. 여전히 베타 버타이지만 작동하고 피드백 확실히 감사합니다!

NetCDF-Java를 참조하십시오 참조 자세한 내용은 문서.

각각에 작은 샘플 응용 프로그램을 작성하고 경험을 비교해보십시오. MPI 등을 통해 병렬 실행에 대한 코드의 향후 확장 성이 중요하다면 HDF에 병렬 구현이있어 사람들이 지속적으로 개선하기 위해 노력하고 있습니다. NetCDF에 대해 잘 모르겠습니다.

늦은 편집 : NetCDF의 경우 지금 있습니다 병렬 netCDF Argonne에서. 그것은 매우 잘 작동하며 개발 팀은 더 개선하는 데 매우 적극적입니다.

1) NETCDF-4 C 라이브러리는 HDF-5 C 라이브러리 위에있는 레이어입니다. API는 HDF5 라이브러리보다 간단한 것으로 간주되지만 결국에는 거의 동일한 기능이 있습니다. NETCDF는 그래프를 지원하지 않지만 HDF5는합니다. 실제로 HDF는 내가 생각하는 그래프의 사이클을 방지하지 않습니다.

2) HDF 그룹에는 HDF-5 C 라이브러리 위에 Java API가 있습니다.

3) Unidata에는 순수한 Java이지만 HDF-5 만 읽을 수있는 NetCDF-Java 라이브러리가 있습니다.

HDF5를 자체 데이터 모델로 변환하는 NetCDF는보기 좋게 작동합니다 ... NetCDF가 부호없는 값을 지원하지 않는다는 것을 알기 전까지! 또한보십시오 내 질문 NetCDF를 사용하여 기존 HDF5 파일에서 부사되지 않은 값을 감지하는 방법에 대해.

업데이트: 실제로 NetCDF-3은 서명 된 값을 지원하지 않지만 NetCDF-4는 서명을 결정하기위한 Java의 NetCDF API가 서명 된 값을 지원합니다. 약간 복잡한.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top