카우치베이스 서버용 클라이언트 라이브러리

Couchbase Server는 그 특성상 개발이 간단합니다. 많은 동료들이 종종 말하듯이, 데이터 모델링은 단순히 주변의 자연 세계처럼 데이터를 구성하는 문제입니다. 눈부시게 간단한 아이디어처럼 보이지만, 많은 소프트웨어 개발자가 소프트웨어를 구축할 때 사용자와 데이터 간의 임피던스 불일치로 인해 어려움을 겪어 왔습니다.

Couchbase Server 1.8의 이전 버전인 멤베이스 서버를 구축하기 시작했을 때 이미 사람들이 대규모 앱에서 이 작업을 수행하는 방식을 잘 파악하고 있었습니다. 멤캐시드와의 호환성은 기존 앱을 가져와서 몇 줄의 부정적인 코드(심술궂은 코드를 작성하는 것이 아니라 제거한다는 의미입니다!)만 작성하면 Couchbase Server에서 바로 실행할 수 있다는 것을 의미했습니다.

이를 위한 마법은 클라이언트 또는 서버 측을 Moxi로 프록시하는 것이었습니다. 이미 처리량이 높고 지연 시간이 짧아 대부분의 배포에서 Moxi 오버헤드가 눈에 띄지 않을 정도입니다.

또한 내부 해싱 알고리즘을 통해 데이터를 찾거나 저장하는 방법을 알고 있는 고객도 몇 명 있었습니다. 저희 엔지니어들은 이것이 순수한 방법이라고 말했습니다. 많은 사용자들이 이에 동의했고, 다른 플랫폼과 호환되는 더 스마트한 클라이언트 라이브러리를 구축해 달라는 요청도 종종 있었습니다. 그렇게 한다면 투명하지만 여전히 필요한 Moxi 계층을 제거하여 훨씬 더 단순화할 수 있을 것입니다.

오늘부터 코드와 와이어가 만나는 부분을 더욱 간단하고 빠르게 처리할 수 있게 되었습니다.

새로운 Couchbase Server 1.8 릴리스에는 클러스터에 대한 모든 것을 알고 클러스터로 작업하는 방법을 알고 있는 PHP, Ruby 및 C 클라이언트 라이브러리 세트가 포함되어 있습니다. 저희는 정확히 또는 거의 동일한 API를 유지했습니다. 따라서 새로운 클라이언트 라이브러리로 간단하게 업그레이드할 수 있습니다. 하지만 여기서 멈추지 않고 기존 Java 및 .NET 사용자를 위한 최신 패키징, 소프트웨어 배포, 더 나은 문서화에도 투자했습니다. 소프트웨어 개발도 염두에 두고 웹사이트를 단순화하고 간소화했습니다. 어떻게 생각하시는지 알려주세요.

존 자블로키가 자신의 블로그에서 새롭게 추가된 .NET SDK에서 업데이트를 다루고, Rags Srinivas는 Java 그리고 Ruby SDK. 또한 저희의 Jan Lehnardt는 다음과 같이 PHP SDK. PHP와 Ruby는 새로운 C(일명 libcouchbase) SDK에서 스마트함을 얻습니다. 완전히 새로워졌으며 속도와 휴대성을 위해 제작되었습니다.

제가 의미하는 바를 한 가지 작은 예로 보여드리기 위해 libcouchbase 위에 구축된 Ruby 클라이언트 라이브러리에서 샘플링 작업을 해보겠습니다:

루프는 5000
작은 값 크기: 19바이트
큰 값 크기는 4189바이트
사용자 시스템 총 실제
설정: 달리 0.640000 0.310000 0.950000 ( 2.280556)
설정: 멤캐시 0.260000 0.180000 0.440000 ( 1.741302)
설정: 멤캐시드:버퍼 0.070000 0.120000 0.190000 ( 1.242726)
SET: COUCHBASE 0.220000 0.270000 0.490000 ( 0.930583)GET: DALLI 0.660000 0.250000 0.910000 ( 2.348882)
GET: MEMCACHED 0.240000 0.390000 0.630000 ( 2.859149)
GET: MEMCACHED:BUFFER 0.290000 0.310000 0.600000 ( 2.778201)
GET: COUCHBASE 0.260000 0.260000 0.520000 ( 0.907956)GET-MULTI: DALLI 0.910000 1.150000 2.060000 (200.106302)
GET-MULTI: MEMCACHED 0.350000 0.720000 1.070000 (200.054008)
get-multi: memcached:buffer 0.350000 0.510000 0.860000 (200.028848)
GET-MULTI: 카우치베이스 0.210000 0.140000 0.350000 ( 0.442803)

고정 워크로드에 대한 CPU와 월 클럭 모두에서 실행 시간을 보여줍니다. 물론 수치가 낮을수록 좋습니다. 벤치마크 코드는 루비 클라이언트에 있습니다.

물론 다른 고객들을 존중하며 여전히 Moxi를 통해 완벽한 호환성을 제공하고 있지만, 몇 가지 스마트 기능을 추가하여 처리량을 150-200%(특정 경우에는 훨씬 더 높은 수준)까지 끌어올릴 수 있었다는 것을 쉽게 알 수 있습니다. 성숙한 소프트웨어에서 이 정도의 속도 향상은 흔치 않은 일입니다!

PHP 클라이언트 라이브러리에서도 비슷한 결과를 보았습니다. 배포를 간소화하고 성능이 중요한 배포에서 추가 여유 공간을 확보하는 데 매우 유용할 것으로 확신합니다.

Java, .NET, PHP, Ruby, C 등 관심 있는 분야로 바로 이동하세요. 그 외 몇 가지 실험적인 클라이언트도 진행 중입니다. 질문이나 피드백이 있으시면 포럼에 알려주세요.

행복한 해킹!

추신: 새 사이트에 대한 피드백을 진심으로 원합니다. 알려주세요.

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

작성자

게시자 카우치베이스 팀

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

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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