맵/축소 뷰는 Couchbase 2.0의 중요한 부분이며 쿼리하는 방법을 이해하는 것도 중요합니다. 훌륭한 설명서가 있으며 여기에서 확인할 수 있습니다: http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views.html
미묘한 차이 중 하나는 대부분의 프로그래밍 언어에서 문자열 비교를 통해 문자열 순서를 지정하는 데 사용되므로 일반적으로 더 익숙한 바이트 순서(ASCII 등)와는 다른 유니코드 콜레이션 문자의 순서를 이해하는 것입니다.
바이트 순서(예: ASCII)
유니코드 데이터 정렬(기본 옵션)
문자가 그룹화되므로 모든 대문자 범위와 모든 소문자 범위가 아니라 같은 문자의 소문자, 대문자, 대문자 순으로 그룹화됩니다.
또한 영어가 아닌 악센트가 있는 문자의 경우 다음과 같이 비슷한 원칙을 따릅니다:
모든 "a" 문자 및 강조된 변형 발생 전에 대문자 A와 그 변종으로, 마찬가지로 'b' 문자 앞에 발생합니다.
주문 예시
바이트 순서(예: ASCII) 정렬에서는 다음과 같은 인덱싱된 키가 이 순서로 정렬됩니다:
그러나 카우치베이스 뷰에서 사용되는 유니코드 콜레이션에서는 실제로 발생하는 순서가 이 순서입니다:
따라서 시작키 그리고 끝키 문자열의 범위는 이 순서를 아는 것이 중요합니다!
예제
예를 들어, Couchbase 2.0과 함께 패키지로 제공되는 맥주 샘플 데이터베이스를 사용하여 Breweries by_name을 쿼리하려고 합니다:
대문자 Y로 시작하는 양조장:
대문자 Y로 시작하는 것만 반환합니다!
소문자 y 또는 대문자 Y로 시작하는 양조장:
제공된 데이터로 인해 모두 대문자로만 반환되지만 소문자 y를 포함하는 경우도 있습니다!
소문자 y로 시작하는 양조장만 해당됩니다:
제공된 데이터는 모두 대문자 Y이므로 결과를 반환하지 않아야 합니다!
바이트 순서 ASCII 사고방식에 익숙하다면 이 마지막 쿼리가 가장 직관적이지 않을 것입니다! 범위 쿼리를 하는 분들에게 도움이 되었기를 바랍니다!
PS. 유니코드 데이터 정렬 주제에 관심이 있으시면 다음 URL에서 자세히 알아보세요:
http://www.unicode.org/reports/tr10/
http://userguide.icu-project.org/collation/customization#TOC-Default-Options
유니코드 라틴 데이터 정렬 테이블의 끝은 u02ad입니다. 끝까지 검색할 때 알아두면 좋습니다. 간혹 작동하지만 기술적으로 올바르지 않은 uefff가 표시될 수 있습니다.