2020년 봄, 저희는 Couchbase SDK의 최신 개편 버전을 출시했습니다: 3.0. Couchbase Server 6.5.0과 함께 출시되어 범위 및 컬렉션에 대한 초기 실험적 지원을 제공하면서 완전히 새로운 API와 여러 플랫폼에 걸친 일관성을 포함했습니다. SDK 3.0은 카우치베이스 역사에서 중요한 이정표였지만, 카우치베이스 서버를 사용하는 개발자에게는 또 하나의 점진적인 개선에 불과했습니다. Couchbase Server는 계속해서 새로운 기능을 추가하며 발전하고 있으며, 이에 따라 FTS 지리 폴리곤 지원 및 버킷 내구성 관리 등의 기능이 더욱 개선된 Couchbase SDK 3.1.0을 출시하게 되었습니다.
이 글에서는 모든 Couchbase SDK에 추가된 새로운 기능을 하나씩 살펴봅니다. 예제는 C#에 있지만 Java, Go 또는 다른 언어에 관계없이 모든 SDK에서 유사한 관용적 구현이 이루어질 것으로 예상됩니다.
FTS 지오 폴리곤 지원
두 가지 유형의 지리적 쿼리를 보강합니다, 포인트 거리 그리고 바운드 사각형는 이미 6.5.0에서 카우치베이스에서 지원됩니다. 지리적 경계 다각형 쿼리 지원이 추가되었습니다. 포인트 거리 쿼리는 내 주변 음식점이나 정렬된 주변 거리와 같은 것을 찾는 데 유용합니다. 경계 직사각형 쿼리는 도시 블록과 같이 주변의 특정 직사각형 경계 내에 있는 레스토랑을 찾는 데 도움이 됩니다. 지리적 경계 다각형 쿼리를 사용하면 좌표 쌍 배열을 입력 매개변수로 사용하여 임의의 경계 다각형 내에 있는 레스토랑을 찾을 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var 쿼리 = new 지오폴리곤 쿼리(new 목록<좌표> { 좌표.OfLatLon(37.79393211306212, -122.44234633404847), 좌표.OfLatLon(37.779958817339967, -122.43977141339417), 좌표.OfLatLon(37.788031092020155, -122.42925715405579), 좌표.OfLatLon(37.79026946582319, -122.41149020154114), 좌표.OfLatLon(37.79571192027403, -122.40735054016113), 좌표.OfLatLon(37.79393211306212, -122.44234633404847) }).필드("geo"); var 결과 = 기다림 클러스터.검색 쿼리 동기화("food-idx", 쿼리); foreach (var 결과 in 결과) { //결과로 무언가를 하세요. } |
지리적 다각형 쿼리에 대한 자세한 내용은 다음에서 확인할 수 있습니다. 이 블로그 게시물을 참조하세요.
버킷 내구성 관리
내구성 수준 보장 문서의 지속성; 문서가 디스크에 지속되었는지 여부와 문서가 얼마나 많은 복제본에 기록되었는지 여부입니다.
이전 버전의 카우치베이스 서버와 SDK에서는 K/V 작업을 통해서만 지속성 수준 설정을 제공할 수 있었기 때문에, 특히 버킷 내의 모든 문서에 대해 지속성 보장이 동일해야 하는 경우 반복적이고 일상적인 프로세스로 변질될 수 있었습니다. 이제 카우치베이스 서버 6.6부터는 버킷 수준에서 내구성을 설정으로 추가할 수 있습니다. 이 기능은 이제 SDK 3.1을 통해 사용할 수 있습니다. 카우치베이스 서버 6.6은 버킷 수준의 내구성을 추가하여 버킷 내의 모든 문서에 특정 내구성을 적용할 수 있도록 합니다. Couchbase SDK 3.1.0에서는 버킷 관리 API를 사용하여 SDK에 대한 지원을 계속합니다.
1 2 3 4 5 6 7 8 9 10 11 |
var 설정 = new 버킷 설정 { 이름 = 이름, 버킷 유형 = 버킷 유형.카우치베이스, RamQuotaMB = 100, 퇴거 정책 = 퇴거 정책 유형.전체 퇴거, 내구성최소수준 = 내구성 수준.대다수 }; // create 기다림 버킷 관리자.CreateBucketAsync(설정).구성대기(false); |
지원되는 내구도 레벨은 다음과 같습니다:
- 대다수 - 문서가 클러스터의 구성된 노드 대부분에 복제되어 있어야 합니다.
- 다수결 및 지속 활성 - 와 동일하지만 문서가 활성 노드에도 유지되어야 내구성 요구 사항을 충족할 수 있습니다.
- PersistToMajority - 문서가 디스크의 구성된 노드 대부분에 유지되어야 합니다.
기본 지속성 수준은 없음이지만 문서를 삽입하거나 업데이트할 때 지속성 수준을 지정할 수 있습니다.
버킷 임시 관리
이 기능을 사용하면 관리 API를 사용하여 임시 버킷을 만들 때 문서에 대한 퇴거 정책을 설정할 수 있습니다. 현재 지원되는 퇴출 정책은 다음과 같습니다:
- NRU 퇴거 - 메모리 할당량에 도달하면 카우치베이스 서버는 최근에 사용하지 않은 데이터를 내보냅니다.
- 퇴거 금지 - 카우치베이스 서버는 명시적으로 삭제할 때까지 모든 데이터를 보관하지만 버킷에 설정한 할당량(전용 메모리)에 도달하면 새로운 데이터는 거부합니다.
다음은 NRU 퇴거 설정의 예입니다:
1 2 3 4 5 6 7 8 9 10 |
var 버킷 관리자 = 클러스터.버킷; var 설정 = new 버킷 설정 { 이름 = "일부-버킷", 버킷 유형 = 버킷 유형.임시, RamQuotaMB = 100, 퇴거 정책 = 퇴거 정책 유형.최근 사용 안 함 }; 기다림 버킷 관리자.CreateBucketAsync(설정).구성대기(false); |
지정하지 않으면 기본값은 퇴거 없음입니다.
FTS 플렉스 인덱스
FTS 플렉스 인덱스
플렉스 인덱스 는 개발자가 Couchbase 쿼리 서비스를 사용하여 검색 기능을 활용할 수 있는 기능을 제공합니다. 예를 들어, N1QL은 선택성이 있는 B-Tree 인덱스를 사용하고 FTS는 낮은 선택성 또는 "퍼지"를 제공하는 반전 인덱스를 사용합니다. Flex Index를 사용하면 원하는 동작에 대한 힌트를 서비스에 제공함으로써 정확한 쿼리와 퍼지 쿼리를 모두 결합할 수 있습니다. SDK에서는 이 기능이 노출되어 있지만, 쿼리옵션 객체에 간단한 플래그를 설정하면 N1QL 서비스가 쿼리를 처리하는 데 FTS 인덱스 사용을 고려하도록 지시할 수 있습니다.
1 2 3 4 5 6 |
var 결과 = 기다림 클러스터.QueryAsync<동적>("SELECT * FROM `default` WHERE type=$name;", 옵션 => { 옵션.매개변수("name", "사람"); 옵션.FlexIndex(true); }).구성대기(false); |
플렉스 인덱스를 사용하려면 QueryOptions 클래스에서 FlexIndex 속성 또는 메서드를 설정하기만 하면 됩니다.
FTS 점수 매개변수
최적화를 통해 이제 검색 쿼리를 수행할 때 채점을 비활성화할 수 있습니다. 이는 전달된 옵션 블록 매개변수로 노출됩니다:
1 2 3 4 5 6 |
var 결과 = 기다림 클러스터.검색 쿼리 동기화(인덱스 이름, new 매치 쿼리("inn"), 옵션 => { 옵션.제한(10); 옵션.점수 비활성화(true); }); |
true가 전달되면 채점이 비활성화되고, 그렇지 않으면 응답에 포함됩니다.
GetResult.Expiry는 더 이상 사용되지 않습니다.
마지막으로, GetResult.만료
은 더 이상 사용되지 않으며 GetResult.만료 시간
는 기간이 아닌 시간 단위로 인스턴스를 지정합니다.
피드백 부탁드립니다!
다음은 Couchbase Server 6.6 및 7.0용 Couchbase SDK 3.1에 추가된 새로운 기능입니다. 유용하게 사용하시길 바라며, 언제든지 피드백을 제공해 주시기 바랍니다. 포럼 를 클릭하거나 Couchbase 전문가에게 질문하세요.