일부 NoSQL 데이터베이스에서는 RYOW(읽기 자체 쓰기)가 까다로울 수 있지만 Couchbase Server에서는 그렇지 않습니다. Couchbase Server를 사용하면 vbucket이 기본적으로 쓰기 및 읽기를 수행하므로(원하는 경우 언제든지 복제본에서 읽을 수 있음), 안정된 상태에서는 자신의 쓰기를 읽을 수 있으므로 문제 없습니다! 카우치베이스 서버는 메모리에 먼저 쓰고 DCP를 통해 복제본으로 빠르게 복제하여 디스크에 지속합니다. 업데이트를 발행할 때 복제 또는 지속성에 대한 확인을 기다릴 수 있습니다. 이 확인을 받으면 노드 재시작 또는 장애 조치(ReplicateTo 및 PersistTo 플래그)에서도 동일한 RYOW를 보장받을 수 있습니다.
쿼리의 경우, 관계형 데이터베이스와 달리 Couchbase Server 쿼리는 대기 없이 뷰에서 처리된 내용을 읽거나 쿼리 요청 시점까지 모든 업데이트가 처리될 때까지 쿼리가 대기하여 쿼리에서 RYOW를 보장할 수 있는 옵션이 제공됩니다. 따라서 첫 번째는 지연 시간이 짧으며 "stale=ok"인 쿼리라고 합니다. 그리고 나중 하나는 처리를 기다리는 "stale=false" 쿼리이므로 지연 시간이 더 길 수 있습니다! Stale=false 타입 쿼리는 매우 유용합니다. 메시징 앱을 구축한다고 상상해 보세요. 보낸 메시지가 '보낸 메시지' 폴더(일반적으로 보기 쿼리인)에 나타나지 않으면 다시 보낼 수 있습니다! 또는 모바일 앱에 새 재생 목록을 저장하고 재생 목록으로 돌아갔는데 새 재생 목록이 보이지 않는다면 혼란스러울 것입니다! 따라서 오래된 거짓은 필수입니다!
이러한 배경을 바탕으로 3.0에서 어떻게 상황이 개선되었는지 살펴보겠습니다. 이전 버전의 카우치베이스 서버에서 RYOW를 사용하려면 두 가지 작업을 수행해야 했습니다;
- 업데이트에 PersistTo 플래그를 사용해야 합니다.
- 쿼리에 stale=false 플래그를 사용해야 합니다.
|
1 2 3 4 |
<strong><span style="color: green">//2.5 for Read Your Own Write</span></strong> <span style="color: blue">client.ExecuteStore(StoreMode.Set, key, val, <strong>Couchbase.Operations.PersistTo.One,</strong> Couchbase.Operations.ReplicateTo.Zero);</span> |
그러면 Couchbase Server 2.5와 같은 이전 버전에서 RYOW를 사용할 수 있습니다. PersistTo는 분명히 디스크 속도가 느려집니다. 그러나 스트리밍 복제(DCP) + 증분 맵/보기 축소, RYOW를 가져오는 데 더 이상 Couchbase Server 3.0에서는 persistTo가 필요하지 않습니다. 다음은 3.0에서 동일한 호출의 모습입니다. 더 이상 #1이 필요하지 않으므로 PersistTo.0이 필요하지 않습니다.
|
1 2 3 4 |
<strong><span style="color: green">//3.0 for Read Your Own Write</span></strong> <span style="color: blue">client.ExecuteStore(StoreMode.Set, key, val, <strong>Couchbase.Operations.PersistTo.Zero,</strong> Couchbase.Operations.ReplicateTo.Zero);</span> |
지연 시간은 3.0에서 이전 버전인 Couchbase Server 2.5에 비해 50배 더 낮아질 수 있습니다. 이는 엄청난 성능 향상입니다! 뷰를 사용 중이고 "stale=false" 쿼리가 필요한 경우 Couchbase Server 3.0을 사용하면 많은 이점을 얻을 수 있습니다. 온라인에서 쉽게 업그레이드할 수 있습니다. 3.0을 다운로드할 수 있습니다. 여기.
즐거운 테스트 되세요.