이 상태에서 데이터베이스를 액세스하려면 어떻게 해야 할까요? 예를 들어 John의 레코드를 얻고자 할 때는 먼저 John이 어느 샤드에 있는지 파악해야 합니다. 이를 위해 할 수 있는 방법은 다음과 같습니다.
• 해시 함수 사용: John이라는 문자열을 입력 값으로 하여 해시 함수를 실행합니다. 연산 후 얻은 정수 값을 샤드 넘버로 사용합니다.
• 로케이터(locator) DB 사용: John이 어느 샤드에 저장되었는지를 담고 있는 별도의 테이블에 액세스하여 John이 어느 샤드에 있는지 파악합니다.
여기서는 두 번째 방법을 사용하겠습니다. 로케이터 DB를 사용하는 방법을 써서 John의 레코드가 어느 샤드에 있는지 파악했으면, 해당 샤드에 데이터베이스 질의를 실행합시다.
그림 8-4를 볼까요?
▲ 그림 8-4 DB 코디네이터가 로케이터 DB, DB 샤드를 이용해서 DB 분산