본문 바로가기

설정

couchbase-cli 조회와 인덱스

본래 webUI concole 제공하지만, gateway time error 나서, 

(https://forums.couchbase.com/t/gateway-timeout-error-in-couchbase-console/16813/5)

그냥 직접 cli query를 해보려고.

 

cbq를 직접 실행할 수 있는 directory에 가서,

Linux	/opt/couchbase/bin/couchbase-cli
Windows	C:\Program Files\Couchbase\Server\bin\couchbase-cli.exe
Mac OS X	/Applications/Couchbase Server.app/Contents/Resources/couchbase-core/bin/couchbase-cli

 

./cbq -engine="http://beer-sample:w1fg2Uhj89@123.45.67.89:8091/"

 

 

예시로 이렇게 넣어서 로그인하면 로그인 됨. 근데 이 클러스터에서만 조회가 되는건지? 

 

근데 이렇게 하면 저 클러스터에서밖에 조회안되는것같음... 

./cbq -e http://클러스터호스트:포트 -s “SELECT * FROM ATLAS LIMIT 10” -u ATLAS -p dkxmffktm

쨌든 이렇게 하면 클러스터 하나에서 겠지만

->

직접 조회할 클러스터 지정

실행할 스크립트 옵션

계정정보를 줘서

-> 조회잘됨. 쿼리가 웹UI에서 쓸때랑 약간 다름.

 

근데 조회를 그냥 10개 가져오는건 빠른데 WHERE 절이 있으니 느려져서 응답이 안옴. 안온다고 알려주는것도 아니고 그냥 멍청하게 있음. 언제까지 기다려야 하는지 모르겠음. 그래서 index를 cli로 생성해보기로 함.

 

-> index를 생성하려고 하는데 그게 클러스터 하나에만 생성하면 나머지에도 영향을 주는건지 아닌지는 확인을 해봐야 합니다. 

 

./cbq -e http://클러스터호스트:포트 -s "CREATE INDEX supplier_idx on ATLAS(supplier)" -u ATLAS -p pw

 

 

-> index를 성공적으로 설정하였는데, 다 하고 나서 생각난 점은 웹에서도 idx를 줄수있다는 것이다. ㅋ

ㅋ 

 

./cbq -e http://클러스터호스트:포트 -s 'SELECT meta().id FROM ATLAS WHERE supplier = "freeya" ORDER BY meta().id ASC LIMIT 10' -u ATLAS -p pw -o "원하는 output 파일 경로"

 

 

위의 쿼리를 실행할때 double quote이면 안되고, single quote으로 해야 results 가 리턴된다.ㅋㅋ

https://stackoverflow.com/a/40209230/10194999 

 

 

 

(수정)

 

GSI 찾아보고 나서.... 

 

 

 

모든 노드에서 인덱스가 적용되려면(GSI) 아래 두가지 방법 중 하나를 택하면 된다. 

CREATE INDEX productName_index1 ON bucket_name(productName, ProductID)
       WHERE type="product" USING GSI
       WITH {"nodes":["node1:8091", "node2:8091", "node3:8091"]};

이렇게 하거나 specifying 하기 싫으면 

CREATE INDEX productName_index1 ON bucket_name(productName, ProductID)
       WHERE type="product" USING GSI
       WITH {"num_replica": 2};

이렇게.

 

 


 

참고 

(https://blog.couchbase.com/using-role-based-access-control-in-n1ql/)

(https://docs.couchbase.com/server/current/n1ql/n1ql-intro/cbq.html)

 

 

아래링크의 결론. 아무때나 인덱스 설정하지 말자. 인덱스 설정할때는 값의 range가 적은 필드를 index로 설정하면 안좋다. 

(https://k39335.tistory.com/26)

 

프라이머리 인덱스?

(https://docs.couchbase.com/server/6.0/learn/services-and-indexes/indexes/indexing-and-query-perf.html#primary-index)

카우치베이스 GSIs 글로벌 세컨더리 인덱스

(https://docs.couchbase.com/server/5.0/architecture/global-secondary-indexes.html)

하나에만 인덱스 만들면 다른 노드에도 적용된다는 내용인듯 -> 꼼꼼히 읽어서 확인 필요

(https://docs.couchbase.com/server/5.5/indexes/index-replication.html)

 

 

카우치베이스 6.0 링크 -> 이전꺼랑 뭐가다른건지? 읽어보자.

(https://docs.couchbase.com/server/6.0/introduction/intro.html)

 

 

더 이해해야 하는 개념

  • 인덱스
  • 프라이머리 인덱스
  • 세컨더리 인덱스

(https://www.geeksforgeeks.org/indexing-in-databases-set-1/) 일단 이거 읽어보즈아