분류

카우치베이스 104: Q&A

현재 진행 중인 교육 시리즈에서 매번 여러 가지 질문이 나오는데, 아래에 각 질문에 대한 답변을 나열해 보았습니다!

Couchbase 104 - 조회 및 인덱싱

질문: * 및 %와 같은 와일드카드가 뷰 쿼리에서 지원되나요?

A: 꼭 그렇지는 않지만, 많은 경우 시작키에 일부 텍스트가 포함된 범위 쿼리를 사용하면 와일드카드가 필요한 많은 부분을 대체할 수 있지만 전부는 아닙니다. 예를 들어 "user::"로 시작하는 모든 키를 가져오려면 startkey="user" 및 endkey="useruefff"를 사용하면 됩니다. "user" 및 "uzer"의 인덱싱된 키와 일치하는 startkey="u%er"와 같은 작업은 할 수 없습니다.

질문: 조회수가 있는 그래프를 어떻게 모델링할 수 있나요?

답변: 이 질문은 '그래프'가 실제로 무엇이고 어떻게 쿼리할 것인지에 대한 매우 개방적인 질문이기 때문에 답변하기가 다소 어렵습니다. "트위터 스타일"로 하는 경우 실제로는 그래프가 아니라 팔로워 및 내가 팔로우하는 사람들의 목록입니다. 엄밀히 말하면 깊이가 제한된 그래프이지만 두 개의 목록에 가깝습니다. 노드 간의 관계 속성을 기반으로 그래프를 쿼리하는 경우 매우 빠르게 매우 복잡해질 수 있습니다. 또한 여러 수준의 깊이(또는 분리 정도)를 쿼리하는 경우 이 역시 매우 복잡해질 수 있습니다. 그래프 데이터베이스는 그래프 구조를 탐색하고 쿼리할 수 있도록 데이터 구조가 특별히 설계되어 있습니다. 그러나 범용 데이터 저장소만큼 좋지는 않으므로 Couchbase와 그래프 데이터베이스를 함께 사용하는 것이 좋습니다(저는 Couchbase와 Neo4J를 아주 훌륭하게 함께 사용했습니다).

질문: 데이터 정렬의 기본 순서를 변경할 수 있는 옵션이 있나요?

A: 기본적으로 제공되지는 않지만 소스에서 수정하고 빌드할 수 있는 방법이 있을 것입니다. 이 문제가 중요하다면 Couchbase 구글 그룹에 게시해 주세요. 유니코드 데이터 정렬은 바이트 순서보다 훨씬 더 유리합니다.

질문: 날짜열기(timestamp)를 색인된 키로 사용하여 월별로만 그룹화하려면 어떻게 해야 하나요?

A: B+ 트리는 여전히 복합 키를 문자열로 정렬하므로 emit 문에서 인덱싱된 키를 변경하지 않고는 월(여러 연도)만으로 그룹화할 방법이 없습니다. emit(dateToArray(timestamp).splice(1), output_val)를 수행하여 연도를 제거하거나 둘 다 필요한 경우 이를 위한 다른 뷰를 만들 수 있습니다. 그러나 yyyy가 앞에 있는 dateToArray()의 표준 출력을 사용하는 경우 MM으로만 그룹화하고 yyyy를 무시할 수 없습니다.

질문: 하나의 맵() 함수에서 여러 개의 키가 방출되고 다른 키가 방출되는 경우 어떻게 되나요?

A: 단일 인덱스에 추가되고 그 안에서 문자열로 정렬됩니다. 이를 사용하여 비디오에서 보여드린 대로 맥주 샘플 데이터베이스 뷰와 함께 제공되는 "시뮬레이션된" 조인을 수행할 수 있습니다. 각 뷰는 단일 인덱스이므로 각 맵 함수는 해당 인덱스를 생성하는 처리이며 맵 함수 내의 각 emit 문은 인덱싱된 키를 노드로 출력하고 연결된 출력 값과 meta.id를 첨부합니다. 또한 해당 노드와 그 아래의 모든 노드(자식)의 축소 값을 B+ 트리에 저장하여 축소 쿼리 속도를 높이고 축소 시 모든 노드를 순회하지 않아도 됩니다. 

질문: 보기에서 전체 텍스트 검색이 가능한가요?

A: 아니요, 뷰를 인덱스로 사용하는 것은 불가능하지만 이를 위해 Elastic Search 통합을 사용할 수 있습니다. 또한 Couchbase의 임시 쿼리를 위한 N1QL Couchbase 쿼리 언어의 개발자 프리뷰도 있습니다. 이것은 Couchbase와 독립적인 소프트웨어로 현재 병렬로 실행되며 온라인 튜토리얼도 있습니다: https://www.couchbase.com/communities/n1ql

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

Author

Posted by Jennifer Garcia

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

댓글 하나

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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