다운로드
작성자: admin 작성일시: 2016-07-21 11:14:41 조회수: 11340 다운로드: 229
카테고리: Python 태그목록:

hdf5 소개

hdf5(Hierarchical Data Format version 5)는 대용량 데이터를 저장하기 위한 파일 포맷이다.

1987년 National Center for Supercomputing Applications (NCSA)에서 대용량 복합 데이터를 저장하기 위한 도구로 개발되어 주로 대용량의 이미지 데이터나 항공기, 선박 등의 운행 기록 저장용으로 쓰이다가 NASA의 Earth Observing System(EOS)의 저장 포맷으로 채택되었다.

hdf5 에 대한 자세한 내용은 다음 웹사이트에서 확인할 수 있다.

hdf5의 특징

hdf5는 다음과 같은 특징을 가진다.

  • 플랫폼 독립적으로 모든 시스템에 사용 가능
    • 플랫 파일(flat file) 형태
  • 대용량의 복합 데이터 사용 가능
    • 계층적 트리와 내장 스키마(schema)
  • 유연하고 빠른 입출력
    • 서브셋 접근, out-of-core 연산, 노드별 압축

hdf5는 다른 데이터베이스 시스템과 달리 데이터베이스 관리 시스템(DBMS: database management server)를 제공하지 않고 플랫 파일(flat file) 포맷과 라이브러리의 형태로 제공하는 일종의 내장 데이터베이스(embedded database)라고 할 수 있다.

다만 기록-후-읽기(save-and-read-only)형태의 사용 방식을 목표로 개발되었기 때문에 데이터 일부를 자주 갱신(update)하는 사용 형태에는 맞지 않는다.

hdf5 소프트웨어 설치

파이썬에서는 pytables 패키지를 사용하여 hdf5 파일을 기록하고 읽을 수 있다.

만약 파이썬을 사용하지 않고 독립적으로 hdf5 파일을 읽고 싶다면 HDFView 라는 어플리케이션을 설치해야 한다. 이 어플리케이션은 Java 기반이므로 JRE(Java Runtime Environment)가 설치되어 있어야 한다. 설치 방법은 다음 웹사이트를 참조한다.

다음은 한국거래소의 하루치 시장 틱데이터를 hdf5 포맷으로 저장한 파일을 HDFView로 열어 본 모습이다.

hdf5 파일 구조

hdf5 파일은 파일 시스템과 유사한 트리(tree)구조를 이루고 있다.

가장 상위에는 "/" 라는 문자열로 표시되는 루트(root) 노드가 존재하며 루트 노드의 아래로 그룹(Group)이라는 객체와 데이터셋(Dataset)이라는 객체가 있다. 그룹은 복수의 자식 그룹과 데이터셋을 가질 수 있다.

데이터셋은 실제 데이터와 데이터 스키마 등을 담고 있는 메타 데이터로 이루어져 있다. 메타 데이터에는 사용자가 원하는 속성을 추가할 수도 있다.

데이터 공간은 연속 공간을 사용할 수도 있고 빠른 접근 및 용량 축소를 위한 청크(chunk) 혹은 압축 청크(chunk) 방식을 쓸 수도 있다.

hdf5의 성능

가장 널리 쓰이는 오픈소스 데이터베이스 중의 하나인 PostgreSql과 성능을 비교한 자료가 다음 웹사이트에 제공된다.

기본적으로 hdf5는 대용량 데이터 검색(query)에 있어 PostgreSql 대비 10배 이상의 빠른 속도를 자랑하며 심지어 압축이 된 데이터에 대해서도 3배 이상의 검색 속도를 보인다.

저장 크기와 속도를 같이 비교하면 아래와 같다.

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!