728x90
Summary
컬럼 기반 저장소(Column Oriented Store)
: 집계/분석에 읽기 특화되어 OLAP에 활용
로우 기반 저장소(Row Oriented Store)
: 등록/수정/삭제에 특화되어 OLTP에 활용
1. 아키텍쳐
- 컬럼 기반 저장소:
- 데이터를 컬럼 단위로 저장합니다. 각 컬럼은 데이터 타입에 따라 별도의 파일이나 블록에 저장되어, 같은 속성을 가진 데이터가 인접하게 위치합니다.
대표적인 컬럼 기반 DBMS : Vertica, Paraccel (Actian Matrix and Amazon Redshift), Sybase IQ, Exasol, Infobright, InfiniDB, MonetDB (VectorWise and Actian Vector), LucidDB, SAP HANA, Google Dremel, Google PowerDrill, Druid, kdb+. - 예를 들어, 고객 데이터베이스가 있을 때, "이름", "주소", "전화번호" 등의 컬럼이 개별적으로 저장됩니다.
- 쿼리 시 특정 컬럼만 읽어들이므로 필요한 데이터만 메모리에 로드합니다. 이로 인해 데이터 분석 및 집계 쿼리에 최적화되어 있습니다.
- 예: "모든 고객의 이름"을 조회할 때, "이름" 컬럼만 읽어들이면 됩니다.
- 데이터를 컬럼 단위로 저장합니다. 각 컬럼은 데이터 타입에 따라 별도의 파일이나 블록에 저장되어, 같은 속성을 가진 데이터가 인접하게 위치합니다.
- 로우 기반 저장소:
- 데이터를 행 단위로 저장합니다. 각 행은 모든 속성을 포함하고 있으며, 레코드가 순차적으로 저장됩니다.
대표적인 로우 기반 DBMS : SQL Server, MySQL, PostgreSQL - 같은 고객 데이터베이스에서 "고객ID", "이름", "주소", "전화번호"가 하나의 레코드로 저장됩니다.
- 쿼리 시 모든 컬럼을 읽어들이는 경우가 많아, 데이터가 많을 경우 불필요한 데이터까지 로드하여 메모리와 I/O 성능에 영향을 줄 수 있습니다.
- 예: "고객ID와 이름을 가져오기" 위해서는 고객 데이터의 모든 컬럼을 로드해야 할 수 있습니다.
- 데이터를 행 단위로 저장합니다. 각 행은 모든 속성을 포함하고 있으며, 레코드가 순차적으로 저장됩니다.
- 예시 데이터 비교
고객 정보를 포함한 데이터베이스를 예로 들어보겠습니다. 데이터는 다음과 같이 구성되어 있습니다.
컬럼 기반 저장소에서는 각 컬럼이 별도로 저장됩니다. 데이터는 다음과 같이 구성될 수 있습니다:
고객ID 컬럼:
[1, 2, 3]
이름 컬럼:
["홍길동", "김철수", "이영희"]
주소 컬럼:
["서울시 강남구 123로", "부산시 해운대구 456로", "대구시 수성구 789로"]
전화번호 컬럼:
["010-1234-5678", "010-2345-6789", "010-3456-7890"]
이러한 저장 방식은 데이터 조회 시 특정 컬럼만 로드할 수 있어, 예를 들어 전화번호만 필요할 경우 전화번호 컬럼만 메모리에 로드하면 됩니다.
로우 기반 저장소에서 행 단위로 저장되게 됩니다.
[1,"홍길동", "서울시 강남구 123로", "010-1234-5678"]
[2,"김철수", "부산시 해운대구 456로", "010-2345-6789"]
[3,"이영희", "대구시 수성구 789로", "010-3456-7890"]
3. 성능
- 컬럼 기반 저장소:
- 대규모 데이터 집계 및 분석에 뛰어난 성능을 보입니다. 데이터가 컬럼 단위로 저장되어 있어, 같은 데이터 타입의 컬럼들끼리 압축률이 높습니다.
- 쿼리 성능이 빠르며, OLAP(Online Analytical Processing) 환경에서 우수합니다.
- 로우 기반 저장소:
- 일반적으로 트랜잭션 처리가 빈번한 OLTP(Online Transaction Processing) 시스템에서 성능이 좋습니다. 모든 컬럼을 포함한 한 번의 레코드를 읽기 때문에 데이터 삽입 및 수정 시 효율적입니다.
- 삽입, 수정, 삭제가 빈번한 환경에서 뛰어난 성능을 제공합니다.
4. 장단점
- 컬럼 기반 저장소:
- 장점:
- 빠른 데이터 분석 및 집계 쿼리 성능.
- 효율적인 데이터 압축과 I/O 절약.
- OLAP 및 데이터 웨어하우스에 최적화.
- 단점:
- 데이터 삽입, 수정 시 성능 저하.
- 메모리 소비가 클 수 있음.
- 복잡한 쿼리 작성 필요.
- 장점:
- 로우 기반 저장소:
- 장점:
- 데이터 삽입 및 수정이 용이하고 빠름.
- 단순한 데이터 모델링과 쿼리 작성.
- OLTP에 최적화되어 있음.
- 단점:
- 대량의 데이터 분석 시 성능 저하.
- 비효율적인 데이터 압축.
- 장점:
5. 활용 사례
- 컬럼 기반 저장소:
- 대규모 데이터 분석, BI 보고서 작성, 데이터 웨어하우스, 실시간 분석 애플리케이션.
- 로우 기반 저장소:
- 트랜잭션 기반 애플리케이션, ERP 시스템, 웹 애플리케이션의 사용자 데이터 저장.
728x90
'Data Science > DB+SQL' 카테고리의 다른 글
[MySQL] 대량의 테스트 데이터 생성 SQL (0) | 2024.09.26 |
---|---|
[OLAP] Open Source OLAP DBMS (0) | 2024.09.25 |
[DuckDB] DuckDB Installation (0) | 2024.09.24 |
[DuckDB] what is DuckDB (0) | 2024.09.24 |
[DBMS] Isolation Level (0) | 2024.09.21 |
최근댓글