1 Terabytes Data를 처리하기위해 10MB/s를 사용하면 1.2일이 걸리는 반면, 1000개의 parallel access를 통해 1.5분에 처리
=> Data의 빠른 처리를 위해 분산 처리를 하고자 병렬로 접근
: many machines each doing one step in multi-step process
: doting same thing(step) to different pieces of data
프로세스간 메모리를 공유, 디스크는 각자
: 프로그래밍하기는 쉬우나, 확장성이 낮다.
: 다른 프로세스가 네트워크로 연결되어, 프로그래밍하긴는 어려우나, 구축이 쉽고 확장성이 좋다
- pipe lining 개념
machine cycle : fetch, decode, execution의 cycle은 여러 operator로 구성
: all machines working to compute a given operation (scan, sort, join etc..)
e.g Select 연산자의 작업을 여러 개의 스레드 또는 프로세스를 사용하여 병렬로 실행. 각 프로세스는 동일한 연산자에 대해 다른 입력 데이터 조각을 처리하고 결과를 mergel
-> 단일 연산자의 처리 속도를 향상
: each operator run concurrently on different site (pipelining 방식, 연산자 간 병렬처리)
e.g SELECT, JOIN, GROUP BY 등 여러 연산자가 순차적으로 실행하여
-> 전체 쿼리의 처리 속도 향상
: different queries run on different sites
: data 분할 (★) , data 쪼개기
: table의 attribute에 대해 sorting
=> 범위에 따라 분할
i. equljoin
ii. 범위 질의
iii. group by
query에 적합
: 정렬후 hash값에 따라 해당되는 disk에 저장.
equijoin 에 적합
: sorting 후, Round Robin 방식으로 데이터를 디스크에 할당
골고루 분산됨 (balanced partitioning, 균등 분할)
<=> range나 hash는 골고루와는 거리가 멈