Cloud Bigtable용 대화형 CLI btcli 작성
3371 단어 5GoogleCloudPlatformcliBigtable
만든 것
인터랙티브 UI를 갖춘 cbt 기반의 Bigtable용 CLI btcli을 만들었습니다.
동기 부여
Go에서 Clean Architecture 도입과 Dual Write에 의한 DB 마이그레이션을 한 이야기 에 있는 대로, 현재는 Bigtable를 메인으로 사용하고 있는 제품으로 개발을 실시하고 있습니다. Bigtable은 쵸파야에서 엄청 스케일하기 때문에 매우 편리하고 저도 좋아하는 제품입니다.
수중에서 Bigtable의 데이터를 읽고 쓰려면 공식으로 cbt 라는 것이 준비되어 있어, 최소한 필요한 것이 갖추어져 있습니다.
이전 기사에서도 언급했지만 Bigtable의 increment 함수를 사용하려면 8byte 빅 엔디안으로 인코딩 된 값을 사용해야합니다. 그런데 cbt에서는 문자열로만 값을 표시할 수 있습니다. 내부적으로는 데이터는 byte로 보존되어 있어 형에 의한 구별이 없기 때문에 당연하다고 하면 당연합니다만, 인간이 취급할 때에는 조금 곤란합니다.
당초에는 빅 엔디안의 디코드 기능을 cbt에 원숭이 패치를 맞추어 사용하고 있었습니다만, 좀 더 리치한 클라이언트를 원해져 만든 것이 btcli 입니다. 그건 그렇고, 이름은 mycli에서 영감을 받았습니다.
할 수 있는 일
대화형 보완
거의 모두 go-prompt 덕분에 구현되어 있습니다.
풍부한 필터 옵션
현재
read
부속 명령에서 다음 옵션을 사용할 수 있습니다.read <table> [args ...]
start Start reading at this row
end Stop reading before this row
prefix Read rows with this prefix
value Read rows with has value
family Read only columns family with <columns_family>
version Read only latest <n> columns
from Read cells whose version is newer than or equal to this unixtime
to Read cells whose version is older than this unixtime
decode Decode big-endian value
decode-columns Decode big-endian value with columns. <column_name:<string|int|float>[,<column_name:...>]
이것만 있으면 대부분의 경우에 부족한 느낌이 있습니다. 모든 필터는 망라되어 있지는 않지만, 수요 베이스로 추가하고 있으므로, 여기에 없는 필터나 기능이 있으면 캐주얼에 추가하고 있습니다. 만약 원하는 것이 있으면 issues, PR 기다리고 있습니다.
또한 처음에 쓰고 있던 decode 옵션도 여기에 준비되어 있습니다.
decode
가 전체 설정, decode-columns
가 개별 설정으로 이쪽이 우선도 높은 느낌입니다. 환경 변수 BTCLI_DECODE_TYPE
를 설정하여 기본 decode
옵션을 지정할 수도 있습니다.할 수 없는 일
write계의 커멘드는 자신 자신 별로 사용한 적이 없기 때문에 구현하고 있지 않습니다.
설치 방법
go get
에 들어갑니다. 음색을 타고 모듈화했으므로 환경 변수 GO111MODULE
가 필수입니다.go get -u github.com/takashabe/btcli/cmd/btcli
요약
인터랙티브 UI를 갖춘 cbt 기반의 Bigtable용 CLI btcli을 만들었습니다.
실제로 일에서도 사용하고 있고, 팀에서도 호평이므로 만들어 좋았던 느낌이 있습니다. 아직도 하고 싶은 일이 있기 때문에 시간을 찾아서는 개발을 계속해 가고 싶습니다.
유스 케이스가 맞는 분은 꼭 사용해보세요!
Reference
이 문제에 관하여(Cloud Bigtable용 대화형 CLI btcli 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takashabe/items/98ab1c4b6c241e799c4e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)