소개
이 게시물은 시리즈 중 세 번째 게시물로 카우치베이스 모바일 스택으로 이동합니다. 첫 번째 및 두 번째 게시물을 찾을 수 있습니다. 여기 그리고 여기를 각각 지원합니다. 여기에는 다음과 같은 설치가 포함됩니다. 카우치베이스 서버 그리고 몇 가지 흥미로운 카우치베이스 웹 콘솔. 이 글에서는 명령줄에서 Couchbase Server로 작업하는 방법에 대해 설명합니다.
배경
전체 스택에 익숙해지려면 개발 머신에 모든 것을 설치하고 실행하는 것이 좋습니다. 이 시리즈 게시물에서는 각 컴포넌트를 시작하는 단계를 안내해 드리겠습니다. 그 과정에서 약간의 추가 탐색을 하는 방법도 보여드리겠습니다.
최소한의 구성만 하겠습니다. 이 글은 프로덕션 환경에 필요한 사항을 설명하기 위한 것이 아닙니다. NoSQL의 몇 가지 기본 사항에 익숙하고, Couchbase에 대해 어느 정도 이해하고 있으며, Java, Android 또는 iOS 등의 앱 빌드 방법을 알고 있다고 가정합니다. NoSQL 데이터베이스 또는 Couchbase에 대해 자세히 알아보려면 다음에서 많은 리소스를 찾을 수 있습니다. 카우치베이스 사이트.
카우치베이스는 오픈소스입니다. 여기서 사용하는 모든 기능은 무료로 사용해 볼 수 있습니다. 도움이 필요하면 게시물 끝부분에서 더 많은 리소스를 참조하세요.
명령줄
카우치베이스 서버에는 꽤 많은 명령줄 도구가 있습니다. 또한 광범위한 REST API도 있습니다. 몇 가지 흥미로운 점을 살펴 보겠습니다.
명령줄 유틸리티
Mac의 경우 일반적으로 /Applications/Couchbase Server.app/Contents/Resources/couchbase-core/bin에서 명령줄 도구를 찾을 수 있습니다.
Linux 및 Windows용 명령 위치는 여기에서 확인할 수 있습니다: http://developer.couchbase.com/documentation/server/current/cli/cli-intro.html
couchbase-cli: 명령줄 클러스터 관리 도구
이 도구는 단일 노드 또는 전체 클러스터에서 작동할 수 있습니다. 버킷 조작부터 데이터 센터 간 복제에 이르기까지 모든 명령을 지원합니다. 다음은 몇 가지 예시입니다.
서버 목록
다음 명령은 클러스터에 있는 서버의 간단한 목록을 반환합니다.
1 |
$ 카우치베이스-cli 서버-목록 -c localhost:8091 -u 관리자 -p 비밀번호 |
출력
1 |
ns_1@127.0.0.1 127.0.0.1:8091 건강 활성 |
예상대로 로컬에서 하나의 활성 서버가 실행되고 있음을 보여줍니다.
(참고: 간결성을 위해 앞으로 클러스터, 사용자 이름 및 비밀번호 옵션은 생략하겠습니다. 하지만 실제 명령에는 이 옵션이 필요합니다.)
로그 수집
로깅을 켤 수 있습니다. 지원을 위해 데이터를 자동으로 업로드하는 옵션이 있습니다.
1 |
$ 카우치베이스-cli 수집-로그-시작 --모두-노드 |
출력
1 |
성공: 로그 컬렉션 시작 |
다음으로 상태를 확인합니다.
1 |
$ 카우치베이스-cli 수집-로그-상태 |
출력
1 2 3 4 5 |
상태: 완료 세부 정보: 노드: ns_1@127.0.0.1 상태: 수집 경로 : /사용자/hod/라이브러리/애플리케이션 지원/카우치베이스/var/lib/카우치베이스/tmp/수집 정보-2016-12-06T213207-ns_1@127.0.0.1.zip |
그리고 로깅을 중지합니다.
1 |
$ 카우치베이스-cli 수집-로그-중지 |
출력
1 |
성공: 수집 로그 성공 중지 |
로그 파일은 방대합니다. 여기 샘플에는 많은 파일과 1메가바이트가 넘는 정보가 포함되어 있습니다. 모두 텍스트로 되어 있습니다. CB 서버 설치에 대한 지원이 필요한 경우 이 데이터를 얻는 방법을 알아두는 것이 좋습니다.
cbq: N1QL용 명령줄 셸
또 다른 도구는 N1QL 쿼리를 실행하기 위한 대화형 셸인 cbq입니다.
이 경우 명령은 입력을 요청하는 메시지를 반복해서 표시합니다. 옵션 없이 실행하여 시작하세요.
1 |
$ cbq |
몇 가지 알림과 명령 프롬프트가 즉시 표시됩니다.
1 2 3 4 5 |
아니요 입력 자격 증명. In 주문 에 연결 에 a 서버 와 함께 인증, 제발 제공 자격 증명. 연결됨 에 : http://localhost:8091/. Ctrl-D 또는 QUIT를 입력하여 종료합니다. 경로 에 역사 파일 에 대한 의 shell : /사용자/hod/.cbq_history cbq> |
기본 인덱스 만들기
쿼리를 실행하려면 최소한 기본 인덱스가 필요합니다. 맥주 샘플 데이터의 일부 버전에는 기본 인덱스가 제공되기도 하고 제공되지 않는 경우도 있습니다.
1 |
cbq> 만들기 기본 INDEX on `맥주-샘플`; |
출력
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "요청ID": "e708d3aa-cfa4-4322-9c8c-a6b6524ba99b", "서명": null, "결과": [ ], "status": "성공", "metrics": { "elapsedTime": "579.828473ms", "실행 시간": "578.844657ms", "resultCount": 0, "결과 크기": 0 } } |
쿼리 실행
다음은 매우 간단한 쿼리의 예입니다.
1 |
cbq> 선택 DISTINCT 카테고리, 스타일 FROM `맥주-샘플` 어디 유형 = "맥주" AND 스타일 좋아요 "%Imperial%" 주문 BY 카테고리, 스타일; |
출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
{ "요청ID": "2d4b3052-d42f-4081-bff1-1a06576dec92", "서명": { "category": "json", "style": "json" }, "결과": [ { "category": "북미 에일", "style": "미국식 임페리얼 스타우트" }, { "category": "북미 에일", "style": "임페리얼 또는 더블 인디아 페일 에일" }, { "category": "북미 에일", "style": "임페리얼 또는 더블 레드 에일" } ], "status": "성공", "metrics": { "elapsedTime": "259.555065ms", "실행 시간": "259.496458ms", "resultCount": 3, "결과 크기": 331, "sortCount": 3 } } |
스타일 설명에 '임페리얼'이 포함된 모든 맥주를 가져왔습니다.
맥주 샘플 주위의 뒷면 틱을 확인하세요. 이는 이름에 대시가 들어가기 때문에 필요합니다.
SQL을 안다면 N1QL이 익숙할 것입니다. N1QL은 SQL의 상위 집합입니다. JSON 데이터는 관계형 데이터처럼 평평하지 않은 경우가 많습니다. N1QL에는 배열 언롤링과 같은 작업을 수행할 수 있는 확장 기능이 있습니다. N1QL에 대해 자세히 알아보세요. 여기.
N1QL을 더 깊이 이해하려면 다음과 같은 훌륭한 기능을 사용해 보는 것이 좋습니다. 대화형 튜토리얼.
cbq의 고급 기능에 대한 Nic Raboy의 유용한 포스팅을 확인할 수 있습니다. 여기.
REST API
카우치베이스 서버에는 다음과 같은 광범위한 기능이 있습니다. REST 엔드포인트. 대부분은 배포 관리와 관련이 있습니다.
컬을 사용한 예시를 보여드리겠습니다. 컬을 대체할 수 있는 정말 좋은 도구가 있습니다, httpie. 사용하기가 조금 더 쉽고 컬러화된 출력을 생성합니다. 컬이 더 일반적으로 사용되기 때문에 여기서는 사용하지 않겠습니다.
다른 엔드포인트가 무엇을 생성하는지 보는 것도 흥미롭지만, 여기서는 쿼리에 초점을 맞추려고 합니다.
쿼리 보기
이전 게시물에서 카우치베이스 웹 콘솔에서 뷰에 대해 살펴봤습니다. 보기는 정보를 검색하는 데 사용할 수 있는 정적 인덱스를 만듭니다. 여러 가지 옵션으로 응답을 제어할 수 있습니다. 보기의 가치는 대부분 맵/환원 함수를 정의하는 방식에서 비롯되지만, 이러한 옵션은 보기를 사용하여 데이터를 쿼리하는 기능을 더욱 향상시킵니다. 특히 키별 필터링이 유용합니다. 살펴보겠습니다.
다음과 같은 형식의 URI를 사용하여 보기에 액세스합니다.
1 |
GET /[버킷-이름]/_design/[ddoc-이름]/_view/[보기-이름] |
맥주 샘플의 경우 다음과 같이 모든 양조장 및 맥주 정보를 얻을 수 있습니다.
1 |
$ curl http://localhost:8092/beer-sample/_design/beer/_view/brewery_beers |
이는 많은 정보를 출력합니다. 다음은 출력의 짧은 샘플입니다.
1 2 3 4 |
{"total_rows":7303,"행":[ {"id":"21st_개정안_브루어리_카페","key":["21st_개정안_브루어리_카페"],"value":null}, {"id":"21st_amendment_brewery_cafe-21a_ipa","key":["21st_개정안_브루어리_카페","21st_amendment_brewery_cafe-21a_ipa"],"value":null}, {"id":"21st_amendment_brewery_cafe-563_stout","key":["21st_개정안_브루어리_카페","21st_amendment_brewery_cafe-563_stout"],"value":null}, |
주요 정보를 확인할 수 있습니다. 이를 사용하여 결과 범위를 좁힐 수 있습니다. 다음은 단일 키를 사용하는 예제입니다.
1 |
$ curl -g http://localhost:8092/beer-sample/_design/beer/_view/brewery_beers?key='["yuksom_breweries"]' |
그리고 그 결과.
1 2 3 4 |
{"total_rows":7303,"행":[ {"id":"육솜_브루어리","key":["육솜_브루어리"],"value":null} ] } |
g 플래그를 추가한 것을 주목하세요. 기본적으로 Curl은 특정 유형의 패턴 일치(글로빙)를 허용합니다. 이는 특수 문자 {}와 []를 사용하여 작동합니다. JSON에서 키를 지정하려면 이러한 문자가 필요합니다. 가장 쉬운 방법은 글로빙을 해제하는 것입니다. 매개변수 주위를 작은따옴표로 묶는 것도 잊지 마세요.
이 예는 하나의 키로 필터링한 예입니다. 다음은 한 번에 두 개 이상 일치하는 결과를 얻는 방법을 보여주는 예제입니다.
1 |
$ curl -g -u 관리자:비밀번호 http://localhost:8092/beer-sample/_design/beer/_view/brewery_beers?keys='[["육섬_브루어리"],["야생_덕_브루잉"]]' |
출력이 정렬되지 않은 것을 확인할 수 있습니다.
1 2 3 4 5 |
{"total_rows":7303,"행":[ {"id":"육솜_브루어리","key":["육솜_브루어리"],"value":null}, {"id":"wild_duck_brewing","key":["wild_duck_brewing"],"value":null} ] } |
뷰 디버깅(또는 뷰에서 무슨 일이 일어나고 있는지 이해하는 것)에 사용하는 것 외에도 셸 스크립트와 이런 종류의 쿼리를 사용하여 멋진 것들을 작성하는 것을 보았습니다.
N1QL 쿼리
명령줄에서도 N1QL 쿼리를 실행할 수 있는 것으로 밝혀졌습니다. 다음은 맥주 샘플 버킷에서 모든 것을 가져오는 간단한 예제입니다.
1 |
$ curl http://localhost:8093/query/service?statement='SELECT%20*%20FROM%20`beer-sample`' |
출력에는 일부 통계와 전체 문서가 포함됩니다. (통계는 Mac의 경우 stderr로 출력됩니다).
1 2 3 |
% 합계 % 수신됨 % Xferd 평균 속도 시간 시간 시간 현재 Dload 업로드 합계 소비 왼쪽 속도 100 16240 0 16240 0 0 299k 0 --:--:-- --:--:-- --:--:-- 299k |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
{ "요청ID": "936d7b6a-1dea-4625-a6b2-1be91967187e", "서명": { "*": "*" }, "결과": [ { "맥주 샘플": { "주소": [ "563 세컨드 스트리트" ], "city": "샌프란시스코", "code": "94107", "country": "미국", "설명": "21세기 수정헌법 브루어리는 편안한 로프트 같은 분위기에서 수상 경력에 빛나는 다양한 하우스 메이드 맥주와 미국식 그릴 요리를 제공합니다. 야외 비어 가든에서 자이언츠 야구 경기 전후에 저희와 함께하세요. 세미 프라이빗한 브루어스 로프트에서 연회와 파티를 즐기기에 좋은 장소입니다. 21A에서 곧 뵙겠습니다!", "geo": { "정확도": "ROOFTOP", "lat": 37.7825, "lon": -122.393 }, "name": "수정헌법 제21조 양조장 카페", "전화": "1-415-369-0900", "state": "캘리포니아", "type": "양조장", "업데이트됨": "2010-10-24 13:54:07", "웹사이트": "http://www.21st-amendment.com/" } }, { "맥주 샘플": { ... |
The N1QL command must have certain characters encoded to work properly. In this case, you can probably guess that %20 is the encoding for a single space. You can read more about that on this 스택 오버플로 게시물.
다음 단계
지금까지 카우치베이스 서버를 살펴보는 데 많은 시간을 할애했습니다. 다음으로 모바일에 대해 자세히 살펴보겠습니다. 동기화 게이트웨이. 거의 동일한 형식을 따를 것입니다. 하지만 동기화 게이트웨이의 경우에는 REST API를 사용하여 할 수 있는 일이 훨씬 더 많다는 것을 알게 될 것입니다. 여기에는 일반적인 문제를 진단하는 데 도움이 되는 몇 가지 요령이 포함될 것입니다. 그 후에는 Couchbase Lite를 살펴본 다음 전체 스택을 통해 엔드투엔드로 이동하는 데이터를 살펴보면서 모든 내용을 마무리하겠습니다. 계속 지켜봐 주세요.
[buttongroup][button style="btn-link btn-lg" icon="fa fa-arrow-left" align="left" iconcolor="#dd3333″ type="link" target="false" title="이전: Couchbase 웹 콘솔" link="https://www.couchbase.com/blog/com편한-카우치베이스-모바일-카우치베이스-웹 콘솔/" linkrel=""][button style="btn-link btn-lg" icon="fa fa-arrow-right" align="left" iconcolor="#dd3333″ type="link" target="false" title="다음: 동기화 게이트웨이 설치하기" link="https://www.couchbase.com/blog/getting-comfortable-couchbase-mobile-installing-sync-gateway/" linkrel=""][/buttongroup]
포스트 스크립트
더 많은 리소스를 확인하세요. 개발자 포털 트위터에서 팔로우하세요 카우치베이스 개발.
질문에 대한 답변을 게시할 수 있습니다. 포럼. 그리고 다음에도 적극적으로 참여합니다. 스택 오버플로.
다음 주소에서 저를 개인적으로 팔로우할 수 있습니다. 호드그릴리
[...] 이전: 카우치베이스 서버 설치하기 다음: 명령줄을 통한 카우치베이스 서버 [...]
[...] 이전: 명령줄을 통한 카우치베이스 서버 다음: 명령줄을 통한 동기화 게이트웨이 [...]