Ruby

뷰 쿼리에서 문자 순서 지정 이해

맵/축소 뷰는 Couchbase 2.0의 중요한 부분이며 쿼리하는 방법을 이해하는 것도 중요합니다. 훌륭한 설명서가 있으며 여기에서 확인할 수 있습니다: http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views.html

미묘한 차이 중 하나는 대부분의 프로그래밍 언어에서 문자열 비교를 통해 문자열 순서를 지정하는 데 사용되므로 일반적으로 더 익숙한 바이트 순서(ASCII 등)와는 다른 유니코드 콜레이션 문자의 순서를 이해하는 것입니다.

바이트 순서(예: ASCII)

123456890 < AZ < az

유니코드 데이터 정렬(기본 옵션)

123456790 < aAbBcCdDeEfFgGhH...

문자가 그룹화되므로 모든 대문자 범위와 모든 소문자 범위가 아니라 같은 문자의 소문자, 대문자, 대문자 순으로 그룹화됩니다.

또한 영어가 아닌 악센트가 있는 문자의 경우 다음과 같이 비슷한 원칙을 따릅니다:

a < á < A < Á < b
 

모든 "a" 문자 및 강조된 변형 발생 전에 대문자 A와 그 변종으로, 마찬가지로 'b' 문자 앞에 발생합니다. 

주문 예시

바이트 순서(예: ASCII) 정렬에서는 다음과 같은 인덱싱된 키가 이 순서로 정렬됩니다:

"ABC123" < "ABC223" < "abc123" < "abc223" < "abcd23" < "bbc123" < "bbcd23"

그러나 카우치베이스 뷰에서 사용되는 유니코드 콜레이션에서는 실제로 발생하는 순서가 이 순서입니다:

"abc123" < "ABC123" < "abc223" < "ABC223" < "abcd23" < "bbc123" < "bbcd23"

따라서 시작키 그리고 끝키 문자열의 범위는 이 순서를 아는 것이 중요합니다! 

예제

예를 들어, Couchbase 2.0과 함께 패키지로 제공되는 맥주 샘플 데이터베이스를 사용하여 Breweries by_name을 쿼리하려고 합니다:

대문자 Y로 시작하는 양조장:
시작키="Y"&끝키="z"

대문자 Y로 시작하는 것만 반환합니다!

소문자 y 또는 대문자 Y로 시작하는 양조장:
시작키="y"&끝키="z"

제공된 데이터로 인해 모두 대문자로만 반환되지만 소문자 y를 포함하는 경우도 있습니다!

소문자 y로 시작하는 양조장만 해당됩니다:
시작키="y"&끝키="Y"

제공된 데이터는 모두 대문자 Y이므로 결과를 반환하지 않아야 합니다!

바이트 순서 ASCII 사고방식에 익숙하다면 이 마지막 쿼리가 가장 직관적이지 않을 것입니다! 범위 쿼리를 하는 분들에게 도움이 되었기를 바랍니다!

scalabl3

PS. 유니코드 데이터 정렬 주제에 관심이 있으시면 다음 URL에서 자세히 알아보세요:

http://www.unicode.org/reports/tr10/

http://userguide.icu-project.org/collation/customization#TOC-Default-Options

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 카우치베이스 팀

의 선임 웹 관리자입니다. 웹 사이트 관리자로서 디자인, 구현, 콘텐츠 및 성능을 포함한 웹 사이트 자산에 대한 전반적인 책임을 맡고 있습니다.

댓글 하나

  1. 매트 인젠트론 1월 20, 2013에서 3:25 오후

    유니코드 라틴 데이터 정렬 테이블의 끝은 u02ad입니다. 끝까지 검색할 때 알아두면 좋습니다. 간혹 작동하지만 기술적으로 올바르지 않은 uefff가 표시될 수 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.