Cloud Engineering

๋ชฉ๋ก
- Cloud IAM: Qwik Start
- Introduction to SQL for BigQuery and Cloud SQL โฌ ๏ธ ์ค๋์ Lab!
- Multiple VPC Networks
- Cloud Monitoring: Qwik Start
- Managing Deployments Using Kubernetes Engine
BigQuery์์ ๋ฐ๋์ ์์ ๊ฑฐ ๊ณต์ ๊ด๋ จ ๊ณต๊ฐ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ํ ๊ธฐ๋ณธ SQL ์ฟผ๋ฆฌ ํค์๋๋ฅผ ํ์ตํ๊ณ , ๋ฐ์ดํฐ ์ธํธ์ ํ์ ์งํฉ์ CSV ํ์ผ๋ก ๋ณด๋ด Cloud SQL์ ์ ๋ก๋ ํด๋ณด์.


์ฐธ๊ณ
๋๋ ๊ฒ์์ด ์ ์๋์ด์
cycle_hire์cycle_stations๋ฅผ ์ง์ ๊ฒ์ ํ์ ๊ฒ์ ๊ฒฐ๊ณผ ๊ฐ์ฅ ๋์ ์๋ ๋ณ(โญ) ํ์๋ฅผ ํด๋ฆญํ์๋ค.
์ด ํ์๋ฅผ ํ๋ฉด ๋์ค์ Explorer ์๋์Starred๋ฉ๋ด๋ฅผ ํตํด ์ฝ๊ฒ ์ฐพ๊ณ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.

โก๏ธ Explorer > โญ Starred > cycle_hire ํด๋ฆญ > Preview ํญ์ ์ ํํ๋ฉด ํ
์ด๋ธ ๋ด์ ๋ฐ์ดํฐ๋ค์ ๋ชฉ๋ก์ ๋ณผ ์ ์๋ค.

โก๏ธ Preview ํญ ์์ [+] ์ ํด๋ฆญํ์ฌ SQL ํธ์ง๊ธฐ๋ฅผ ์์ฑํ๋ค.
SELECT end_station_name FROM `bigquery-public-data.london_bicycles.cycle_hire`;

โก๏ธ ํธ์ง๊ธฐ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑ ํ Run(Ctrl+Enter) ์คํํ๋ฉด ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
SELECT * FROM `bigquery-public-data.london_bicycles.cycle_hire` WHERE duration>=1200;

โก๏ธ 3)๊ณผ ๋ฌ๋ฆฌ, ์ง์์๊ฐ(duration) ๊ฐ์ด 1200 ์ด์์ธ ๊ฐ๋ง ์กฐํํ์๊ณ , ์ฐ์ธก ํ๋จ์ ๋ณด๋ฉด ์กฐํ๋ ๊ฐ์๊ฐ ๋ ์ค์ด๋ค์์์ ํ์ธํ ์ ์๋ค.
SELECT start_station_name FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name;

GROUP BYโจ
๊ณตํต ๊ธฐ์ค(์: ์ด ๊ฐ)์ ๊ณต์ ํ๋ ๊ฒฐ๊ณผ ์งํฉ ํ์ ์ง๊ณํ๋ฉฐ ์ด๋ฌํ ๊ธฐ์ค์ ๋ํด ์ฐพ์ ๋ชจ๋ ๊ณ ์ ํญ๋ชฉ์ ๋ฐํํ๋ค.
SELECT start_station_name, COUNT(*) FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name;

COUNTโจ
๋์ผํ ๊ธฐ์ค(์: ์ด ๊ฐ)์ ๊ณต์ ํ๋ ํ ์๋ฅผ ๋ฐํํ๋ค.
SELECT start_station_name, COUNT(*) AS num_starts FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name;

ASโจ
ํ ์ด๋ธ ๋๋ ์ด์ ๋ณ์นญ์ ์์ฑํ๋ ๊ธฐ๋ฅ์ผ๋ก, ๋ณ์นญ์ AS๊ฐ ์ง์ ํ๋ ๋ฐํ๋ ์ด์ด๋ ํ ์ด๋ธ์ ๋ถ์ฌ๋๋ ์ ์ด๋ฆ์ด๋ค.
2) ์์ COUNT๋ก ์ถ๋ ฅ๋ ์นผ๋ผ๋ช ์ด AS๋ก ๋ถ์ฌํnum_starts๋ก ๋ณ๊ฒฝ๋๋ค.
//start_station_name ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ (default: ASC)
SELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY start_station_name;
//num ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ (default: ASC)
SELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY num;
//num ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ (DESC: ๋ด๋ฆผ์ฐจ์)
SELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY num DESC;

ORDER BYโจ
๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ ์กฐ๊ฑด ๋๋ ์ด ๊ฐ์ ๋ฐ๋ผ ์ค๋ฆ์ฐจ์(AESC, default) ๋๋ ๋ด๋ฆผ์ฐจ์(DESC)๋ก ์ ๋ ฌํ๋ค.
- ASEC: (1, 2, 3, 4), (๊ฐ, ๋, ๋ค, ๋ผ), (a, b, c, d)
- DESC: (4, 3, 2, 1), (๋ผ, ๋ค, ๋, ๊ฐ), (d, c, b, a)
โก๏ธ Database์ ๋ฐ๋ผ, NULL ๊ฐ์ด ๋งจ ์์ด๋ ๋งจ ๋ค์ ์์นํ ์ ์๋ค.

์ ์ฅํด์ผ ํ๋ ์ฟผ๋ฆฌ ๋ฐ์ดํฐ๐ค
start_station_name.csvSELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY num DESC;
end_station_name.csvSELECT end_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY end_station_name ORDER BY num DESC;

โก๏ธ ๋ฒํท์ ๊ณ ์ ํ ์ด๋ฆ(Project ID)๋ง ์ค์ ํ ๋ค๋ฅธ ๋ชจ๋ ์ค์ ์ ๊ธฐ๋ณธ ๊ฐ์ผ๋ก ๊ทธ๋๋ก ๋ ์ฑ ์์ฑ

โก๏ธ Upload > file ํด๋ฆญ ํ ์ ์ฅํ CSV ํ์ผ ์
๋ก๋ (2๊ฐ)



์ ํ ํญ๋ชฉ
- Edition preset: Development โ
- Database version: MySQL 8.0 โ
- Instance ID: my-demo (๋ค๋ฅธ ์์ด๋๋ก ์ค์ ๊ฐ๋ฅ)
- Password: ChangeMe1! (๋ค๋ฅธ ๋น๋ฐ๋ฒํธ๋ก ์ค์ ๊ฐ๋ฅ)
- Zone availability: Multiple zones(Highly available) โ
- Specify zones:
asia-southeast1-b(Primary zone)๋ง ์ ํํ๊ณ , Secondary zone์ Any๋ก ๊ทธ๋๋ก ๋๋ค.


# Instance ID๋ฅผ ๋ค๋ฅธ ๊ฑธ๋ก ์ค์ ํ๋ค๋ฉด my-demo ๋์ ํด๋น ์์ด๋ ์
๋ ฅ
gcloud sql connect my-demo --user=root --quiet

โก๏ธ ๋น๋ฐ๋ฒํธ๋ 6-3. ์์ ๋ง๋ ๋น๋ฐ๋ฒํธ!
CREATE DATABASE bike;

//bike ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ > london1 ์ด๋ผ๋ ํ
์ด๋ธ ์์ฑ
USE bike;
CREATE TABLE london1 (start_station_name VARCHAR(255), num INT);
//bike ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ > london2 ์ด๋ผ๋ ํ
์ด๋ธ ์์ฑ
USE bike;
CREATE TABLE london2 (end_station_name VARCHAR(255), num INT);

SELECT * FROM london1;
SELECT * FROM london2;

โก๏ธ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ์ง ์์๊ธฐ ๋๋ฌธ์, ๊ฒฐ๊ณผ๋ Empty๋ก ๋จ๋ ๊ฒ ์ ์!

์ฐธ๊ณ
- File format: CSV
- Select source file: Select from Google Cloud Storage
- Cloud Storage์์ ์์ฑํ Bucket ์ ํ ํ, ์ ๋ก๋ํ CSV ํ์ผ ํด๋ฆญ
- Database: bike
- Table
start_station_data.csvํ์ผ: london1end_station_data.csvํ์ผ: london2
SELECT * FROM london1;
SELECT * FROM london2;

โก๏ธ Instance์ ์ฐ๊ฒฐ๋ Cloud Shell ์ธ์
์์ ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ์ฒ์ ํ
์ด๋ธ ์์ฑํ์ ๋๋ Empty ์๋ ๋ฐ์ดํฐ๋ค์ด ๊ฐ ํ
์ด๋ธ๋ง๋ค importํ .csv ๋ฐ์ดํฐ๋ก ์ฑ์์ง ๊ฒ์ ํ์ธํ ์ ์๋ค.
DELETE FROM london1 WHERE num=0;
DELETE FROM london2 WHERE num=0;

INSERT INTO london1 (start_station_name, num) VALUES ("test destination", 1);

SELECT start_station_name AS top_stations, num FROM london1 WHERE num>100000
UNION
SELECT end_station_name, num FROM london2 WHERE num>100000
ORDER BY top_stations DESC;
