'옵티마이저'에 해당되는 글 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 빨강토끼