โ . ๊ถํ๊ณผ ๋ณด์
์ฌ์ฉ์์ ํ ์ด๋ธ์ ์ ํํ๊ฒ ๋์ด๋ ์ ์์ด ๊ฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๊ทผ๊ถํ์ ์ง์ ํ๋ ค๋ฉด ๋ฌด์ํ ๋ง์ ์กฐํฉ์ด ์๊ธด๋ค.
๋ฐ๋ผ์, ๊ทธ๋ฃน์ด๋ ์ญํ ๋ณ๋ก ์คํค๋ง ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ค.
1. ๊ทธ๋ฃน๋ณ ์ ๊ทผ ๊ถํ ๋ถ์ฌ
admin : ๋ชจ๋ ์คํค๋ง์ ์ ๊ทผํ ์ ์๋ ๊ด๋ฆฌ์ ๊ทธ๋ฃน
pii_users : ๊ฐ์ธ์ ๋ณด๋ฅผ ์ฝ์ ์ ์๋ ๊ทธ๋ฃน
analytics_authors : ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค์ ๋ฐ์ดํฐ๋ฅผ ์์ , ์ฝ์ ์ ์๋ ๊ทธ๋ฃน
analytics_users : ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ ๊ทธ๋ฃน
- ๋ชจ๋ ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒฝ์ฐ(r/w) : All
GRANT ALL ON SCHEMA ์คํค๋ง๋ช
1 TO GROUP ๊ทธ๋ฃน๋ช
1;
GRANT ALL ON ALL TABLES IN SCHEMA ์คํค๋ง๋ช
1 TO GROUP ๊ทธ๋ฃน๋ช
1;
- ํน์ ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒฝ์ฐ(r) : Usage-select
GRANT USAGE ON SCHEMA ์คํค๋ง๋ช
1 TO GROUP ๊ทธ๋ฃน๋ช
1;
GRANT SELECT ON ALL TABLES IN SCHEMA ์คํค๋ง๋ช
1 TO GROUP ๊ทธ๋ฃน๋ช
1;
2. ์ญํ ๋ณ ์ ๊ทผ ๊ถํ ๋ถ์ฌ(IAM Role)
์ญํ ์ ๊ฒฝ์ฐ ๊ทธ๋ฃน๊ณผ ๋ฌ๋ฆฌ ๊ณ์น์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์ญํ ์ ๋ง๋ค ๋ ํธ๋ฆฌํ๋ค.(์์ฆ์๋ ์ญํ ๋ณ ์ ๊ทผ ๊ถํ์ ํ๋ฐํ ์ด์ฉํ๋ ์ถ์ธ์ด๋ค.)
ํน์ ์ญํ ์ ์์ฑํด์ ๊ณตํต๋ ์ ๊ทผ๊ถํ์ ๋ถ์ฌํ๊ณ , ์ด๋ฅผ ๊ฐ ๊ฐ์ธ/๊ทธ๋ฃน์ ๋ถ์ฌํ๋ค.
3. ๊ณตํต
ํ ์ฌ๋์ด ์ฌ๋ฌ ์ญํ ์ ์ํ ๊ฒฝ์ฐ ์ญํ ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ถํ์ ๊ฐ๋๋ค.
์๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ถํ์ ๋ถ์ฌํ ์ ์๋๋ฐ, ํผ์น ๋ชปํ ์ฌ์ ์ผ๋ก ์ ๋ณด๊ฐ ๋ ธ์ถ๋ ์๋ ์์ผ๋ฏ๋ก ๋ณ๋ ํ ์ด๋ธ๋ก ๊ด๋ฆฌํ๊ฑฐ๋, ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ์์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ ๋ก๋ํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
1) ์ปฌ๋ผ ๋ ๋ฒจ ๋ณด์(Column Level Security)
ํน์ ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ์/๊ทธ๋ฃน์๊ฒ ์ ๊ทผ๊ถํ์ ๋ถ์ฌํ๋ค.
2) ๋ ์ฝ๋ ๋ ๋ฒจ ๋ณด์(Row Level Security)
ํน์ ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ์/๊ทธ๋ฃน์๊ฒ ์ ๊ทผ๊ถํ์ ๋ถ์ฌํ๋ค.
CREATE RLS POLICY
ATTACH RLS POLICY
โ ก. ๋ฐฑ์ ๊ณผ ํ ์ด๋ธ ๋ณต๊ตฌ
์ต์ | ๊ณ ์ ๋น์ฉ | ๊ฐ๋ณ๋น์ฉ(Serverless) |
์ด์ Snapshot์ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ ๋ด์ฉ๋ค๋ง ์๋ก์ด Snapshot์ผ๋ก ์ ์ฅ (๋ฐ๋ ๊ฒ๋ง ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฉ๋์ด ๋ ๋ ๋ค) ๊ณ ์ ๋ ์์์ผ๋ก snapshot์ฉ ์คํ ๋ฆฌ์ง๊ฐ ๋ฐ๋ก ํ ๋น๋๋ค. ๊ธฐ๋ณธ ํ๋ฃจ๊ฐ ์ ์ฅ๋๊ณ ์ต๋ 35์ผ๊น์ง ๋ฌด๋ฃ๋ฃ ์ ์ฅํ ์ ์๋ค. |
๋ฐ๋ ๋ด์ฉ๋ง ์ ์ฅํ์ง ์๊ณ ๋ชจ๋ ๊ธฐ๋ก์ ์ ์ฅ → Recovery Point ์์ฑ ๋ณต๊ตฌ ์์ ์ 30๋ถ๋ง๋ค ์๋์ผ๋ก ์์ฑ, 24์๊ฐ ๋์ ๋ณด๊ด → Snapshot ์์ฑ |
|
์คํ | Redshift>Maintenance>Back up Details>Edit automated shapshot period ์ ํ |
Redshift>namespace>๋ณต๊ตฌ์์ >Recovery Point์ ํ>๋ณต๊ตฌ์์ ์์ ์ค๋ ์ท ์์ฑ |
๋ค๋ฅธ ์ง์ญ์ S3๋ก ๋ฐฑ์ ํ ์๋ ์๋๋ฐ, ๋ฐ์ดํฐ๊ฐ ์๋ ์ง์ญ ์ฌ๋์ ๋ณต๊ตฌ์ ์ ๋ฆฌํ๋ค. | ||
์คํ | Redshift>Actions>Configure Cross-region snapshot Redshift>namespace>๋ฐ์ดํฐ๋ฐฑ์ >Cross region backup>์ |
โ ข. AWS Spectrum - AWS ์ฌ์ฉ ์ ๊ถ์ฅ
์ถ๊ฐ ๋น์ฉ์ ๋ด๊ณ ๋ฐ์ดํฐ๋ ์ดํฌ(S3)์ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก Redshift์ ๊ฐ์ ์ง์ญ์ S3์ ๋ํด์, S3 ํ์ผ๋ค(์ธ๋ถ์ ์ฅ)์ ๋ด๋ถ ํ ์ด๋ธ(Factor table)๋ก ๊ฐ์ฃผํ๊ณ SQL ์ฒ๋ฆฌํ ์ ์๋ค.(์กฐ์ธ์ฐ์ฐ๋ ๊ฐ๋ฅ)
๊ฐ์ฃผํ๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ์ ์๋ก ์์ฑํ์ง ์๊ณ ์ฐธ์กฐ(-๋ณดํต ์ฝ๊ธฐ ์ ์ฉ)ํ๋ค.(csv, json, xml, ๊ด๊ณํ DB)
์ธ๋ถํ ์ด๋ธ์ด ํด ๊ฒฝ์ฐ ์ฑ๋ฅ ์ด์๊ฐ ๋ฐ์ํ ์ ์๊ณ ๋ณด์ ๋ฌธ์ ์ ์ ์ํด์ผ ํ๋ค.
Redshift ๋ก๋ฉํ๋ ์ค๋ฒํค๋ ์์ด ์ฒ๋ฆฌํ ์ ์๋ค.
๋ฐ์ดํฐ ๋ ์ดํฌ๋ ํ๊ท ์ ์ผ๋ก ๋ฐ์ดํฐ์ ํฌํค๊ฐ ํฌ๊ณ , ์๋์ ์ผ๋ก ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค(Dimension table)๋ ํ๊ท ์ ์ผ๋ก ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์๋ค.
cf) Factor table๊ณผ Dimesion table
Factor table : ๋ถ์์ ๋์์ด ๋๋ ์์ ์ ๋ณด๋ฅผ ํฌํจํ๋ ์ค์ ๋ฐ์ด๋ธ(๋งค์ถ ์์ต, ํ๋งค๋ ๋ฑ)
Dimension table : Factor ํ ์ด๋ธ์ ๋ํ ์์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ํ ์ด๋ธ(์ฌ์ฉ์ ์ ๋ณด, ๋ฌผํ ์ ๋ณด ๋ฑ)
๋ณดํต Factor table์ ํฌ๊ธฐ >> Dimension table ํฌ๊ธฐ์ด๋ค ๋ฐ๋ผ์ ๋ณดํต Dimension ํ ์ด๋ธ์ Redshift์ ์ ์ฌํ๊ณ Factor table์ ๋น์ฉ์ด ์ ๋ ดํ S3์ ์ ์ฅํ ๋ค, ์ผ๋ถ ๊ฐ๊ณตํ์ฌ Redshift์ ์ ์ฌํ๋ค.
๋ฐ์ดํฐ๋ ์ดํฌ์ ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค์ ์ ์ฌํ๋ ๋ฐ์ดํฐ ์ ๋ณด
๋ฐ์ดํฐ๋ ์ดํฌ(S3) | ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(Redshift) | |
ํ ์ด๋ธ ์ข ๋ฅ | Dimension table | Factor table |
์์1 | user_session_channel order |
user, channel product, user |
์ฌ์ฉ
๋ฐ์ดํฐ๋ ์ดํฌ JOIN ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค
๋ฐ์ดํฐ๋ ์ดํฌ์ ํ์ผ์ ๊ฐ๊ณตํ์ฌ ๋ฐ์ดํฐ๋ ์ดํฌ์ ์ ์ฅ
๋ฐ์ดํฐ๋ ์ดํฌ์ ํ์ผ์ ๊ฐ๊ณตํ์ฌ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ ์ฅ
์ค์ต
user_session_channel์ ์ธ๋ถํ ์ด๋ธ๋ก ๋ง๋ ๋ค์ Redshift์ ์กฐ์ธ ์ฐ์ฐ์ ์ํํด ๋ณด์.
1. S3 ๋ฒํท ์์ฑ
2. Redshift ์๋ฒ ์์ฑ
3. Role ์์ฑ
IAM>์ญํ >์ญํ ์์ฑ
IAM> ์ญํ > ๊ถํ์ถ๊ฐ
- Amazon S3 Full Access
- AWSGlueConsoleFullAccess
4. Redshift์ Role ๋ถ์ฌ
(์ด์ ์ ํฌ์คํ ๊ณผ ๋์ผ)
5. ์ธ๋ถ ํ ์ด๋ธ์ฉ ์คํค๋ง ์์ฑ
S3์ external ํด๋์ user_session_channel.csv ํ์ผ ์ ๋ก๋ํ๋ค.
%%sql
-- AWSGlueConsoleFullAccess
CREATE EXTERNAL SCHEMA external_schema
from data catalog
database 'myspectrum_db'
iam_role 'IAMROLE arn ์ฃผ์'
create external database if not exists;
6. ์ธ๋ถ ํ ์ด๋ธ ์ ์
SQL ๋ฌธ์ฅ์ ์ด์ฉํด ์ธ๋ถ ํ ์ด๋ธ์ ์ ์ํ๋ค.
%%sql
CREATE EXTERNAL TABLE external_schema.user_session_channel (
userid integer ,
sessionid varchar(32),
channel varchar(32)
)
row format delimited
fields terminated by ','
stored as textfile
location 'S3>external ํด๋ URI';
- location ํด๋ ๋ด์ ๋ชจ๋ ํ์ผ๋ค ๊ฐ๊ฐ์ ํ ์ด๋ธ์ฒ๋ผ ๋ก๋ฉ(๋จ, ํ์ผ ๊ฐ์ ํฌ๋งท์ด ๊ฐ์์ผ ํ๋ค.)
์ด ๊ณผ์ ์์ ๊ณ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ฐ,
1. S3 ๋ฒํท์ ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ฐจ๋จ์ ํด์ง
2. AWS Glue ์ง์ ์ฐ๊ฒฐ ํ ์ญ์ ํ ๋ค ๋ค์ ์คํ
๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์คํํ ๋ค์ ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ ์ ์์ ์ผ๋ก ์ํ๋์๋ค.
7. ์ธ๋ถํ ์ด๋ธ๊ณผ ๋ด๋ถํ ์ด๋ธ์ ์กฐ์ธ
%%sql
SELECT gender, COUNT(1)
FROM external_schema.user_session_channel external
JOIN raw_data.user_property up ON external.userid = up.userid
GROUP BY 1;
โ ฃ. Athena(Apache presto ์๋น์คํ) - ๋ค๋ฅธ ํด๋ผ์ฐ๋ ์ฌ์ฉ ์ ๊ถ์ฅ
Spectrum๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ผ๋ก ๋ฐ์ดํฐ๋ ์ดํฌ(S3) ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๋จ) ํ ์ด๋ธ๋ก ๊ฐ์ฃผํ์ง๋ ์๋๋ค.
โ ค. Redshift ML
AWS Sagemaker(์ต์ ํ๋ ๋ชจ๋ธ์ ์๋ ์์ฑํ๋ ๊ธฐ๋ฅ)์ ์ํด ์ง์๋๋ ๊ธฐ๋ฅ์ผ๋ก ๋จธ์ ๋ฌ๋ ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ฉด ์ต์ ์ Supervised machine ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค์ด์ค๋ค.
Sagemaker
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ๊ฐ๋ฐ์ ์ฒ์๋ถํฐ ๋๊ฐ์ง ํด๊ฒฐํด ์ฃผ๋ ์๋น์ค
Tensorflow, Keras, Pytorch ๋ฑ์ ํ๋ ์์ํฌ ์ง์
์ ๊ณตํ๋ ๊ธฐ๋ฅ
- Traning Set ์ค๋น
- ๋ชจ๋ธ ํ๋ จ
- ๋ชจ๋ธ ๊ฒ์ฆ
- ๋ชจ๋ธ ๋ฐฐํฌ์ ๊ด๋ฆฌ
SageMaker Studio
์น ๊ธฐ๋ฐ์ ํ๊ฒฝ ์ ๊ณต
Autopilot
์ฝ๋ฉ์ ํ์ง ์๊ณ ๋ชจ๋ธ์ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ ์ ๊ณต(AutoML).
1) EDA ์ํ : ๊ฐ ํ๋ ํน์ฑ ํ์ . drop, scaling(์ ๊ทํ)
2) ์ฌ๋ฌ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํ์ดํผ ํ๋ผ๋ฏธํฐ์ ์กฐํฉ์ ๋ํด ํ๋ จ-ํ ์คํธ ์ํํ ๋ค ์ต์ ์ ๋ชจ๋ธ์ ์ ํ
3) ์ดํ API๋ก ๋ง๋๋ ๊ฒ๋ ๊ฐ๋ฅ
์ค์ต : ๊ฐ๋จํ ML ๋ชจ๋ธ ์์ฑํด์ ์ ์ฉํ๊ธฐ
1. ์บ๊ธ ๋ฐ์ดํฐ ๋ค์ด๋ก๋
2. S3 ๋ฒํท์ ๋ฐ์ดํฐ ์ ๋ก๋
3. Redshift์ COPY ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒํฌ ์ ๋ฐ์ดํธ
ํ ์ด๋ธ ์์ฑ(create table)
๋ฒํฌ ์ ๋ฐ์ดํธ(copy)
4. Sagemaker์๊ฒ Redshift ์ฌ์ฉ๊ถํ ๋ถ์ฌ
- ์๋ก์ด ์ญํ ์์ฑ : Redshift-ML
IAM> ์ญํ > ์ญํ ์์ฑ
AWS service ์ ํ + SageMaker-Excution ์ ํ
์ ์ฑ
AmazonSageMakerFullAccess(sagemaker ์ ํ ์ ๊ธฐ๋ณธ์ผ๋ก ์ ์ฉ)
์ญํ > redshift-ML> ๊ถํ> ๊ถํ์ถ๊ฐ
AmazonS3 FullAccess(์๋ก ์ถ๊ฐํด์ผ ํจ)
๊ทธ๋ฐ๋ฐ ํ์ฌ ์ํฉ์ ๊ฒฝ์ฐ Redshift, Sagemaker ์๋ก ๊ถํ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
์ญํ > redshift-ML> ์ ๋ขฐ๊ด๊ณ> ์ ๋ขฐ์ ์ฑ ํธ์ง> ๋ณด์์ฃผ์ฒด ์ถ๊ฐ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํ๋ค.
5. Redshift์ Sagemaker ๊ถํ ๋ถ์ฌ
Redshift> Namespace> ๋ณด์ ๋ฐ ์ํธํ> IAM ์ญํ ๊ด๋ฆฌ> IAM ์ญํ ์ฐ๊ฒฐ
Redshift-ML ์ ํํ๋ค.
6. ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ์์ฑ(80% ๋ฐ์ดํฐ ์ฌ์ฉ)
- create model(train ๋ฐ์ดํฐ์ 80% ์ฌ์ฉ)
CREATE MODEL SQL๋ก์กฐํํ ์์๋๋ชจ๋ธ์ด๋ฆ
FROM (
SELECT
x๋ก ์ํ๋ ์ปฌ๋ผ๋ชฉ๋ก(,๋ก ๊ตฌ๋ถ)
FROM ์คํค๋ง.ํ
์ด๋ธ๋ช
WHERE purpose = 'Train'
)
TARGET y๋ก ์ํ๋ ์ปฌ๋ผ
FUNCTION ํจ์์ด๋ฆ
IAM_ROLE 'Redshift-ML arn ๋ถ์ฌ๋ฃ๊ธฐ'
SETTINGS (
S3_BUCKET '์ ์ฅํ s3๋ฒํท์ด๋ฆ'
);
S3๋ฒํท ํ์์ redshift_mlํด๋๊ฐ ์์ฑ๋๋ฉฐ ๋ชจ๋ธ ๊ด๋ จ ๋ชจ๋ ๋ก๊ทธ๋ค์ด ์ ์ฅ๋๋ค.
๋ชจ๋ธ๋น๋ํ์ธ
SHOW MODEL SQL๋ก์กฐํํ ์์๋๋ชจ๋ธ์ด๋ฆ;
7. ํ ์คํธ ์ํ
(train ํ ์ดํฐ์ ๋๋จธ์ง 20% ์ฌ์ฉ)
SELECT ์์ธก๋์,
ml_fn_orange_telecom_customers(
x๋ก ์ํ๋ ์ปฌ๋ผ๋ช
) AS "prediction"
FROM ์คํค๋ง.ํ
์ด๋ธ๋ช
WHERE purpose = 'Test';
8. Sagemaker ๊ด๋ จ ๋ฆฌ์์ค ์ ๊ฑฐ
DROP MODEL SQL๋กํธ์ถํ ์์๋๋ชจ๋ธ์ด๋ฆ;
+ AWS ์น์ ์ ์ํด์ Sagemaker๊ด๋ จ ํ์ผ ์ญ์
โ ฅ. Redshift ์ค์ง/์ข ๋ฃํ๊ธฐ
1. ๊ณ ์ ๋น์ฉ
Maintenance window๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฒ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํด ์ค๋จ
์ค์ง
Redshift ํด๋ฌ์คํฐ๋ฅผ ์ ํ> Pause → ๋ค์ ์คํ ์(Resume)
์ญ์
Redshift ํด๋ฌ์คํฐ๋ฅผ ์ ํ> Delete
ํด๋น ํด๋ฌ์คํฐ๋ฅผ S3 snapshot์ผ๋ก ์ ์ฅํ ๊ฑด์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํด์ผ ํจ(์ดํ์ ๋ณต๊ตฌ ๊ฐ๋ฅ)
2. ๊ฐ๋ณ๋น์ฉ(serverless)
๊ด๋ จ๋ Workgroup ์ญ์
๊ด๋ จ๋ Namespace ์ญ์
3. ๊ณตํต) Vacuum : ํ ์ด๋ธ ์ฒญ์ํ ์ต์ ํ
DB ํ ์ด๋ธ์ ์ญ์ ๋ ์์ ์ด ๋น๋ฒํ ๊ฒฝ์ฐ ์ต์ ํํด์ฃผ๋ ๊ธฐ๋ฅ. ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ก์๋จน๊ธฐ ๋๋ฌธ์ ๋ฐ์์ง ์์ ๋ ์ํํด์ผ ํ๋ค!
- ํ ์ด๋ธ ๋ฐ์ดํฐ ์ ๋ ฌ
๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ์ฌ ๋ถ์ฐ๋์ด ์๋ ํ์ ๋ชจ์ ์ฟผ๋ฆฌ ์คํ ์ ๊ฒ์ํด์ผ ํ ๋ธ๋ก์๋ฅผ ์ค์ด๋ ์์ ์ํ
- ๋์คํฌ ๊ณต๊ฐ ํด์ /ํ์
์ญ์ ๋ ํ์ ๋์คํฌ ๊ณต๊ฐ์ ์ฆ์ ํด์ ๋์ง ์์ผ๋ฏ๋ก ๊ณต๊ฐ ํ์ ๋ฐ ์ง์ ์ ์ผ๋ก ํด์
- ํ ์ด๋ธ ํต๊ณ ์ ๋ฐ์ดํธ
ํ ์ด๋ธ ํต๊ณ๋ฅผ ์ ๋ฐ์ดํธํ์ฌ Query Planner์ ์ฟผ๋ฆฌ ์ต์ ํ๋ฅผ ์ง์