์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ๋ฐฐํฌ
์ด ํ์ด์ง์ ๋ด์ฉ
์ด ํ์ด์ง์์๋ Azure Blob Storage ์ปจํ ์ด๋์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ธฐ ์ํด ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์ ์ ์กฐ๊ฑด
์์ํ๊ธฐ ์ ์ ๋ค์ ์ฌ์ ์๊ตฌ ์ฌํญ์ ์๋ฃํ์ธ์.
์์ง ๊ณ์ ์ด ์๋ ๊ฒฝ์ฐ MongoDB Atlas ๊ณ์ ์ ๋ง๋ญ๋๋ค.
Azure PowerShell ์ค์น ๋๋ Azure CLI . ์ด๋ฌํ ๋๊ตฌ์ ํ์ต ๋ณด๋ ค๋ฉด ์ฌ๋ฐ๋ฅธ Azure ๋ช ๋ น์ค ๋๊ตฌ ์ ํ์ ์ฐธ์กฐํ์ธ์.
Azure PowerShell ๊ตฌ์ฑ๋๋ Azure CLI.
์ ํ ์ฌํญ. Azure ์๋น์ค ์ฃผ์ฒด ์ก์ธ์ค๋ฅผ ์ค์ ํฉ๋๋ค.
์ ์ฐจ
Atlas CLI๋ฅผ ์ฌ์ฉํ์ฌ ์ Data Federation ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
atlas dataFederation create <name> [options]
๋ช ๋ น ๊ตฌ๋ฌธ ๋ฐ ๋งค๊ฐ๋ณ์์ Atlas CLI ํ์ต ๋ณด๋ ค๋ฉด dataFederation create Atlas ์ ๋ํ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Atlas Data Federation ์ด ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ํ๋ก์ธ์ค ํ cloud ์ ๊ณต์ ๋ฅผ ์ ํํฉ๋๋ค.
Amazon Web Services , Azure ๋๋ Google Cloud Platform ์ ์ ํํ ์ Amazon Web Services Azure์์ต๋๋ค.Google Cloud Platform ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ๊ฐ ์์ฑ๋๋ฉด Atlas Data Federation ์ด ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ cloud ์ ๊ณต์ ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
Azure Blob Storage container์ ๋ฐ์ดํฐ์ ๋ํด ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ํธ์คํ ํ๋ cloud ๊ณต๊ธ์์ ๋ค๋ฅธ cloud ๊ณต๊ธ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์ฆ, Azure ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
Azure Blob Storage ๋ฐ์ดํฐ ์ ์ฅ ๋ฅผ ์ง์ ํ๊ณ ๋ฐ์ดํฐ ์ ์ฅ ์ ๋งคํ๋๋ ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ๋ฐ ๊ฐ์ ์ปฌ๋ ์ ์ ๊ตฌ์ฑํฉ๋๋ค.
Data Sources ์น์ ์์ ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ํํฉ๋๋ค.
Add Data Sources ์ ํด๋ฆญํ์ฌ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ง์ ํฉ๋๋ค.
Azure Blob Storage ์ปจํ ์ด๋์ ๋ฐ์ดํฐ์ ๋ํ ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด Azure ๋ฅผ ์ ํํฉ๋๋ค.
stores.[n].provider
JSON ๊ตฌ์ฑ ์ค์ ์ ํด๋นํฉ๋๋ค.Atlas ์ ๋ํ Azure ์๋น์ค ์ฃผ์ฒด๋ฅผ ์ ํํฉ๋๋ค.
์๋น์ค ์ฃผ์ฒด ๋๋กญ๋ค์ด์์ Atlas ์ ์ธ์ฆ๋ ๊ธฐ์กด Azure ์๋น์ค ์ฃผ์ฒด๋ฅผ ์ ํํ๊ฑฐ๋ Authorize an Azure Service Principal ๋ฅผ ์ ํํ์ฌ ์ ์๋น์ค ์ฃผ์ฒด๋ฅผ ์ธ์ฆํ ์ ์์ต๋๋ค.
Atlas ์ ๊ถํ์ด ๋ถ์ฌ๋ ๊ธฐ์กด ์๋น์ค ์ฃผ์ฒด๋ฅผ ์ ํํ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ก ์งํํ์ธ์.
๊ธฐ์กด ์๋น์ค ์ฃผ์ฒด์ ๋ํด Atlas ๋ฅผ ์น์ธํ๊ฑฐ๋ ์ ์๋น์ค ์ฃผ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ก ์งํํ๊ธฐ ์ ์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ธ์.
์ ์๋น์ค ์ฃผ์ฒด ๋๋ ๊ธฐ์กด ์๋น์ค ์ฃผ์ฒด๋ฅผ ์น์ธํ๋ ค๋ฉด Authorize an Azure Service Principal ์ ์ ํํ๊ณ Continue ์ ํด๋ฆญํฉ๋๋ค.
Add Atlas to your Azure Service Principal ์น์ ์์ Azure ์๋น์ค ์ฃผ์ฒด AppId ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ๋๋ ์ Azure ์๋น์ค ์ฃผ์ฒด๋ฅผ ํตํด Atlas ์ ์ก์ธ์ค ์ ๋ถ์ฌํฉ๋๋ค.
Atlas UI์ PowerShell ๋๋ AzureCLI ํญ์ ์ค๋ช ๋ ๋จ๊ณ์ ๋ฐ๋ผ ์ ์๋น์ค ์ฃผ์ฒด๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด ์๋น์ค ์ฃผ์ฒด๋ฅผ ์์ ํฉ๋๋ค.
Atlas UI์ ๋จ๊ณ๋ฅผ ์๋ฃํ ํ ๊ฐ ํ๋์ ํ ๋ํธ ID ๋ฐ ์๋น์ค ์ฃผ์ฒด ID๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋ค์ ๋จ๊ณ๋ก ์งํํ๋ ค๋ฉด Validate and Finish ์ ํด๋ฆญํฉ๋๋ค.
Azure Blob Storage์ ์ก์ธ์ค ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
Configure Azure Blob Storage ํ์ด์ง์์ Azure Storage ๊ณ์ ์๊ฒฉ ์ฆ๋ช ์์ ๋ฐ ์คํ ๋ฆฌ์ง ์ปจํ ์ด๋ ์ก์ธ์ค ๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
Storage Account Credential Delegation ํ๋ ์ ์คํ ๋ฆฌ์ง ๊ณ์ ๋ฆฌ์์ค ID ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
ํ์ต ๋ด์ฉ ์ ์ ์ฅ ๊ณ์ ์ ๋ฆฌ์์ค ID ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
Azure PowerShell์ Storage Account Credential Delegation ๋จ๊ณ์์ ๋ช ๋ น์ ๋ณต์ฌํ๊ณ ์คํ ํ์ฌ ์๊ฒฉ ์ฆ๋ช ์์์ ์ค์ ํ๋ค ํฉ๋๋ค.
์คํ ๋ฆฌ์ง ์ปจํ ์ด๋๊ฐ Read only ๋๋ Read and write ์์ ์ ํ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค.
Atlas๋ Read-only ์ปจํ ์ด๋๋ง ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฟผ๋ฆฌํ๊ณ Azure Blob Storage ์ปจํ ์ด๋์ ์ ์ฅํ๋ ค๋ฉด Read and write ์(๋ฅผ) ์ ํํฉ๋๋ค.
Atlas Data Federation ์
$out
์(๋ฅผ) ์ฌ์ฉํ์ฌ Azure Blob Storage ์ปจํ ์ด๋ ์ ๋ํ ์ฐ๊ธฐ๋ฅผ ์ง์ ํ์ง ์์ต๋๋ค.์คํ ๋ฆฌ์ง ์ปจํ ์ด๋ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
Azure PowerShell์ Storage Container Access ๋จ๊ณ์ ํ์๋ ๋ช ๋ น์ ๋ณต์ฌํ๊ณ ์คํ ํ์ฌ Blob ์ปจํ ์ด๋ ์ก์ธ์ค ๋ฅผ ์ค์ ํ๋ค ํฉ๋๋ค.
Continue๋ฅผ ํด๋ฆญํฉ๋๋ค.
Azure Blob Storage ์ปจํ ์ด๋ ์์ ํ์ผ์ ๊ฒฝ๋ก ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ Next ์(๋ฅผ) ํด๋ฆญํฉ๋๋ค.
Azure Blob Storage ์ปจํ ์ด๋ ์ ์ ์ฅ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://<storage-account>.blob.core.windows.net/<container>/<file-name> Azure Blob Storage ์ปจํ ์ด๋ ์ ๋ฐ์ดํฐ์ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด Add Data Source ๋ฅผ ํด๋ฆญํ๊ณ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค. ๊ฒฝ๋ก์ ํ์ต ๋ณด๋ ค๋ฉด S3 ๋ฐ์ดํฐ์ ๊ฒฝ๋ก ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
databases.[n].collections.[n].dataSources.[n].path
JSON ๊ตฌ์ฑ ์ค์ ์ ํด๋นํฉ๋๋ค.์ ํ ์ฌํญ. Data Federation ์ด Azure Blob Storage ์ปจํ ์ด๋ ์ ํ์ผ์ ๊ฒ์ํ ๋ ์ฌ์ฉํด์ผ ํ๋ ํํฐ์ ํ๋์ ํ๋ ๊ฐ ์ ํ์ ์ง์ ํฉ๋๋ค.
์๋ตํ๋ฉด Data Federation ์ Azure Blob Storage ์ปจํ ์ด๋ ์ ๋ฃจํธ์์ ๋ชจ๋ ํ์ผ์ ๋ํด ์ฌ๊ท ๊ฒ์ ์ ์ํํฉ๋๋ค. ํน์ ํ๋ ๊ฐ ์ ํ์ ์ ํํ์ง ์์ผ๋ฉด Data Federation ์ ๋ชจ๋ ์ฟผ๋ฆฌ์์ ํด๋น ๊ฒฝ๋ก์ ์๋ ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
stores.[n].prefix
๋ฐdatabases.[n].collections.[n].dataSources.[n].path
JSON ๊ตฌ์ฑ ์ค์ ์ ํด๋นํฉ๋๋ค.
๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ปฌ๋ ์ ๋ฐ ๋ทฐ๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ปฌ๋ ์ ๋ฐ ๋ทฐ๋ฅผ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋งคํํฉ๋๋ค.
(์ ํ ์ฌํญ) ๋ค์์ ํด๋ฆญํฉ๋๋ค. ์ ๊ฒฝ์ฐ:
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํด๋ฆญํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ ํธ์งํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
VirtualDatabase[n]
์ ๋๋ค.databases.[n].name
JSON ๊ตฌ์ฑ ์ค์ ์ ํด๋นํฉ๋๋ค.์ปฌ๋ ์ ์ ํด๋ฆญํ์ฌ ์ปฌ๋ ์ ์ด๋ฆ์ ํธ์งํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
VirtualCollection[n]
์ ๋๋ค.databases.[n].collections.[n].name
JSON ๊ตฌ์ฑ ์ค์ ์ ํด๋นํฉ๋๋ค.๋ณด๊ธฐ ์ด๋ฆ์ ํธ์งํ๋ ค๋ฉด ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ค์์ ํด๋ฆญํ ์ ์์ต๋๋ค.
Add Database ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์ปฌ๋ ์ ์ ์ถ๊ฐํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์ ์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
์(๋ฅผ) ํด๋ฆญํ์ฌ ์ปฌ๋ ์ ์ ๋ํ ๋ทฐ ๋ฅผ ์ถ๊ฐ ์ปฌ๋ ์ . ๋ทฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์์ ์ง์ ํด์ผ ํฉ๋๋ค.
๋ทฐ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
๋ทฐ์ ์ ์ฉํ ํ์ดํ๋ผ์ธ ์ ๋๋ค.
๋ทฐ ์ ์ ํ์ดํ๋ผ์ธ์
$out
๋๋$merge
๋จ๊ณ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ๋ทฐ ์ ์์$lookup
๋๋$facet
์ ๊ฐ์ ์ค์ฒฉ๋ ํ์ดํ๋ผ์ธ ๋จ๊ณ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ์ด ์ ํ์ ํด๋น ์ค์ฒฉ๋ ํ์ดํ๋ผ์ธ์๋ ์ ์ฉ๋ฉ๋๋ค.
๋ทฐ์ ํ์ต ๋ณด๋ ค๋ฉด ๋ค์์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ปฌ๋ ์ ๋๋ ๋ทฐ์ ์ฐ๊ฒฐ๋ ํญ๋ชฉ์ ์ ๊ฑฐํฉ๋๋ค.
Data Sources ์น์ ์ ๋๋กญ๋ค์ด์์ Azure Blob Storage ๋ฅผ ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๋๋๊ทธ ์ค ๋๋กญํ์ฌ ์ปฌ๋ ์ ๊ณผ ๋งคํํฉ๋๋ค.
databases.[n].collections.[n].dataSources
JSON ๊ตฌ์ฑ ์ค์ ์ ํด๋นํฉ๋๋ค.
Azure Blob Storage ๋ฐ์ดํฐ ์ ์ฅ ์ ๋ํ ๊ตฌ์ฑ์ ๋ค์๊ณผ ์ ์ฌํด์ผ ํฉ๋๋ค.
{ "stores" : [ { "name" : "<string>", "provider": "<string>", "region" : "<string>", "serviceURL" : "<string>", "containerName" : "<string>", "delimiter" : "<string>", "prefix": "<string>", "public": <boolean> } ], "databases" : [ { "name" : "<string>", "collections" : [ { "name" : "<string>", "dataSources" : [ { "storeName" : "<string>", "path" : "<string>", "defaultFormat" : "<string>", "provenanceFieldName": "<string>", "omitAttributes": <boolean> } ] } ], "maxWildcardCollections" : <integer>, "views" : [ { "name" : "<string>", "source" : "<string>", "pipeline" : "<string>" } ] } ] }
๊ตฌ์ฑ ์ค์ ์ ๋ํ ์์ธํ ๋ด์ฉ ์ ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค์ ๋ํ ๋ฐ์ดํฐ ์ ์ฅ์ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Azure Blob Storage ๋ฐ์ดํฐ ์ ์ฅ ๋ฅผ ์ ์ํฉ๋๋ค.
stores
์ ๋ํ UI ์ ํ์๋ JSON ๊ตฌ์ฑ ์ค์ ์ ํธ์งํฉ๋๋ค.stores
๊ตฌ์ฑ ์ค์ ์ ๋ค์๊ณผ ์ ์ฌํด์ผ ํฉ๋๋ค."stores" : [ { "name" : "<string>", "provider" : "<string>", "region" : "<string>", "serviceURL" : "<string>", "containerName" : "<string>", "delimiter": "<string", "prefix" : "<string>", "public": <boolean> } ] ์ด๋ฌํ ๊ตฌ์ฑ ์ค์ ์ ํ์ต ๋ณด๋ ค๋ฉด
stores
๋ฅผ ์ฐธ์กฐํ์ธ์.์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ปฌ๋ ์ ๋ฐ ๋ทฐ๋ฅผ ์ ์ํฉ๋๋ค.
databases
์ ๋ํ UI ์ ํ์๋ JSON ๊ตฌ์ฑ ์ค์ ์ ํธ์งํฉ๋๋ค.databases
๊ตฌ์ฑ ์ค์ ์ ๋ค์๊ณผ ์ ์ฌํด์ผ ํฉ๋๋ค."databases" : [ { "name" : "<string>", "collections" : [ { "name" : "<string>", "dataSources" : [ { "storeName" : "<string>", "defaultFormat" : "<string>", "path" : "<string>", "provenanceFieldName": "<string>", "omitAttributes": <boolean> } ] } ], "maxWildcardCollections" : <integer>, "views" : [ { "name" : "<string>", "source" : "<string>", "pipeline" : "<string>" } ] } ] ์ด๋ฌํ ๊ตฌ์ฑ ์ค์ ์ ํ์ต ๋ณด๋ ค๋ฉด
databases
๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ ์ฌํญ: ์์ ์๊ฐ์ ํธ์ง๊ธฐ ๋๋ JSON ํธ์ง๊ธฐ ํญ ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ์ถ๊ฐ Azure Blob Storage ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ ์ํฉ๋๋ค.
์ฐํฉ ์ฟผ๋ฆฌ์ ๋ํ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์์ ์ฐธ์กฐํ์ธ์.
์ฐธ๊ณ
๋ค์ํ cloud ๊ณต๊ธ์ ๊ฐ์ ์ฐํฉ ์ฟผ๋ฆฌ๋ฅผ ์คํ ํ๊ธฐ ์ํ Amazon Web Services ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.