N1QL은 Couchbase Server를 위한 차세대 쿼리 언어입니다. 여러 가지 면에서 SQL과 관계형 모델을 뛰어넘는데, 가장 중요한 것은 N1QL의 속성이 여러 값을 포함할 수 있고 이러한 값을 중첩할 수 있다는 점입니다. 이 블로그에서는 전자상거래 애플리케이션에서 흔히 볼 수 있는 몇 가지 N1QL 쿼리에 대해 살펴보겠습니다. 이러한 종류의 앱에는 다음과 관련된 다양하고 풍부한 데이터가 있습니다. 제품, 고객및 구매.
먼저, 다음과 같은 목록을 가져옵니다. 제품 특정 카테고리에 속함(이 경우 '가전제품'을 찾고 있음)
선택 제품
FROM 제품
UNNEST 제품.카테고리 as 카테고리
어디 카테고리 = "어플라이언스"
이제 구매하려는 기기를 찾았지만 결제하기 전에 스토어에 로그인해야 합니다. 앱은 아래와 같이 사용자 프로필을 JSON 문서 형태로 Couchbase에 저장할 수 있습니다:
{
"ccInfo": {
"cardExpiry": "2013-09-12",
"카드번호": “1228-1221-1221-1431”,
"카드 유형": "discover"
},
"customerId": "customer0",
"dateAdded": “2013-06-23T04:32:31Z”,
"dateLastActive": “2013-07-23T04:32:31Z”,
"이메일주소": "zion@armstronghaley.biz",
"이름": "Rosella",
"성": "트렘블레이",
"전화 번호": "1-543-962-9861 x534",
"우편번호": "75832",
"state": "PR",
"type": "고객"
}
]
….
이제 다음과 같은 목록을 가져와 보겠습니다. 고객 와 이메일 주소를 확인합니다. 이를 위해 다음 N1QL 쿼리를 사용할 수 있습니다:
선택 이름 || ” “ || 성 as 전체 이름, 이메일주소
FROM 고객
|| 는 N1QL에서 문자열을 연결하는 데 사용됩니다. 이 쿼리의 결과는 다음과 같습니다.
{
"이메일주소": "zion@armstronghaley.biz",
"전체 이름": "로젤라 트렘블레이"
},
{
"이메일주소": "kobe@douglas.net",
"전체 이름": "에리히 토이"
},
….
로그인한 후 장바구니에 상품을 추가합니다. 결제하기 전에 마음에 드는 품목을 장바구니에 몇 개 더 추가합니다. 그런 다음 주문을 제출합니다. 잠시 후 배송팀에서 주문이 접수되었다는 알림을 받고 구매 주문서를 검토하여 패키지를 우편으로 발송할 준비를 하고 싶다고 합니다.
다음 N1QL 쿼리는 "purchase0"에 대한 쇼핑 구매 주문을 준비합니다.
선택 구매, 제품, 고객
FROM 구매 KEY "purchase0" UNNEST 구매.lineItems AS 항목
JOIN 제품 KEY 항목.제품
JOIN 고객 KEY 구매.customerId
연말이 되면 스토어는 연간 판매. 다음 N1QL 쿼리는 월별 판매량을 계산합니다.
선택 substr(구매.구입처, 0, 7) as 월, 라운드(합계(제품.단위가격 * 항목.카운트)/1000000, 3)로 수익백만
FROM 구매 unnest 구매.lineItems as 항목 join 제품 키 항목.제품
그룹 BY substr(구매.구입처, 0, 7)
주문 BY 월
더 알고 싶으신가요?
이커머스 관련 N1QL 쿼리 몇 개만 간략하게 살펴봤습니다. N1QL에 대해 자세히 알아보려면 다음을 확인하세요. http://query.couchbase.com 그리고 곧 개최 예정인 N1QL 웨비나 를 클릭해 이 사용 사례를 자세히 살펴보세요.