더북(TheBook)

인덱스

인덱스inverted index는 같은 엔터티에 있는 다른 속성값을 이용해 키나 값을 검색하는 데 사용하는 키-값 쌍의 집합이다. 다시 티켓 기록 예제를 살펴보자.


ConcertApp[ticketLog:9888] = {'conDate':15-Mar-2015, 'locDescr':
'Springfield Civic Center', 'assgnSeat': 'J38'}

이 문장은 모든 콘서트의 예약된 좌석 정보를 모두 기록하는 데는 유용하지만 사용 중인 키-값 데이터베이스에서 검색 기능을 제공하지 않는다면 특정 장소에 있는 예약 좌석만 찾는 것은 어렵다. 이런 경우 역 인덱스가 유용하다. Springfield Civic Center에서 열리는 콘서트의 모든 좌석을 조회하고 싶다면 다음과 같은 함수를 사용할 수 있다.


define addLocAssgnSeat(p_locDescr, p_seat)
  begin
      v_seatList = ConcertApp[p_locDescr]
      v_seatList = append(v_seatList, p_seat)
      ConcertApp[p_locDescr] = v_seatList
  end;

이 함수는 장소 이름과 좌석을 매개변수로 받아 v_seatList라는 지역변수에 해당 장소에서 팔린 좌석 리스트의 복사본을 저장한다. append 문은 p_seat 매개변수를 v_seatList에 추가하고, 그 다음 문장은 p_locDescr 매개변수에 명시된 위치와 연관된 값에 새로 팔린 좌석 정보를 할당한다.

다음과 같이 이 함수가 최초로 한 번 호출됐다면 ConcertApp['Springfield Civic Center']의 값으로 {'J38'}이 할당될 것이다.

addLocAssgnSeat('Springfield Civic Center', 'J38')

J39, A17, A18, A19, R22 좌석을 판매한 후 각 좌석에 대해 addLocAssngSeat 함수를 호출했다면 ConcertApp['Springfield Civic Center'] 값은 {'J38', 'J39','A17','A18', 'A19', 'R22' }이 될 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.