한줄요약
- Data를 저장할때 ‘행기반’ 과 ‘열기반’ 으로 나누어져 저장된다
- 열기반(Column-Based)의 장점이 필요할때 사용한다
정형데이터와 비정형데이터
일반적으로 소규모 데이터베이스 상황에서 데이터를 저장해야할때
정형데이터 - RDB
비정형데이터 - NoSQL
이런식으로 구분하여 저장하는것이 일반적이었다
만약 대용량 데이터를 저장해야한다면?
일반적으로 데이터레이크를 구축할때, 오브젝트스토리지를 사용하는것이 일반적인데
그중 하나의 클라우드 서비스로는 AWS S3 가 있다
대용량 데이터를 저장해야할 정도면, 당연히 하둡생태계를 고려할것이고
이때 고려할만한 타입이 Parquet(파케이) 타입이다
Parquet(파케이)
주된 특징으로는
- S3 에 주로 사용하는 데이터 포맷이고
- 빠르게 읽기가 가능하고
- 압축률이 좋아야하고
- 특정 언어에 종속되지 않는다
- 열기반(Column-Based) 방식이다
Column-Based(열기반)
데이터를 저장할때는 크게 행기반(Row-Based), 열기반(Column-Based)으로 구분된다.
가령 pandas, numpy로 이런 형태의 CSV파일을 가져왔다면
A | B | C |
A1| B1| C1|
A2| B2| C2|
실제로 저장되어있는 방식은 다음과 같다
#행기반(Row-Based)
A1|B1|C1|A2|B2|C2
#열기반(Column-Based)
A1|A2|B1|B2|C1|C2
- 열기반 으로 저장되어 있을때, Hadoop 입장에서 좀더 효율적으로 데이터를 처리할수 있다.
- 데이터가 많은 블록에 넓게 퍼져서 저장되어있다
예제상황. 데이터를 SQL로 스캔해야 할때
상황 ) 전체 데이터 중에서 where
절로 일부 데이터를 가져오려고 한다
행 기반으로 되어있는 데이터에서의 작동은
레코드 한 줄을 가져온다 → 읽는다 → 특정조건이 충족되는지를 확인하는 과정을 거친다
행 기반에서는 특정조건때문에, 레코드 한 줄 전체를 읽어야하는 상황이 생긴다
열 기반으로 되어잇는 데이터의 작동은
특정조건과 일치하는 레코드를 확인하기 위해서, 각 레코드에 대한 몇바이트만 읽으면 된다
'Dev' 카테고리의 다른 글
Numpy Array Memory구조 확인하기 (1) | 2022.11.01 |
---|---|
Apache Arrow가 뭘까? (0) | 2022.11.01 |
PyObject 객체와 Numpy (0) | 2022.10.29 |
서버리스의 장단점 (0) | 2022.08.14 |
파이썬 모듈 재설치, 초기화하는방법 (poppler 설치 후 에러) (0) | 2022.07.13 |