반응형
[성능 향상 관련 용어]
- Scale up : 단일 머신(machine)에 CPU, 디스크 등을 추가해서 성능을 향상하는 방법
> 클라우드 서비스에서도 사용되며 이 경우 하나의더 큰 규모로 늘리는 것을 의미 - Scale Out : 적절한 성능의 머신을 추가해서 전체적인 성능을 향상하는 방법으로 소프트웨어가 scale out을 지원해야 가능
[데이터 처리, 저장 방법]
- Data Partitioning : 대량의 데이터를 처리하기 위해 DBMS 안에서 분할하는 방식. 한 대의 DBMS만 있으면 된다.
- Partitioning 방법
- Horizontal Partitioning : 데이터 갯수 기준으로 나누어 Partitioning하는 방법으로 사실상 Sharding이 여기에 들어간다고 볼 수 있음. 같은 테이블 스키마를 가진 데이터를 데이터베이스 여러 개에 분산하여 저장하는 방법
예시 : 같은 스키마를 가진 주민 데이터를 '봉천동 주민 데이터', '남현동 주민 데이터'로 구분하여 저장하는 것. - Vertical Partitioning : 테이블 컬럼을 기준으로 나눈다. 이미 정규화된 데이터를 분리하는 과정으로 생각해야 한다. 즉 자주 사용하는 컬럼을 분리하여 성능을 향상시키는 방식 등으로 활용 가능
- Horizontal Partitioning : 데이터 갯수 기준으로 나누어 Partitioning하는 방법으로 사실상 Sharding이 여기에 들어간다고 볼 수 있음. 같은 테이블 스키마를 가진 데이터를 데이터베이스 여러 개에 분산하여 저장하는 방법
- Partitioning 범위
- List Partitioning :
- 특정 partition에 저장될 데이터에 대한 명시적인 제어가 가능
- 분포도가 비슷하여 해당 컬럼의 조건이 많이 들어오는 경우 유용
- 예시 : 한국, 일본, 중국 -> 아시아 / 노르웨이, 스페인, 핀란드 -> 유럽
- Range Partitioning
- 연속적인 숫자나 날짜 기준으로 파티셔닝한다.
- 손쉬운 관리 기법 제공으로 금방 만든다.
- 예시 : 우편번호, 일별, 월별, 분기별 등의 데이터
- Hash Partitioning
- Partition key의 hash값에 의한 파티셔닝 (데이터 균등 분할 가능)
- select시 조건과 무관하게 병렬 제공 가능
- 특정 데이터가 어느 hash partition에 있는지 판단 불가
- List Partitioning :
- Partitioning 방법
- Data Sharding : 대량의 데이터를 처리하기 위해 여러개의 DBMS에 분할하는 기술. DBMS 안에서 데이터를 나누느 것이 아니고 DBMS 밖에서 데이터를 나누는 방식이다. 즉 샤드 수에 따라 여러 대의 DBMS를 설치해야 한다.
샤딩을 하면 범위 검색에 취약하고 JOIN 연산을 사용할 수 없는 등의 기능적인 제약이 많기 때문에 샤딩을 통해 데이터 확장을 하는 것이 핵심이다.
- Horizontal Partitioning(수평 분할)과 샤딩 비교
- 위에서 언급했 듯이 수평 분할은 같은 스키마를 가진 데이터를 2개 이상의 테이블에 나누어 저장하는 것임. 인텍스의 크기를 줄이고 작업 동시성을 늘리기 위한 것이고 그래서 일반적으로 수평분할을 했다고 하면 하나의 DBMS에서 이루어지는 경우라고 생각하면 된다.
- 이에 비해 샤딩은 아예 물리적으로 다른 DB에 수평 분할 방식으로 분산 저장하고 조회하는 방법을 말한다. 위의 예시로 하면
'봉천동 주민' 데이터는 A DB에 '남현동 주민' 데이터는 B DB에 저장하는 것이다. 이렇게 하면 JOIN하는데 있어 여러 제약이 있을 수 있다.
- Horizontal Partitioning(수평 분할)과 샤딩 비교
반응형
'데이터' 카테고리의 다른 글
데이터 레이크(Data Lake) 구조란? (0) | 2022.08.23 |
---|---|
MYSQL 성능 최적화 책 시작 (0) | 2021.05.09 |