값의 범위 처리
값을 조회할 때 값의 범위를 주는 것을 고려해보자. 예를 들어 특정 날짜에 구매한 고객을 모두 조회하려는데 키에 6자리 날짜가 포함되어 있다고 해보자. 이 경우 키의 접두어로 cust 대신 cust061514를 사용하면 2014년 6월 15일에 구매한 고객을 가려낼 수 있다. 고객 ID는 각 키와 연관된 값으로 저장된다.
예를 들어 다음은 2014년 6월 15일 제품을 구매한 최초 고객 10명의 키다.
cust061514:1:custId cust061514:2:custId cust061514:3:custId cust061514:4:custId … cust061514: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);