[GCP] Bigtable

[์›๋ณธ ๋งํฌ]

Bigtable์€ ์ดˆ๋Œ€ํ˜• ์Šคํ† ๋ฆฌ์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋‹ค.
Hbase ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๊ณ , ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ๋ฌด์‹ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“์•„๋†“๋Š”๋ฐ ์ตœ์ ํ™”๋˜์–ด์žˆ๋‹ค.

Apache HBase์™€ Cassandra์˜ ๋Œ€์•ˆ ์ค‘ ํ•˜๋‚˜๊ณ , ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋„ ์ž˜ ์ง€์›ํ•˜๋Š” ํŽธ์ด๋‹ค.

๋ณดํ†ต bigtable์— ๋ฌด์‹ํ•˜๊ฒŒ ์Œ“๋‹ค๊ฐ€ ๋ถ„์„์ด ํ•„์š”ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์„œ mapreduce๋ฅผ ๋Œ๋ฆฌ๊ฑฐ๋‚˜, bigtable->bigquery๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ๋„ฃ์–ด์„œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์„ ๋งŽ์ด๋“ค ์ทจํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋‹ค๋งŒ ์ž์ฒด์ ์œผ๋กœ MapReduce ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์ž์ฒด์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ˆ˜์ค€์—์„œ ๊ตฌํ˜„ํ•ด์„œ ์จ์•ผํ•œ๋‹ค.




๋น„์šฉ

https://cloud.google.com/bigtable/pricing?hl=ko

๋น„์šฉ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋…ธ๋“œ๊ฐ€ ๋– ์žˆ๋Š” ์‹œ๊ฐ„๊ณผ ์ €์žฅ๋œ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งค๊ฒจ์ง„๋‹ค.
์ €๋ ดํ•œ ํŽธ์€ ์•„๋‹ˆ๋‹ค. ๋งค์šฐ ๋น„์‹ธ๋‹ค.


์‹œ๊ฐ„๋‹น 0.85๋‹ฌ๋Ÿฌ๋‹ˆ๊นŒ, ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ๋– ์žˆ์–ด๋„ ํ•œ๋‹ฌ์— 612๋‹ฌ๋Ÿฌ=80๋งŒ์›์ด ๋„˜๊ฒŒ ๋‚˜๊ฐ€๋Š” ์…ˆ์ด๋‹ค. ๊ฝค ๋น„์‹ธ๋‹ค.


์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์€ SSD์™€ HDD ๋น„์šฉ์ด ๋‹ค๋ฅด๋‹ค.
1ํ…Œ๋ผ๋งŒ ์ €์žฅํ•œ๋‹ค๊ณ  ์น˜๋ฉด, SSD๋Š” ํ•œ๋‹ฌ์— 220๋‹ฌ๋Ÿฌ=30๋งŒ์›, HDD๋Š” 34๋‹ฌ๋Ÿฌ=5๋งŒ์› ์ •๋„ ๋‚˜๊ฐ„๋‹ค.





์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์จ๋ณด๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์ž.

์ด๋ฆ„ ์ง“๊ณ 


์Šคํ† ๋ฆฌ์ง€ ํƒ€์ž…์„ ์„ ํƒํ•œ๋‹ค.
๋‚˜๋Š” ์ข€๋” ์ €๋ ดํ•œ ํ•˜๋“œ๋ฅผ ํƒํ•˜๊ฒ ๋‹ค..


๋ฆฌ์ „๊ณผ ๋…ธ๋“œ ๊ฐœ์ˆ˜๋ฅผ ์„ ํƒํ•œ๋‹ค.


์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง€๋ฉด ์ž˜ ๋œ ๊ฒƒ์ด๋‹ค.




ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

bigtable๋„ ์—ฌํƒ€ DB๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ ๋ˆ„๋ฅด๊ณ 


์ด๋ฆ„์„ ์ง“๊ณ , ์ปฌ๋Ÿผ ํŒจ๋ฐ€๋ฆฌ๋“ค์„ ์ ์ ˆํžˆ ์ •์˜ํ•œ๋‹ค.
์ œ๋Œ€๋กœ ์จ๋จน์œผ๋ ค๋ฉด ์ปฌ๋Ÿผ ํŒจ๋ฐ€๋ฆฌ๋ฅผ ์ตœ์†Œํ•œ ํ•˜๋‚˜ ์ด์ƒ์€ ๋‘ฌ์•ผํ•œ๋‹ค.

์ปฌ๋Ÿผ ํŒจ๋ฐ€๋ฆฌ๋Š” ์‰ฝ๊ฒŒ ๋งํ•ด ์ปฌ๋Ÿผ๋“ค์˜ ๊ทธ๋ฃน์ด๋‹ค.
Bigtable์—์„œ ํ…Œ์ด๋ธ”์€ ํ•˜๋‚˜์˜ ๊ธฐ๋ณธํ‚ค์™€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปฌ๋ŸผํŒจ๋ฐ€๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

๊ฐ ์ปฌ๋Ÿผ ํŒจ๋ฐ€๋ฆฌ์—๋Š” ์ปฌ๋Ÿผ์ด ์—ฌ๋Ÿฌ๊ฐœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.




CLI๋กœ ๋‹ค๋ค„๋ณด๊ธฐ

bigtable์€ cbt๋ผ๋Š” ์ „์šฉ CLI ๋„๊ตฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.
์—†๋‹ค๋ฉด gcloud๋กœ ์„ค์น˜ํ•˜๋ฉด ๋œ๋‹ค.

gcloud components install cbt

cloud shell์„ ํ†ตํ•ด ์“ด๋‹ค๋ฉด ๊ธฐ๋ณธ์œผ๋กœ ๊น”๋ ค์žˆ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

cbt listinstances

๊ทธ๋ฆฌ๊ณ  ํŠน์ • ์ธ์Šคํ„ด์Šค์˜ ํ…Œ์ด๋ธ” ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋ ค๋ฉด, ls ๋ช…๋ น์„ ์“ฐ๋ฉด ๋œ๋‹ค.

cbt -instance=์ธ์Šคํ„ด์Šค๋ช… ls

ํ…Œ์ด๋ธ” ๋‚ด์˜ ์ปฌ๋Ÿผ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ํ•œ๋‹ค.

cbt -instance=์ธ์Šคํ„ด์Šค๋ช… ls ํ…Œ์ด๋ธ”๋ช…

๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด set ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

cbt -instance=์ธ์Šคํ„ด์Šค๋ช… set ํ…Œ์ด๋ธ”๋ช… ํ‚ค๊ฐ’ ์ปฌ๋ŸผํŒจ๋ฐ€๋ฆฌ:์ปฌ๋Ÿผ=๊ฐ’

์˜ˆ) 
cbt -instance=bigtable-test set orders 1 test:price=5000 test:product_id=12 test:buyer_id=1 
cbt -instance=bigtable-test set orders 2 test:price=7000 test:product_id=15 test:buyer_id=1 
cbt -instance=bigtable-test set orders 3 test:price=3000 test:product_id=11 test:buyer_id=2 
cbt -instance=bigtable-test set orders 4 test:price=1000 test:product_id=13 test:buyer_id=3

์ฝ์„๋•Œ๋Š” read ๋ช…๋ น์„ ์“ด๋‹ค.

cbt -instance=์ธ์Šคํ„ด์Šค๋ช… read ํ…Œ์ด๋ธ”๋ช…

cbt -instance=bigtable-test read orders

์ง€์šฐ๋ ค๋ฉด deleterow ๋ช…๋ น์„ ์“ฐ๋ฉด ๋œ๋‹ค.

cbt -instance=์ธ์Šคํ„ด์Šค๋ช… deleterow ํ…Œ์ด๋ธ”๋ช… ํ‚ค




์ฐธ์กฐ
https://cloud.google.com/bigtable?hl=ko
https://cloud.google.com/bigtable/docs/create-instance-write-data-cbt-cli?hl=ko
https://medium.com/google-cloud/getting-started-with-bigtable-on-gcp-adfb896e0b26
https://github.com/googleapis/nodejs-bigtable/tree/main/samples#before-you-begin