파케이(Parquet)에 대해 알아보자

파케이란, Apache Software Foundation에서 개발한 오픈 소스 컬럼 지향 데이터 저장 형식이다. 파케이는 주로 대규모 데이터 처리를 위해 설계되었으며, 특히 하둡 생태계에서 널리 사용된다.

그렇다면 먼저, 컬럼 지향 데이터 저장 형식이란 무엇일까?

행 기반 vs 열 기반

데이터를 저장할 때 행 기반 혹은 열 기반으로 저장할 수 있다.

행 기반

우리가 잘 아는 MySQL, PostgreSQL과 같은 데이터베이스는 행 기반으로 데이터를 저장한다. 행 기반으로 데이터를 저장한다는 것은 데이터를 행 단위로 추가하는 것을 의미힌다.

image

위와 같은 테이블이 있을 때, 해당 데이터들은 디스크에 다음과 같이 저장된다.

1
2
3
1, yumin, 25
2, boksil, 18
3, ddung, 12

한 행의 모든 값이 함께 저장되므로, 특정 행을 조회할 때 모든 열의 값을 한 번에 읽을 수 있다는 특징이 있다.

장단점

  • 특정 행을 조회하거나 업데이트할 때, 모든 열 값이 연속적으로 저장되어 있기 때문에 빠르게 접근할 수 있다.
  • 트랜잭션 처리가 용이하며 데이터 일관성을 유지할 수 있다.
  • 특정 열의 값만 필요할 경우, 불필요한 데이터도 함께 읽어야하기 때문에 I/O 비용이 증가한다.
  • 서로 다른 열의 값들이 연속적으로 저장되어 동일한 열의 값들이 인정해 있지 않아, 중복 데이터 압축이 어렵다.

여기에서 중복 데이터 압축이 어렵다는 이야기가 나오는데, 아래에서 열 기반의 데이터 저장 형식에 대해 알아본 다음 더 자세히 알아보자.

열 기반

열 기반 저장 형식에서는 각 열의 모든 행 값이 연속적으로 저장된다.

image

1
2
3
1, 2, 3
yumin, boksil, ddung
25, 18, 12

장단점

  • 동일한 열의 값들이 연속적으로 저장되어, 중복 데이터 압축에 용이하다.
  • 필요한 열만 읽을 수 있기 때문에 I/O 작업이 줄어 속도가 빠르다.
  • 벡터화 처리에 용이하다.
  • 주로 쓰기 작업은 행 단위로 이루어지기 때문에, 열 기반 저장 형식은 쓰기 작업에 비효율적이다.
  • 트랜잭션 처리가 어렵다.

행 단위의 저장 방식보다 열 기반 저장 방식이 중복 데이터 압축에 용이하다고 하는데, 그렇다면 중복 데이터 압축이란 무엇일까?

중복 데이터 압축

중복 데이터 압축이란, 데이터 중복성을 이용하여 데이터 크기를 줄이는 방법을 의미한다. 데이터가 중복될수록 압축 효율이 높아지며, 이는 데이터 저장 공간 절약 및 전송 속도 향상에 크게 기여할 수 있다.

압축 방식

손실 압축(Lossy Compression)

  • 일부 데이터를 버리거나 대체하여 압축하는 방식
  • 주로 이미지, 비디오, 오디오 데이터에서 사용되며, 압축 후 원본 데이터로 완벽히 복구되지 않음
  • 예시: JPEG 이미지 압축, MP3 오디오 압축

무손실 압축(Lossless Compression):

  • 데이터의 손실 없이 원본 데이터를 완벽하게 복구할 수 있는 방식
  • 주로 텍스트, 데이터베이스, 프로그램 파일 등에서 사용됨.
  • 예시: ZIP 파일 압축, PNG 이미지 압축.

열 기반 저장 형식에서의 중복 데이터 압축

열 기반 저장 형식에서는 동일한 열의 데이터가 연속적으로 저장되므로, 중복 데이터 압축의 효율성이 극대화된다.

image 예를 들어, 위와 같이 나이에 대한 테이블에서 동일한 나이가 많을수록 높은 효율을 기대할 수 있다.

  • 원본 나이 데이터: 25, 25, 25, 18, 12
  • 압축된 나이 데이터: 25*3, 18, 12

장점

  • 저장 공간을 크게 줄일 수 있다. -> 스토리지 비용 절감
  • 네트워크 전송 속도가 향상된다.
  • 디스크 I/O를 줄이고 캐시 효율성을 높여 시스템 성능이 향상된다.

자 그럼 다시 파케이로 넘어와보자. 파케이는 열 기반 데이터 저장 형식이기 때문에 다음과 같은 장점을 가진다는 것을 알 수 있다.

  • 효율적인 데이터 압축
  • 빠른 읽기 성능
  • 대규모 데이터 지원