seegongsik
내 단어장
데이터

데이터베이스는 어떻게 그 안에서 찾아낼까

도서관에 책이 열 권이면 한 권씩 훑어 금방 찾아요. 그런데 책이 수백만 권이면요? 한 권씩 다 보다간 하루가 다 가요. 데이터베이스도 똑같아요. 처음엔 전체를 한 줄씩 훑어 찾지만, 데이터가 수억 건으로 늘면 이건 너무 느려요. 그래서 미리 색인을 만들어 두고 바로 점프해 찾아요.

01

처음엔 한 줄씩 훑어 찾아요

앞에서 데이터베이스는
표 모양으로 줄지어 정리된다고 배웠어요.
그 안에서 무언가를 찾는
가장 단순한 방법은 이거예요.
맨 윗줄부터 한 줄씩
맞는지 보며 아래로 내려가는 거죠.
맞는 줄을 만나면 멈춰요.
이렇게 처음부터 끝까지
다 훑는 걸 전체 검색이라고 해요.

찾고 싶은 값을 눌러봐요

찾고 싶은 값을 눌러봐요. 맨 위부터 한 칸씩 훑어 내려가며, 도달까지 몇 번 봤는지 세어줘요.

위쪽에 있는 값은
몇 번만에 금방 찾았죠.
그런데 아래쪽에 있는 값은
그 위를 다 지나야 도달했어요.
찾는 값이 맨 끝에 있으면
결국 모든 줄을 다 본 셈이에요.
줄 수가 적을 땐 이래도
충분히 빨라서 문제가 없어요.
그렇다면 줄이 아주 많아지면 어떨까요?

02

데이터가 폭증하면 훑기가 느려져요

실제 데이터베이스는
줄 수가 어마어마해요.
수백만, 수억 줄도 흔하죠.
전체 검색은 맨 끝 값을 찾을 때
그 모든 줄을 한 번씩 봐야 해요.
그러니 줄이 두 배가 되면
봐야 할 횟수도 두 배가 되죠.
줄이 늘어난 만큼
찾는 비용이 그대로 따라 늘어요.
이게 전체 검색의 한계예요.

건수10
맨 끝 값을 찾는 전체 검색 횟수
10
건수를 키워 막대가 어떻게 늘어나는지 봐요

건수를 클릭으로 키워봐요. 맨 끝 값을 전체 검색으로 찾는 데 드는 횟수가 막대로 가파르게 늘어요.

건수를 키울수록
막대가 쑥쑥 길어졌죠.
작은 표에선 대수롭지 않던 일이
큰 표에선 큰 부담이 돼요.
매번 처음부터 끝까지 훑는 한
이 비용은 피할 수가 없어요.
그렇다면 훑지 않고도
바로 그 자리로 갈 방법은 없을까요?
다행히 똑똑한 방법이 있어요.

03

색인을 만들어 바로 점프해요

책 뒤에 붙은 찾아보기를 떠올려봐요.
낱말이 가나다순으로 정렬돼 있고
옆에 몇 쪽인지 적혀 있죠.
책을 처음부터 다 넘기지 않고
찾아보기에서 낱말을 짚어
그 쪽으로 바로 펼쳐요.
데이터베이스도 이런 목록을
미리 만들어 둘 수 있어요.
그걸 색인, 곧 인덱스라고 해요.

정렬된 색인
표(저장 순서)
171
212
353
46
588
629
745
837
색인에서 이름표를 눌러봐요

정렬된 색인에서 이름표를 눌러봐요. 표를 훑지 않고 클릭 한두 번에 바로 그 줄로 점프해요.

색인을 짚으니
표를 훑지 않고도 바로 갔죠.
맨 끝에 있는 값이라도
클릭 한두 번이면 충분했어요.
비결은 색인이 미리
가지런히 정렬돼 있다는 점이에요.
정렬돼 있으면 어디쯤 있는지
금방 좁혀 짚을 수 있거든요.
전체를 다 볼 필요가 사라진 거죠.

04

전체 검색과 색인을 견줘봐요

두 방법을 나란히 두고
같은 건수에서 견줘볼까요.
전체 검색은 줄 수만큼
많은 횟수를 봐야 해요.
색인은 정렬을 이용해
아주 적은 횟수로 끝나요.
건수가 같아도 결과는
하늘과 땅 차이예요.
그래서 자주 찾는 자료에는
색인을 만들어 두는 게 이득이죠.

건수
전체 검색
색인
같은 값을 두 방식으로 찾아 횟수를 견줘봐요

건수를 고르고 양쪽 찾기를 눌러봐요. 전체 검색과 색인이 같은 값을 찾는 데 든 횟수를 나란히 비교해요.

건수를 키울수록
전체 검색 막대는 쭉쭉 늘었지만
색인 막대는 거의 그대로였죠.
바로 이 차이 때문에
큰 데이터일수록 색인이 빛나요.
물론 색인도 공짜는 아니에요.
미리 만들고 정렬을 유지하는
수고가 들거든요.
그래도 자주 찾는다면 그만한 값을 해요.

05

정리해볼까요

한 줄로 모으면 이래요.
가장 단순한 찾기는 전체 검색,
곧 처음부터 한 줄씩 다 훑기예요.
데이터가 적으면 충분해요.
하지만 수억 건으로 폭증하면
훑는 비용이 가파르게 늘어요.
그래서 미리 색인을 만들어
클릭 한두 번에 바로 점프해요.
같은 건수라도 색인이 훨씬 적게 봐요.

1
한 줄씩 훑기
2
데이터 폭증
3
색인으로 점프
4
전체검색 vs 색인
다음 핵심을 눌러봐요

핵심을 차례로 눌러 되짚어봐요. (한 줄씩 훑기 → 데이터 폭증 → 색인으로 점프 → 전체검색 vs 색인)

이제 데이터베이스가
전체 검색에서 색인으로
왜 넘어가는지 알게 됐어요.
그런데 그 색인을
실제로는 어떻게 만들까요?
정렬된 목록 말고도
해시와 트리 같은 방법이 있어요.
그 똑똑한 색인 구조를
다음 강들에서 하나씩 따라가봐요.

한 줄 정리데이터베이스가 무언가를 찾는 가장 단순한 방법은 처음부터 한 줄씩 끝까지 훑는 전체 검색이에요. 데이터가 적을 땐 충분히 빨라요. 하지만 건수가 수억으로 폭증하면, 훑어야 할 줄도 그만큼 많아져서 점점 느려져요. 그래서 미리 색인을 만들어 둬요. 색인은 정렬된 이름표 목록 같아서, 처음부터 다 훑지 않고 클릭 한두 번에 바로 그 자리로 점프해요. 같은 건수라도 색인은 전체 검색보다 훨씬 적은 횟수로 찾아내죠. 색인을 실제로 어떻게 만드는지(인덱스, 해시, 트리)는 다음 강들에서 이어가요.
데이터
이 페이지가 도움 됐다면 후원하기