더북(TheBook)

값의 범위 처리

값을 조회할 때 값의 범위를 주는 것을 고려해보자. 예를 들어 특정 날짜에 구매한 고객을 모두 조회하려는데 키에 6자리 날짜가 포함되어 있다고 해보자. 이 경우 키의 접두어로 cust 대신 cust061514를 사용하면 2014년 6월 15일에 구매한 고객을 가려낼 수 있다. 고객 ID는 각 키와 연관된 값으로 저장된다.

예를 들어 다음은 2014년 6월 15일 제품을 구매한 최초 고객 10명의 키다.


cust061514:1:custId
cust061514:2:custId
cust061514:3:custId
cust061514:4:custIdcust061514:10:custId

값의 범위를 조회하는 함수는 쉽게 만들 수 있으므로 이런 유형의 키는 키의 범위를 질의할 때 유용하다. 예를 들어 다음에 있는 getCustPurchaseByDate란 함수는 특정 날짜에 구매한 모든 고객, 즉 고객 ID 리스트를 조회하는 함수다.


define getCustPurchByDate(p_date)
    v_custList = makeEmptyList();
    v_rangeCnt = 1;
9780134023212_Sullivan.indb 147 9780134023212_Sullivan.indb 147 3/27/15 9:42 AM 3/27/15 9:42 AM148 Chapter 5 Designing for Key-Value Databases
    v_key = ‘cust:’ + p_date + ‘:’ + v_rangeCnt +
        ‘:custId’;
    while exists(v_key)
        v_custList.append(myAppNS[v_key]);
        v_rangeCnt = v_rangeCnt + 1;
      v_key = ‘cust:’ + p_date + ‘:’ + v_rangeCnt +
              ‘:custId’;
      return(v_custList);

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