[22장_a] 병렬 DB

임정환·2023년 6월 12일
0

응용데이터베이스

목록 보기
5/9

병렬적인 Data 처리는 , 대용량 데이터를 다룰 수 있게 해주며 Bandwidth의 증가로 인해 처리율을 높여준다. 병렬적인 DataBase의 아키텍처와 데이터 처리 방법에 대해 알아보자.

병렬성에 따른 성능 향상

병렬성이 증가할 수록

  • 초당 TX 처리율은 높아진다.
  • TX당 걸리는 시간은 같다.

병렬 머신 아키텍처

  • Shared Memory 구조 : Memory를 공유한다.
    • 병렬 DB와 공유된 메모리를 가진 구조.
    • 각 프로세스는 자신의 disk를 가진다.
    • 메모리 공유에 유리하다. ( IPC )
    • 비싸다.
    • ScaleUp이 어렵다.
  • Shared Disk 구조 : Disk와 Processor를 공유한다.
    • 각 프로세서가 자신만의 메모리를 가진다.
    • client는 system의 모든 disk에 접근가능하다.
  • Shared Nothing 구조 : 모든 것이 독립적이다.
    • 각 client ( machine )가 자신만의 disk와 memory를 가진다.
    • 프로그래밍이 어렵다
    • 저렴하다.
    • 쉽게 ScaleUp할 수 있다.
    • network를 통한 communication

데이터 분할


데이터 베이스를 병렬적으로 나누었을 때 분할하는 방법에 따른 유불리가 존재한다.

  • Range 방식으로 Partion ( 정렬 후 쪼개서 DB들에 저장 )
    • 동등 join에 유리
    • range query에 유리
    • group-by에 유리
  • Hash 방식 Partition
    • 동등 join에 유리
  • Round Robin 방식 Partion ( 한 번씩 돌아가면서 저장 )
    • 고르게 DB에 데이터 적재 가능

병렬 Scan

  • 병렬적인 Scan을 하고, 결과를 Merge
  • range 혹은 hash partition에 대해서는 모든 site를 scan할 필요가 없다.
  • 각 site마다 index가 built될 수 있다.

병렬 Sorting

  • 각 site마다 scan , 이후 sorting
  • 결과값은 sorting되어있지만 , range-partitioned되어있다.

Data를 샘플링하여 분할 지점을 결정하여 불균형 문제를 해결한다.

병렬 Join

  • Nested-Loop Join
    Join되는 col에 대하여, 각 table의 모든 tuple을 비교한다.
    Join되는 col에 대해 range partition되어있을 경우 유리하다.
  • Sort-Merge Join
    sorting으로 인한 range-partiton이 된다. 하지만, 불균형 문제 발생

병렬 Hash Join

  • 해싱을 통해, 분산 partition
  • 해시 조인을 실행
  • 동등 조인에 유리하다

병렬 Query 최적화

What's wrong?

  • 2phase 최적화가, 무조건 최적을 보장하는 것은 아니다.
  • 반례
    두 node에 대해 best serial plan이 best parellel plan이 아닐수도 있다.
    • Table이 local two node로 partion되어있다.
    • node 1에는 A~M까지 ( 99% )
    • node 2에는 N~Z까지 ( 1% )
    • node 1은 scan을 해야한다
    • node 2는 secondary index를 사용해야한다

병렬 DB 요약

  • 병렬성은 성능향상의 매우 좋은 도구이다
    • Pipeline과 Partition을 통해 구현
  • 대부분의 DB 연산 또한 병렬 DB에서도 가능하다
profile
CS 박제

0개의 댓글