'2014/04/05'에 해당되는 글 1건

  1. 2014.04.05 도서관으로 DB 이해하기(인덱스, 옵티마이저)

DB 솔루션은 개발자가 직접 작업을 컨트롤 하지 못한다.

다만 SQL 이라는 언어를 통하여 DB 솔루션과 대화를 하며 개발자가 원하는 데이터를 요청하고

응답 받을 수 있다.

 

이해를 쉽게 하기 위하여 도서관을 DB 솔루션이라고 가정하고

도서를 대여하기 원하는 우리를 개발자로 가정을 하고 설명을 하겠다.

그리고 이 도서관은 우리가 직접 서고로 찾아가서 책을 찾지 못하고

사서에게 자신이 원하는 책을 말하고 사서가 그 책을 서고에서 찾아서 도서를 대여해 준다.

 

우리는 도서관에 가서 원하는 책을 찾으려고 한다.

우리가 원하는 책을 가장 빨리 사서를 통하여 찾는 방법은 바로

도서관의 각 책에 부여하는 도서 일련번호를 바로 말하는 것이다..

 

도서관은 각 도서들만의 유일한 코드를 가지고 있고

도서일련번호순서대로 도서를 관리하고 있으므로

도서일련번호만 말하면 사서는 바로 그 책을 잦아서 우리에게 대여를 해줄 수 있다.

이것이 쉽게 말하면 오라클의 rowid 로 이해할 수 있다.

 

그 다음으로는 대분류(장르)와 소분류(세부장르)로 구별된 사항과 책의 이름을 말하는 것이다.

물론 출판사나 저자의 이름도 유용하다.

 

장르, 세부장르, 출판사, 저자 들은 인덱스로 이해할 수 있다.

 

책의 색깔이나 페이지수 등은 책의 특징이라고 할 수 있다.

 

그렇다면  PK는 무엇일까?

도서일련번호와는 다르게 도서관에서 분류 및 이해를 쉽게 하기 위하여

역시 각 책마다 유일하게 정의할 수 있도록 도서코드

( 예를 들어 대분류-소분류-출판사-출판사별책순서)를 부여해 놓은 것이라고 할 수 있다.


# 도서코드

 o 대분류

 o 소분류

 o 도서이름

 o 저자

 o 출판사

 o 표지색상

 o 페이지수

 o 출판일

 o 대출횟수


 

그러면 옵티마이저는 무엇일까?

우리가 사서에게 대여를 원하는 책을 말할때

이렇게 말 할 수가 있겠다.

(당연히 책의 일련번호나 도서코드를 모르는 상태에서)

 

"빨간색 책인데요. 패이지수는 250페이지입니다.

도서이름은 인간관계론 입니다.  자기개발서적이구요.

아참! 저자는 데일 카네기입니다."


SELECT * FROM 도서

WHERE 표지색상='빨간색' 

  AND 페이지수=250 

  AND 도서이름='인간관계론'

  AND 소분류='자기개발'

  AND 저자='데일 카네기'


이 말을 듣고 만일 사서가 무식하게 도서관의 모든 책을 하나씩 보면서

  1. 표지색상: 빨간색
  2. 페이지수 : 250 페이지
  3. 도서이름 : 인간관계론
  4. 소분류 : 자기개발
  5. 저자 : 데일 카네기

위와 같은 순서로 책을 찾는다면 우리는 엄청난 시간을 사서가 책을 찾아오기까지 기다려야 될 것이다.

 

하지만 영리한 사서는 아마도 아래와 같은 순서대로 찾을 찾으려고 할것이다.

  1. 소분류 : 자기개발
  2. 저자 : 데일 카네기
  3. 도서이름 : 인간관계론
  4. 표지색상 : 빨간색
  5. 페이지수 : 250 페이지

 

보다 더 경험이 많은 사서는

  1. 소분류 : 자기개발
  2. 표지색상 : 빨간색 (빨간색 책은 몇권 안되므로)
  3. 도서이름 : 인간관계론 (저자보다 책이름이 더 크게 보임)
  4. 저자 : 데일 카네기
  5. 페이지수 :250 페이지

 

첫번째 사서는 교육시간에 배운 매뉴얼대로 찾은 것이고 (룰기반 옵티마이저)

두번째 사서는 오랜 경험으로 나름의 방법을 사용하는 찾는것 이다.(비용기반 옵티마이저)


그렇지만 결국에는 아무리 도서관 사서가 똑똑해도 우리가 도서를 대여할 때 정확하게 내가 찾고자 하는

책을 설명해줘야 된다는 것이다.

 

"그 책이 제목이 인간.. 머였는데 좀 두꺼웠어요. 아마 200 페이지는 넘을 거에요.

빨간색이였던건 기억나요. 저자는 외국인 이였어요."

 

SELECT * FROM BOOK

WHERE 도서이름 LIKE '인간%'

  AND 페이지수 > 200

  AND 표지색상 = 'red'


 

이렇게 말하면 사서도 고생 여러분도 고생이다.

Posted by 빨강토끼
,