
๋ฐ์ดํฐ ํ๋ซํผ์ด ์ปค์ง์๋ก ๊ฐ์ฅ ๋จผ์ ๋ณต์กํด์ง๋ ๊ฒ์ ๋ฐ์ดํฐ ์์ฒด๊ฐ ์๋๋ผ ๋ฐ์ดํฐ์ ๊ด๋ฆฌ ๋ฐฉ์์ ๋๋ค.
์ฌ๋ฌ ํ์ด ๊ฐ์ ๋ฐ์ดํฐ ๋ ์ดํฌ๋ฅผ ๊ณต์ ํ๊ณ , ์๋ง์ ํ
์ด๋ธยทํ์ผยท๋ชจ๋ธ์ด ์์ด๊ธฐ ์์ํ๋ฉด
โ์ด ๋ฐ์ดํฐ๋ ๋๊ฐ ๋ง๋ค์๋๊ฐ?โ, โ๋๊ฐ ์ ๊ทผํ ์ ์๋๊ฐ?โ, โ์ด๋์ ์ ์ฅ๋์ด ์๋๊ฐ?โ ๊ฐ์ ์ง๋ฌธ์ ๋ช
ํํ ๋ตํ๊ธฐ ์ด๋ ค์์ง์ฃ .๐
Databricks Unity Catalog๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ํตํฉ ๋ฐ์ดํฐ ๊ฑฐ๋ฒ๋์ค ๊ณ์ธต์
๋๋ค.
๋จ์ํ ํ
์ด๋ธ ๊ถํ์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๋์ด,
๐ ๋ฐ์ดํฐยทํ์ผยท๋ชจ๋ธ ์ ๋ฐ์ ๋ํด ์ค์ ์ง์ค์์ผ๋ก ์ ๊ทผ ์ ์ด, ๊ฐ์ฌ, ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์กด Hive Metastore ๊ธฐ๋ฐ ํ๊ฒฝ์์๋ ์ํฌ์คํ์ด์ค๋ง๋ค ๋ฉํ์คํ ์ด๊ฐ ๋ถ๋ฆฌ๋๊ฑฐ๋, ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ์ ๊ทผ ๊ถํ๊ณผ Databricks ๊ถํ์ด ์ด์ค์ผ๋ก ๊ด๋ฆฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค. Unity Catalog๋ ์ด๋ฅผ Account ๋จ์์ ๋จ์ผ Metastore ๊ตฌ์กฐ๋ก ํตํฉํ์ฌ ๋ณด์๊ณผ ์ด์ ๋ณต์ก๋๋ฅผ ํฌ๊ฒ ์ค์์ต๋๋ค.
๋ํ Unity Catalog๋
์ด๋ผ๋ ์ ์์,
Databricks๋ฅผ ๋จ์ํ ๋ถ์ ๋๊ตฌ๊ฐ ์๋ ์ํฐํ๋ผ์ด์ฆ ๋ฐ์ดํฐ ํ๋ซํผ์ผ๋ก ํ์ฅ์ํค๋ ํต์ฌ ๊ตฌ์ฑ ์์๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ด ๊ธ์์๋ Unity Catalog์ ํต์ฌ ๊ฐ๋
๊ณผ ๊ตฌ์กฐ๋ฅผ ์ค์ฌ์ผ๋ก,
์ ํ์ํ์ง, ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ๋ฐฉ์๊ณผ ๋ฌด์์ด ๋ค๋ฅธ์ง ์ฐจ๊ทผ์ฐจ๊ทผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
UC๋ Metastore > Catalog > Schema > Table/Volume์ 4๋จ๊ณ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค. ํนํ ์ ์ฅ ์์น(Storage Location)๋ ์์ ๊ณ์ธต์์ ํ์ ๊ณ์ธต์ผ๋ก ์์๋๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
Workspace > Catalog Explorer > External Data > External Locations์์ ์ฐ๊ฒฐ๋ ์ ์ฅ์ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.MANAGED LOCATION์ ์ง์ ํ ์ ์์ต๋๋ค. LOCATION์ ์ง์ ํ๋ฉด ํด๋น ๊ฒฝ๋ก๊ฐ ํ์ Managed ๊ฐ์ฒด์ ๊ธฐ๋ณธ ๊ฒฝ๋ก๊ฐ ๋ฉ๋๋ค.LOCATION์ ์ง์ (External)ํ ์ ์์ต๋๋ค.UC์์ ๊ฐ์ฅ ์ค์ํ ์ฐจ์ด๋ ๋ฐ์ดํฐ์ ์์ ๊ถ(Lifecycle Management)์ ๋๋ค.
| ๊ตฌ๋ถ | Managed (๊ด๋ฆฌํ) | External (์ธ๋ถํ) |
|---|---|---|
| ์ ์ | UC๊ฐ ๋ฐ์ดํฐ์ ์์น์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋ชจ๋ ๊ด๋ฆฌ | ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ ์ ์ฅ ์์น๋ฅผ ์ง์ |
| ์ ์ฅ ์์น | Metastore/Catalog/Schema์ ์ค์ ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก | DDL ์์ฑ ์ ๋ช
์ํ LOCATION ๊ฒฝ๋ก |
| DROP ์ ๋์ | ๋ฉํ๋ฐ์ดํฐ + ๋ฌผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ชจ๋ ์ญ์ | ๋ฉํ๋ฐ์ดํฐ๋ง ์ญ์ (์ค์ ๋ฐ์ดํฐ ์ ์ง) |
| UNDROP ์ ๋์ | ๋ฉํ๋ฐ์ดํฐ + ๋ฌผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ชจ๋ ๋ณต๊ตฌ (7์ผ ์ด๋ด) | ๋ฉํ๋ฐ์ดํฐ ๋ณต๊ตฌ ๋ฐ ๊ธฐ์กด ๋ฐ์ดํฐ ์ฌ์ฐ๊ฒฐ |
| ์ฉ๋ | ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํฌ๋ก๋ | ๊ธฐ์กด ๋ฐ์ดํฐ์ ์ฐ๊ฒฐ ๋๋ ์ธ๋ถ ์์คํ ๊ณต์ ์ฉ |
์คํค๋ง๊ฐ External(Location ์ง์ )์ด๋ผ ํ๋๋ผ๋ ๊ทธ ์์ ๊ฐ์ฒด๊ฐ Managed์ธ ๊ฒฝ์ฐ, UC์ ๊ด๋ฆฌ ์์น์ด ์ฐ์ ์ ์ฉ๋ฉ๋๋ค.
| # | Schema ํ์ | Object | Object ํ์ | ๋ฌผ๋ฆฌ ์ ์ฅ ์์น (Path Logic) | DROP ์ ๋ฐ์ดํฐ ์ญ์ ์ฌ๋ถ |
|---|---|---|---|---|---|
| 1 | Managed | Table | Managed | s3://root/catalog/schema/table_name/ | ์ญ์ (O) |
| 2 | Managed | Table | External | gs://external/path/to/table/ | ์ ์ง (X) |
| 3 | Managed | Volume | Managed | s3://root/catalog/schema/volume_name/ | ์ญ์ (O) |
| 4 | Managed | Volume | External | gs://external/path/to/volume/ | ์ ์ง (X) |
| 5 | External | Table | Managed | Schema Location ๋๋ Managed Storage | ์ญ์ (O) |
| 6 | External | Table | External | ํ
์ด๋ธ DDL์ ์ง์ ํ LOCATION | ์ ์ง (X) |
| 7 | External | Volume | Managed | Schema Location ๋๋ Managed Storage | ์ญ์ (O) |
| 8 | External | Volume | External | ๋ณผ๋ฅจ DDL์ ์ง์ ํ LOCATION | ์ ์ง (X) |
๐ก ํต์ฌ ํฌ์ธํธ:
1. ํ ์ด๋ธ ์ ์ธ์ด Managed๋ผ๋ฉด, ํ์ ์ ์ฅ์๊ฐ ์ด๋๋DROP์ ๋ฐ์ดํฐ๋ ์ญ์ ๋ฉ๋๋ค.
2. External Schema ๋ด์ Managed Table์ ์คํค๋ง๊ฐ ๊ฐ์งLOCATION๊ฒฝ๋ก ์๋์ ์์ฑ๋๋๋ผ๋ 'Managed' ํน์ฑ์ ์ญ์ ๊ถํ์ด UC์ ์์ต๋๋ค.
์นดํ๋ก๊ทธ ์์ค์์ ๊ฒฉ๋ฆฌ๋ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ณ ์ถ์ ๋ MANAGED LOCATION์ ์ฌ์ฉํฉ๋๋ค.
-- 1. ๊ธฐ๋ณธํ ์นดํ๋ก๊ทธ (๋ฉํ์คํ ์ด ์ ์ฅ์ ์์)
CREATE CATALOG IF NOT EXISTS prod_catalog;
-- 2. ๊ด๋ฆฌํ ์์น๋ฅผ ์ง์ ํ ์นดํ๋ก๊ทธ (๋ถ๋ฆฌ๋ ๋ฒํท ์ฌ์ฉ)
CREATE CATALOG IF NOT EXISTS dev_catalog
MANAGED LOCATION 's3://my-dev-bucket/uc-managed/';
-- Managed Schema (์์ Catalog์ ๊ฒฝ๋ก ์์)
CREATE SCHEMA IF NOT EXISTS catalog.managed_schema;
-- External Schema (Managed ๊ฐ์ฒด๋ค์ด ์ ์ฅ๋ ํน์ ๊ฒฝ๋ก ์ง์ )
CREATE SCHEMA IF NOT EXISTS catalog.external_schema
MANAGED LOCATION 'gs://my-bucket/external-schema-path/';
LOCATION์ ์ง์ ํ์ง ์์ผ๋ฉด ์์ Schema/Catalog์ ๊ฒฝ๋ก ํ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ฉ๋๋ค.LOCATION์ ๋ช
์ํด์ผ ํ๋ฉฐ, External Location์ผ๋ก ๋ฑ๋ก๋ ๊ฒฝ๋ก๋ผ๋ฉด ์ด๋๋ ์ ์ฅ ๊ฐ๋ฅํฉ๋๋ค. (๋ฐ๋์ ์์ ์คํค๋ง ๊ฒฝ๋ก ์๋์ผ ํ์๋ ์์)-- Managed Table
CREATE TABLE catalog.schema.man_tbl (id INT, name STRING) USING DELTA;
-- External Table (External Location ๋ฑ๋ก ์ ํ ํ์)
CREATE TABLE catalog.schema.ext_tbl (id INT)
LOCATION 'gs://my-bucket/data/ext_tbl/';
-- Managed Volume (๋น์ ํ ๋ฐ์ดํฐ์ฉ)
CREATE VOLUME catalog.schema.man_vol;
-- External Volume (LOCATION ๋ช
์ ๋ฐ External Location ๋ฑ๋ก ํ์)
CREATE EXTERNAL VOLUME catalog.schema.ext_vol
LOCATION 'gs://my-bucket/files/ext_vol/';
| ๊ตฌ๋ถ | Tables | Volumes |
|---|---|---|
| ๋ฐ์ดํฐ ํํ | Tabular (ํ/์ด) | Files (๋ชจ๋ ํ์) |
| ์ฃผ์ ํฌ๋งท | Delta, Parquet, CSV ๋ฑ | ๋ก๊ทธ, ์ด๋ฏธ์ง, ํ์ ๋๋ ํ ๋ฆฌ ๋ฑ |
๐ก ๊ถ์ฅ ์ํฌ๋ก๋:
- ์ ํ ๋ฐ์ดํฐ ๋ฐ ๋ถ์์ฉ ์งํ ๋ฐ์ดํฐ๋ Table ์ถ์ฒ
- ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ํ์ผ, ๋ก๊ทธ ํ์ผ, ์๋ณธ(Raw) ํ์ผ ๊ด๋ฆฌ๋ Volume ์ถ์ฒ
External Location์ผ๋ก ๋ฑ๋ก๋์ด ์์ด์ผ ํฉ๋๋ค.DROP ์ ๋ฐ์ดํฐ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ญ์ ๋ฉ๋๋ค. ๋จ, 7์ผ ์ด๋ด๋ผ๋ฉด UNDROP ๋ช
๋ น์ด๋ก ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.DROP ์ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋๋ฏ๋ก ์ธ์ ๋ ์ฌ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ์ง๋ง, UNDROP์ ์ฌ์ฉํ๋ฉด ํ
์ด๋ธ ๊ถํ ๋ฑ ๋ฉํ๋ฐ์ดํฐ๊น์ง ํจ๊ป ๋ณต๊ตฌ๋ฉ๋๋ค.LOCATION์ ์ฃผ๋ฉด ๊ทธ ์๋์ Managed ๊ฐ์ฒด๋ค์ ๋ถ๋ชจ ์คํค๋ง์ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.dev, staging, prod ์นดํ๋ก๊ทธ๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ ๋ค๋ฅธ MANAGED LOCATION(S3 ๋ฒํท ๋ฑ)์ ์ง์ ํ์ฌ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒฉ๋ฆฌํ์ธ์..csv, .json ์๋ณธ ํ์ผ์ด๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ, ๋ก๊ทธ ๋ฑ ๋น์ ํ ํ์ผ์ Table์ด ์๋ Volume์ผ๋ก ๊ด๋ฆฌํ์ฌ ๋ณด์๊ณผ ์ถ์ ์ฑ์ ํ๋ณดํฉ๋๋ค.EXTERNAL LOCATION์ ์ง์ ์ฐธ์กฐํ๋ ๊ถํ์ ๋ฐ์ดํฐ ์์ง๋์ด ๋ฑ ๊ด๋ฆฌ์์๊ฒ๋ง ๋ถ์ฌํ๊ณ , ์ผ๋ฐ ๋ถ์๊ฐ๋ Managed Table์ ํตํด์๋ง ๋ฐ์ดํฐ์ ์ ๊ทผํ๋๋ก ์ค๊ณํ์ธ์.