cbt CLI์ ์ถ๋ ฅ ํ์ ์ง์
์ด ๋ฌธ์์์๋ cbt
CLI๋ก ํ์๋ ๋ Bigtable ํ์ ์ ์ฅ๋ ํน์ ์ ํ์ ๋ฐ์ดํฐ ํ์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
ํ์ ์ง์ ์์
๋ฒ์ 0.12.0๋ถํฐ cbt
CLI๋ ํ
์ด๋ธ ํ์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ํน์ ๋ณตํฉ ์ ํ์ ํ์์ ์ง์ ํ ์ ์์ต๋๋ค.
cbt read
๋๋ cbt lookup
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด cbt
CLI์์ ํ์ ์ ์ฅ๋ ๊ฐ์ 'pretty print ์ ์ฉ'ํ ์ ์์ต๋๋ค.
๋ค์ ์์์์๋ ํ์ ์ง์ ์ ์ฌ์ฉํ์ง ์๋ cbt
CLI์ ๋ฐ์ดํฐ ์ถ๋ ฅ์ ๋ณด์ฌ์ค๋๋ค.
----------------------------------------
r1
fam1:col1 @ 2022/03/09-11:19:45.966000
"\n\x05Brave\x10\x02"
fam1:col2 @ 2022/03/14-11:17:20.014000
"{\"name\": \"Brave\", \"age\": 2}"
๋ค์ ์์์์๋ ํ์ ์ง์ ์ ์ฌ์ฉํ๋ cbt
CLI์ ๋ฐ์ดํฐ ์ถ๋ ฅ์ ๋ณด์ฌ์ค๋๋ค.
r1
fam1:col1 @ 2022/03/09-11:19:45.966000
name: "Brave"
age: 2
fam1:col2 @ 2022/03/14-11:17:20.014000
age: 2.00
name: "Brave"
ํ์์ด ์๋ ํ ์ธ์
์ด ๋๋ column family ํ์์ ์ง์ ํ๋ ค๋ฉด ํด๋น ์ด์ ํ์์ ์ง์ ํ๋ YAML ํ์ผ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. cbt lookup
๋๋ cbt read
๋ฅผ ํธ์ถํ๋ฉด format-file
์ธ์๋ฅผ ์ฌ์ฉํ์ฌ YAML ํ์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ ๋ฌํฉ๋๋ค. ๋ค์ ์ค๋ํซ์ ์ ๊ณต๋ format-file
์ธ์๋ฅผ ์ฌ์ฉํ์ฌ cbt lookup
์ ํธ์ถํ๋ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
cbt lookup my-table r1 format-file=/path/to/formatting.yml
YAML์์ ์ด ๋ฐ์ดํฐ ํ์ ์ ์
ํ์ ์ง์ YAML ํ์ผ์ ์ด ์ด๋ฆ์ด๋ column family ์ด๋ฆ์ ์ด๋ฆ์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์ ํ๊ณผ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ๋ค์ ์ค๋ํซ์์๋ YAML ํ์ ์ง์ ํ์ผ์ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
protocol_buffer_definitions:
- cat.proto
protocol_buffer_paths:
- testdata/
columns:
col1:
encoding: ProtocolBuffer
type: Cat
col2:
encoding: json
๋ค์ ์ค๋ํซ์์๋ 'cat.proto' ์ฝํ ์ธ ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
syntax = "proto3";
package cats;
option go_package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb";
message Cat {
string name = 1;
int32 age = 2;
}
์๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
protocol_buffer_definitions
ํ๋๋ protobuf ๋ฐ์ดํฐ ๋์ฝ๋ฉ์ ์ฌ์ฉํ ํ๋กํ ์ฝ ๋ฒํผ ๋ฉ์์ง ์ ํ์ ํฌํจํ ์ ์๋ .proto ํ์ผ์ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค.protocol_buffer_paths
ํ๋๋ ํ๋กํ ์ฝ ๋ฒํผ ์ ํ์ ๋์ฝ๋ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ .proto ํ์ผ์ ํฌํจํ ์ ์๋ ๋ก์ปฌ ๊ฒฝ๋ก ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค.google/protobuf
ํจํค์ง์ ๋ฉ์์ง์ ๊ฐ์ด ํ์ค ํ๋กํ ์ฝ ๋ฒํผ ๊ฐ์ ธ์ค๊ธฐ ์์น๋ฅผ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.columns
ํ๋์๋ ๊ฐ ์ด์ ํด๋น ๋ฐ์ดํฐ ์ ํ๊ณผ ํจ๊ป ์ด ์ด๋ฆ ๋ชฉ๋ก์ด ํฌํจ๋ฉ๋๋ค.protobuf
์ด์encoding
์ 'ProtocolBuffer'๋ก ์ค์ ๋๊ณtype
์ 'Cat'์ผ๋ก ์ค์ ๋ฉ๋๋ค.cbt
CLI๋ ์ด ์ด์ ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์Cat
proto ๋ฉ์์ง ์ ํ์ผ๋ก ํด์ํ๊ณ ํ์์ ์ง์ ํฉ๋๋ค. ์ ํ์protocol_buffer_definition
ํ๋์ ์ ๊ณต๋ .proto ํ์ผ ์ค ํ๋์ ์ ์๋ ๋ฉ์์ง ์ ํ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.json
์ด์encoding
ํ๋๊ฐ 'JSON'์ผ๋ก ์ค์ ๋์ด ์์ต๋๋ค.cbt
๋ ์ด ์ด์ ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ JSON ๊ตฌ์กฐ๋ก ํด์ํ๊ณ ํ์์ ์ง์ ํฉ๋๋ค.
์ ๊ณตํ ์ ์๋ ๋ค๋ฅธ ํ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
default_encoding
: ์ด ํ๋๋ ํ ์ด๋ธ์ ๋ชจ๋ ์ด์ด๋ column family์ ๋ชจ๋ ์ด์ ๋ํ ๊ธฐ๋ณธ ํ์ ์ง์ ์ ์ ์ํฉ๋๋ค.default_type
: ์ด ํ๋๋ ํ๋กํ ์ฝ ๋ฒํผ, big-endian, little-endian ์ธ์ฝ๋ฉ ์ด์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ํ์ ์ ์ํฉ๋๋ค.families
: ์ด ํ๋๋ column family ๋ด ๋ชจ๋ ์ด์ ์ธ์ฝ๋ฉ๊ณผ ์ ํ์ ์ ์ํฉ๋๋ค. column family์default_encoding
๋ฐdefault_type
์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ค์ ์ค๋ํซ๊ณผ ๊ฐ์ด ์ ์ ํ ์ธ์ฝ๋ฉ ๋ฐ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ์ด์ ์ด๋ฆ๋ณ๋ก ๋์ดํ๋columns
ํ๋๋ฅผ ์ ๊ณตํ์ฌ ์ด ์์ค์์ ์ด๋ฌํ ์ธ์ฝ๋ฉ์ ์ฌ์ ์ํ ์๋ ์์ต๋๋ค.families: family1: default_encoding: BigEndian default_type: INT64 columns: address: encoding: PROTO type: tutorial.Person
์ง์๋๋ ๋ฐ์ดํฐ ์ ํ
cbt
CLI๋ ์ฌ๋ฌ ๋ณต์กํ ๋ฐ์ดํฐ ์ ํ์ ํ์ ์ง์ ์ ์ง์ํฉ๋๋ค. ๋ค์ ํ๋ ๊ฐ ๋ชฉ๋ก ์ ํ์ ๋ํด YAML ํ์ผ์ ์ ๊ณตํ ์ง์๋๋ ๋ฐ์ดํฐ ์ ํ ๋ฐ ๋ฌธ์์ด์ ๋ณด์ฌ์ค๋๋ค. ๋ฌธ์์ด ๊ฐ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ํ | YAML ๊ฐ ํ์ ์ง์ |
---|---|
16์ง์ | Hex , H |
Big-endian | BigEndian , B |
Little-endian | LittleEndian , L |
ํ๋กํ ์ฝ ๋ฒํผ | ProtocolBuffer , P , PROTO |
JSON | JSON , J |
ํ 1. cbt
์ถ๋ ฅ์์ ํ์ ์ง์ ์ ์ง์๋๋ ๋ฐ์ดํฐ ์ ํ.
- 16์ง์ ์ธ์ฝ๋ฉ์ ์ ํ์ ๊ตฌ์ ๋ฐ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์์ 16์ง์ ํํ์ผ๋ก ํ์๋ฉ๋๋ค.
- big-endian ๋ฐ little-endian ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ ์ ์๋ ์ ํ์
int8
,int16
,int32
,int64
,uint8
,uint16
,uint32
,uint64
,float32
,float64
์ ๋๋ค. ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ธธ์ด๋ ํฌ๊ธฐ๊ฐ ์ ํ ํฌ๊ธฐ์ ๋ฐฐ์(๋ฐ์ดํธ)์ฌ์ผ ํฉ๋๋ค. ์ ์ฅ๋ ๊ธธ์ด๊ฐ ์ ํ ํฌ๊ธฐ์ ์ผ์นํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ ์ค์นผ๋ผ๋ก ํ์๋๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด๋ก ํ์๋ฉ๋๋ค. ์ ํ ์ด๋ฆ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. - ํ๋กํ ์ฝ ๋ฒํผ ์ธ์ฝ๋ฉ์ ์ง์ ๋ ์ ํ์ ์ ๊ณต๋ ํ๋กํ ์ฝ ๋ฒํผ ์ ์ ํ์ผ์ ์ ์๋ ๋ฉ์์ง ์ ํ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ์ ํ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. ์ ํ์ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ํ์๋๋ ์ด ๋ฐ์ดํฐ์ ์ด ์ด๋ฆ์ผ๋ก ์ค์ ๋ฉ๋๋ค.
- YAML์ ํ์ ์ง์ ๊ฐ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค.