추가 하위 문서 API 에서 효율적인 데이터 구조 지원을 위한 기반을 마련했습니다. 카우치베이스.

이 블로그 게시물에서는 Couchbase .NET SDK에서 사용할 수 있는 세 가지 유형의 데이터 구조에 대한 데모를 보여드리겠습니다:

  • 목록 - 기본적으로 카우치베이스가 지원하는 객체 목록입니다.
  • 큐 - 기본적으로 카우치베이스에 의해 지원되는 객체 대기열입니다.
  • 사전 - 객체 사전, 기본적으로 Couchbase가 지원하는 Dictionary입니다.

또한 이것이 어떻게 작동하는지에 대해서도 잠시 설명하겠습니다.

원한다면 집에서도 따라 해볼 수 있습니다. 이 블로그의 소스 코드는 다음과 같습니다. GitHub에서 사용 가능카우치베이스 서버는 무료로 다운로드할 수 있습니다. (현재 버전 5의 개발자 프리뷰는 매월 제공됩니다).

목록

목록은 메모리에 보관되는 .NET 데이터 구조입니다. Couchbase .NET SDK에서 제공하는 데이터 구조를 사용하면 Couchbase 문서에 저장할 수 있습니다.

카우치베이스 지원 목록을 만들려면 다음과 같이 하세요:

문자열 "myList"는 목록이 포함될 문서의 키에 해당합니다. 사용 시 카우치베이스 목록를 입력하면 해당 키를 가진 단일 문서가 생성됩니다(아직 문서가 없는 경우). 해당 키의 문서가 이미 존재하는 경우, 카우치베이스 목록 를 사용할 것입니다.

이제 목록에서 항목을 추가/제거할 수 있으며 해당 항목은 모두 문서에 유지됩니다. 목록에 있는 항목의 개수 가져오기와 같은 다른 작업도 수행할 수 있습니다.

위의 코드는 아래와 같이 키가 "myList"인 문서를 생성합니다. 번호가 5인 항목은 제거되었으므로 나열되지 않습니다.

위의 예제에서 지적해야 할 미묘한 점이 있습니다. 제가 사용한 var item = list[5]; 를 클릭한 다음 item.foo 그리고 item.num 에서 WriteLine. 내가 사용한 경우 list[5].foo 그리고 list[5].num 를 직접 호출하면 두 개의 서로 다른 하위 문서를 Couchbase에 호출하게 됩니다. 이는 최적의 효율성이 떨어질 뿐만 아니라 두 호출 간에 값이 변경될 수 있습니다.

대기열

List와 매우 유사하게 카우치베이스 지원 대기열을 만들 수 있습니다:

큐는 목록처럼 저장됩니다. 차이점은 순서가 중요하며 이는 큐에서 수행하는 작업에 반영된다는 점입니다: 큐에 대기열 추가 및 큐 해제.

위의 코드는 키가 "myQueue"인 문서를 생성합니다(아래 JSON 참조). 대기열에 대기열 번호가 "0"인 객체가 없는 것은 대기열이 큐에 대기 중이기 때문입니다.

사전

이제 패턴이 보이시길 바랍니다. 사전을 만들려면

다시 말하지만, 주어진 키로 문서가 생성됩니다. 수행할 수 있는 작업에는 추가, 제거 및 색인기가 포함됩니다. [] 작동합니다.

사전 문서는 다음과 같습니다:

C# 다이내믹에 대한 참고 사항: 저는 동적 를 사용하여 코드 샘플을 짧고 단순하게 유지하세요. 애플리케이션에서는 실제 정의된 C# 유형을 사용하는 것이 더 나을 수 있습니다. 물론 이 모든 것은 Couchbase에서 JSON으로 직렬화됩니다.

비하인드 스토리

하위 문서 API가 Couchbase Server 4.5에 출시되기 전에는 이러한 데이터 구조는 다음과 같았습니다. 가능를 사용할 수 있습니다. 문제는 전체 문서를 로드하고, 목록에 넣고, 목록을 변경한 다음 전체 문서를 저장해야 한다는 점입니다. 데이터 구조가 크지만 단일 항목만 읽거나 변경하는 경우에는 종종 시간 낭비와 대역폭 낭비가 발생하고 경합이 증가할 수 있습니다.

하위 문서 API(직접 사용할 수 있습니다. .NET SDK가 포함된 Couchbase Server 4.5의 하위 문서 API(재검토) 블로그 게시물)는 카우치베이스 목록, 카우치베이스 큐카우치베이스 사전. 따라서 항목을 추가할 때 카우치베이스 목록예를 들어, 전체 목록이 아닌 해당 항목만 유선으로 전송됩니다.

일부 작업은 여전히 전체 문서를 가져와야 합니다. 예를 들어, 컬렉션을 반복하는 작업의 경우 foreach 루프는 전체 문서를 검색합니다. 목록에서 항목을 제거하면 전체 문서가 스캔됩니다. 그러나 향후 이러한 작업을 지원하는 하위 문서 작업이 등장하면 그에 따라 SDK 구현이 업데이트됩니다.

요약

이러한 데이터 구조는 데이터 관리에 도움이 되는 또 다른 도구입니다. 하위 문서 API를 사용하기 때문에 일반적으로 전체 문서 접근 방식보다 성능이 더 뛰어납니다. 자세한 내용은 데이터 구조 문서.

질문이 있으신가요? 피드백이 있으신가요? 도움이 필요하신가요? 포럼을 방문하세요나를 핑 트위터 @mgroves를 클릭하거나 댓글을 남기세요.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 하나

  1. [...] Matthew Grove의 블로그에서 더 많은 멋진 Couchbase .NET 데이터 구조 예제 [...]

  2. [...] 지난 2월에 .NET( 및 .NET Core)에서 데이터 구조 사용에 대한 블로그를 작성했습니다: 목록, 큐 및 사전. [...]

댓글 남기기