본문 바로가기

관계형 데이터베이스(RDBMS) 조인 알고리즘 비유로 설명: Nested Loop Join, Hash Join, Sort Merge Join

by ㅇㅍㅍ 2023. 7. 26.
관계형 데이터베이스(RDBMS) 조인 알고리즘 비유로 설명: Nested Loop Join, Hash Join, Sort Merge Join
728x90

Nested Loop Join과 Hash Join, Sort Merge Join을 비유로 설명해보겠습니다:

 

Nested Loop Join (트럼프 카드 한 세트와 다른 트럼프 카드 한 세트를 짝짓는다고 가정):

  1. 우리에게는 두 세트의 트럼프 카드가 있습니다. 한 세트의 카드를 왼손으로, 다른 세트의 카드를 오른손으로 잡습니다.
  2. 왼손에 든 카드는 바깥쪽 루프로, 오른손에 든 카드는 안쪽 루프로 선택합니다.
  3. 바깥쪽 루프의 각 카드를 하나씩 순회하면서, 안쪽 루프의 카드들 중에서 같은 숫자를 가진 카드를 찾습니다. 그리고 그 짝을 짓습니다.
  4. 모든 카드들을 순회하면서 짝을 찾을 때까지 반복합니다.
  5. 순회 과정에서 일치하는 카드를 찾는 것이 너무 오래 걸리면 성능이 저하될 수 있습니다.

 

Hash Join (트럼프 카드를 하트, 다이아몬드, 스페이드, 클로버로 그루핑하여 짝짓는다고 가정):

  1. 우리에게는 두 세트의 트럼프 카드가 있습니다. 하나는 하트, 다이아몬드, 스페이드, 클로버로 그루핑된 카드 세트, 다른 하나도 하트, 다이아몬드, 스페이드, 클로버로 그루핑된 카드 세트입니다.
  2. 먼저 두 세트 모두에서 하트 그룹, 다이아몬드 그룹, 스페이드 그룹, 클로버 그룹을 해시 테이블에 저장합니다. 이렇게 하면 같은 그룹의 카드가 해시 테이블에 빠르게 찾을 수 있습니다.
  3. 이제 해시 테이블에서 첫 번째 세트의 하트 그룹을 순회하면서, 다른 세트의 하트 그룹과 일치하는 카드를 찾아서 짝을 짓습니다.
  4. 해시 테이블에서 다이아몬드, 스페이드, 클로버 그룹도 순회하면서, 다른 세트의 해당 그룹과 일치하는 카드를 찾아서 짝을 짓습니다.
  5. 모든 그룹을 순회하면서 짝을 찾을 때까지 반복합니다.
  6. 해시 테이블을 만드는 과정이 한 번 발생하므로 초기 비용은 있지만, 카드를 찾는 것은 빠르게 이루어집니다.

 

Sort Merge Join (트럼프 카드를 각 세트를 전체 정렬한 다음, 짝을 맞추는 것으로 가정):

  1. 먼저 우리에게는 두 세트의 트럼프 카드가 있습니다.
  2. 첫 번째 트럼프 카드 세트와 두 번째 트럼프 카드 세트를 각각 숫자 순으로 정렬합니다. 즉, 하트, 다이아몬드, 스페이드, 클로버 각각의 숫자 순으로 정렬합니다.
  3. 정렬된 두 세트의 트럼프 카드를 순서대로 비교합니다.
  4. 만약 첫 번째 세트의 카드가 두 번째 세트의 카드와 일치한다면, 이 두 카드는 짝이 됩니다.
  5. 첫 번째 세트와 두 번째 세트의 카드를 모두 비교하면서 짝을 찾을 때까지 반복합니다.
  6. 모든 카드를 비교하고 짝을 찾으면, Sort Merge Join이 완료됩니다.

 

 

목차
 

 

반응형

댓글