새로 출시된 Couchbase Server 4.5에는 수많은 새로운 기능이 도입되었습니다. 쿼리 워크벤치, 하위 문서 API, 전체 텍스트 검색은 이미 뛰어난 NoSQL 데이터베이스에 추가된 훌륭한 기능 중 일부에 불과합니다.

이 글에서는 이미 존재하지만 크게 개선된 카우치베이스 셸인 CBQ를 둘러싼 몇 가지 고급 기능에 초점을 맞출 것입니다.

카우치베이스 쿼리 클라이언트(CBQ)란 무엇인가요?

CBQ라고도 하는 Couchbase 쿼리 클라이언트를 처음 접하는 경우, 다음 대상에 대한 쿼리를 실행하기 위한 훌륭한 명령줄 유틸리티입니다. 카우치베이스 서버. Couchbase의 N1QL 기술 출시와 함께 Couchbase Server 4.0에 처음 도입되었습니다. Couchbase 또는 NoSQL을 처음 사용하는 경우 CBQ는 Oracle의 SQLPlus 또는 MySQL 명령줄 인터페이스와 같은 도구와 유사합니다. Couchbase Server 4.5의 출시와 함께 CBQ는 셸이라고 더 잘 설명할 수 있는 형태로 진화했습니다.

카우치베이스 셸을 사용하려면 운영 체제에 따라 다음 중 하나를 실행합니다. Mac의 경우 터미널을 사용하여 실행합니다:

Microsoft Windows에서는 다음을 실행합니다:

물론 두 시나리오 모두 컴퓨터에 Couchbase Server 4.0 이상이 설치되어 있어야 합니다. 하지만 Couchbase Server 4.5에서는 상황이 달라졌으며, 달라졌다는 말은 훨씬 더 좋아졌다는 뜻입니다.

고급 CBQ 기능을 도입한 버전 4.5 이전에는 어떤 작업을 할 수 있었는지 살펴보겠습니다. 모든 CBQ 요청에는 특정 데이터와 함께 실행한 쿼리에 대한 메트릭 정보가 반환됩니다. 예를 들어 다음과 같은 간단한 명령을 실행한다고 가정해 보겠습니다:

위의 명령은 다음과 같은 결과를 CBQ 출력에 남깁니다:

물론 결과가 사실이라는 것을 알려주지만, 실행에 걸린 시간과 같은 정보도 함께 제공합니다. 제 로컬 환경에서는 사양이 낮고 최소한의 인덱스만 생성되었으므로 30ms라는 긴 시간은 무시하셔도 됩니다.

CBQ는 데이터를 선택할 수 있을 뿐만 아니라 DML 쿼리를 실행할 수 있습니다. 삽입, 업데이트, 업서트, 삭제, 검색은 모두 CBQ의 핵심 기능으로 수행할 수 있습니다.

고급 셸 기능

이 글을 읽으시는 이유는 CBQ가 이전 Couchbase Server 4.1과 다른 점이 무엇인지 알고 싶으시기 때문일 것입니다. 고급 기능은 몇 가지 일반적인 범주로 나눌 수 있습니다. 지금부터 살펴볼 내용은 일부 기능의 맛보기일 뿐입니다. 해당 주제에 대한 전체 문서는 다음 문서에서 찾을 수 있습니다. 카우치베이스 개발자 리소스.

연결 관리

Couchbase 4.5에서는 CBQ를 사용하여 Couchbase 클러스터에 연결하거나 개별 쿼리 노드에 연결할 수 있습니다. 이 기능은 데이터베이스의 성능 문제를 해결할 때 유용합니다.

클러스터에 연결하려면 기본 방법을 사용하여 다음을 실행하면 됩니다. ./cbq 를 입력하거나 다음과 같이 선택적 태그를 전달할 수 있습니다:

위에서는 클러스터를 나타내기 위해 8091 포트를 지정했습니다. 대신 8093 포트를 사용하여 특정 쿼리 서비스를 지정할 수 있습니다. CBQ를 처음 실행한 후에만 클러스터 또는 서비스에 연결하려면 다음을 실행하면 됩니다:

그 길을 가려면 연결을 끊습니다; 을 눌러 연결을 종료합니다.

보안 관리

일반적으로 자격 증명을 사용하여 Couchbase 데이터를 잠그는 것이 매우 일반적이며 일반적으로 권장됩니다. 아무나 데이터에 액세스하는 것을 원치 않을 것입니다.

Couchbase 4.5 이전에는 CBQ에서 데이터베이스 또는 버킷의 비밀번호를 지정하는 것이 불가능했습니다. 여기서 상황이 바뀌었습니다. 이제 CBQ를 통해 사용자 이름과 비밀번호를 지정할 수 있습니다.

관리자 자격 증명을 사용하여 Couchbase 클러스터에 연결하고 싶다고 가정해 보겠습니다. 다음과 같이 선택적 태그를 전달할 수 있습니다:

셸에서 비밀번호를 노출하고 싶지 않다면 비밀번호 태그를 해제하면 연결되는 동안 비밀번호를 묻는 메시지가 표시됩니다.

두 개 이상의 자격증명 세트를 사용하여 데이터베이스에 연결하고 싶다고 가정해 보겠습니다. 다음과 같이 자격 증명 목록을 전달할 수 있습니다:

연결 명령과 마찬가지로 CBQ를 시작할 때 자격 증명을 지정하고 싶지 않을 수도 있습니다. 이 경우 SET 그리고 UNSET 명령을 실행하면 자격 증명을 지정할 수 있습니다. 예를 들어 CBQ가 실행 중인 상태에서 다음을 실행합니다:

자격 증명을 삭제하려면 UNSET 명령을 대신 사용합니다.

스크립팅 지원

이전에는 CBQ를 사용하면 스크립트 방식이 아닌 도구 내에서 쿼리를 실행하는 것으로 제한되었습니다. 이제 Couchbase Server 4.5에서는 CBQ에 대해 실행할 스크립트를 만들 수 있습니다. 크론을 통해 실행하려는 정리 스크립트가 있거나 다른 이유가 있을 수 있습니다. 다음과 같은 작업을 수행할 수 있습니다:

물론 위에는 세 가지 방법이 있습니다.

쿼리 결과를 출력 파일에 저장하는 것이 일반적입니다. 분석가가 데이터를 선택하거나 적절한 데이터가 생성되었는지 확인하는 다른 스크립트가 있을 수도 있습니다. 실행 시 출력 파일을 지정하려면 다음 매개변수를 추가하세요:

주목하세요. -o 파일명.txt 를 입력합니다. 해당 쿼리의 결과는 파일에 저장됩니다.

쿼리 관리

Couchbase 4.5에서는 CBQ를 사용하여 개별 쿼리 및 쿼리 서비스 노드의 작업을 모니터링하고 쿼리 서비스 자체와 상호 작용할 수 있습니다. 예를 들어 클러스터에 과부하가 발생했다고 가정해 보겠습니다. 논리적으로 해야 할 일 중 하나는 현재 어떤 종류의 쿼리가 실행되고 있는지 확인하는 것입니다. CBQ로 이 작업을 수행하려면 다음을 실행하면 됩니다:

위의 명령을 실행하면 다음과 비슷한 결과가 표시됩니다:

물론 로컬 컴퓨터에서는 클러스터에 대한 활성 요청을 찾기 위한 쿼리만 실행되고 있었습니다. 프로덕션 환경에서는 훨씬 더 많을 것입니다.

이제 활성 요청을 검색할 때 동일한 쿼리가 많이 실행되는 것을 발견했을 수도 있습니다. 이 쿼리들을 준비된 문장으로 만드는 것이 좋을 수도 있습니다. 하지만 이미 준비된 문일 수도 있습니다. 다음을 실행하여 확인할 수 있습니다:

위의 쿼리는 쿼리 엔진의 준비된 문 캐시에 있는 모든 알려진 준비된 문과 그 상태에 대한 정보를 알려줍니다.

준비된 문장을 작성했는데도 가끔 서버 성능이 여전히 급상승한다면 어떻게 해야 할까요? 쿼리 관리를 위한 CBQ 기능을 사용하면 느리지만 완료된 쿼리를 검사할 수 있습니다. 다음을 실행하여 과거 쿼리를 확인할 수 있습니다:

느리다고 말씀드린 것을 기억하세요. cbq-엔진에서 정의한 임계값에 따라 느린 속도를 결정할 수 있습니다. 기본적으로 1초 이상 실행되는 모든 쿼리가 이 범주에 속하지만, 더 긴 쿼리에만 관심이 있을 수도 있습니다. 이 값은 변경할 수 있습니다.

쿼리 관리에 대한 자세한 내용은 다음을 참조하세요. 여기.

현재 진행 중인 쿼리 활동을 모니터링하는 것보다 준비된 문을 실행하는 데 더 관심이 있을 수 있습니다. CBQ 내에서 다음을 사용할 수 있습니다. 실행 명령을 실행하여 준비된 문을 실행합니다. 다음과 같이 말이죠:

준비된 문은 대부분 매개변수화된 쿼리일 것입니다. 결국 SQL 인젝션을 방지하는 것입니다. 명명된 매개변수를 전달하려면 다음을 수행하면 됩니다:

이번이 처음이 아닙니다. SET. 자격 증명을 정의하는 데 사용했지만 이번에는 접두사 앞에 -$ 를 명명된 매개변수라고 말합니다.

대신 위치 매개 변수를 사용하려면 다음을 호출하면 됩니다. SET 대신 데이터 배열에

Should 실행 을 누르면 쿼리가 제어 불능 상태가 되어 중지해야 합니다. 간단히 컨트롤+C 를 입력하면 중지됩니다.

세션 관리

세션 관리는 사용자 자격 증명을 쿼리하고 추가할 때 이미 설명한 것과 크게 다르지 않습니다. 고급 CBQ 기능의 일부로 다양한 셸 세션을 관리하거나 다양한 사용자 환경설정을 설정할 수 있습니다.

이전에는 다음과 같은 방법을 보았습니다. SET 그리고 UNSET 매개변수를 사용할 수도 있지만, 세션의 PUSH 그리고 POP. 최상위 수준의 매개변수 묶음을 설정하는 대신 세션에 대한 매개변수 스택을 만드는 것입니다. 이는 스크립트 등에 유용할 수 있습니다.

CBQ에서 지속적으로 사용하려는 이상한 쿼리가 많이 있다고 가정해 보겠습니다. 각 쿼리를 기억할 필요 없이 별칭을 설정할 수 있습니다. 예를 들어

예, 위의 쿼리는 매우 복잡하지는 않지만 복잡할 수 있습니다. 이 쿼리를 실행하려면 CBQ에서 다음을 실행하면 됩니다:

별것 아닌 기능이지만, 경쟁 데이터베이스를 고려할 때 쿼리 별칭을 지정할 수 있다는 것은 큰 의미가 있습니다. 쿼리 별칭은 Couchbase의 고유한 기능으로 쿼리 시 엄청난 시간을 절약할 수 있습니다.

결론

Couchbase Server 4.5부터 새롭게 추가된 CBQ 기능 중 일부를 맛보았습니다. 연결 관리, 보안, 스크립팅, 쿼리 관리 및 모니터링, 세션 관리 기능을 활용해 Couchbase Server로 생산성을 향상시킬 수 있습니다.

명령 및 기능에 대한 자세한 목록을 보려면 다음을 참조하세요. 공식 문서 에서 개발자 포털.

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 남기기