๋ฌธ์„œ ๋ฉ”๋‰ด
๋ฌธ์„œ ํ™ˆ
/
MongoDB ์•„ํ‹€๋ผ์Šค
/ /

Atlas ํด๋Ÿฌ์Šคํ„ฐ

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • Atlas ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๊ตฌ์„ฑ ์˜ˆ์‹œ
  • ๊ตฌ์„ฑ ํ˜•์‹
  • stores
  • databases

Atlas Data Federation์€ Atlas cluster๋ฅผ ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์—์„œ Atlas cluster์— ๋Œ€ํ•œ ๋งคํ•‘์„ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์˜ ์ •๋ณด๋Š” MongoDB์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, Atlas Data Federation์˜ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์šด์˜ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ตฌ์„ฑ์—์„œ PII ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ

metrics.hardware ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” myDataCenter ์ด)๋ผ๋Š” ์ด๋ฆ„์˜ M10 ์ด์ƒ์˜ Atlas cluster๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. metrics.hardware ์ปฌ๋ ‰์…˜์—๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด์—์„œ ํŒŒ์ƒ๋œ ์ง€ํ‘œ๊ฐ€ ์žˆ๋Š” JSON ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ตฌ์„ฑ:

  • ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ์˜ myDataCenter (์ด)๋ผ๋Š” Atlas cluster๋ฅผ ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • Atlas ํด๋Ÿฌ์Šคํ„ฐ์˜ metrics.hardware ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ๋ฅผ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์˜ dataCenter.inventory ์ปฌ๋ ‰์…˜์œผ๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

{
"stores" : [
{
"name" : "atlasClusterStore",
"provider" : "atlas",
"clusterName" : "myDataCenter",
"projectId" : "5e2211c17a3e5a48f5497de3"
}
],
"databases" : [
{
"name" : "dataCenter",
"collections" : [
{
"name" : "inventory",
"dataSources" : [
{
"storeName" : "atlasClusterStore",
"database" : "metrics",
"collection" : "hardware"
}
]
}
]
}
]
}

Atlas Data Federation์€ metrics.hardware collection์˜ ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์˜ dataCenter.inventory collection์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋œ ์‚ฌ์šฉ์ž๋Š” MongoDB ์ฟผ๋ฆฌ ์–ธ์–ด ๋ฐ ์ง€์›๋˜๋Š” ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ dataCenter.inventory ์ปฌ๋ ‰์…˜์„ ํ†ตํ•ด Atlas cluster์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ๋จผ์ € Atlas Data Federation์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Atlas cluster์—์„œ๋Š” ์ง€์›๋˜์ง€๋งŒ Atlas Data Federation์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š๋Š” ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. Data Federation์—์„œ ์ง€์›๋˜๋Š” ๋ช…๋ น๊ณผ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ง€์›๋˜๋Š” MongoDB ๋ช…๋ น์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ์˜ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1{
2 "stores" : [
3 {
4 "name" : "<string>",
5 "provider": "<string>",
6 "clusterName": "<string>",
7 "projectId": "<string>",
8 "readPreference": {
9 "mode": "<string>",
10 "tagSets": [
11 [{"name": "<string>", "value": "<string>"},...],
12 ...
13 ],
14 "maxStalenessSeconds": <int>
15 }
16 }
17 ],
18 "databases" : [
19 {
20 "name" : "<string>",
21 "collections" : [
22 {
23 "name" : "<string>",
24 "dataSources" : [
25 {
26 "storeName" : "<string>",
27 "database" : "<string>",
28 "databaseRegex": "<string>",
29 "collection" : "<string>",
30 "collectionRegex" : "<string>",
31 "provenanceFieldName": "<string>"
32 }
33 ]
34 }
35 ],
36 "views" : [
37 {
38 "name" : "<string>",
39 "source" : "<string>",
40 "pipeline" : "<string>"
41 }
42 ]
43 }
44 ]
45}
stores
stores ๊ฐ์ฒด๋Š” ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐ๋œ ๊ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ๋Š” Atlas cluster์˜ ๋ฌธ์„œ์— ํŒŒ์ผ์„ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋Š” stores ๊ฐ์ฒด์— ์ •์˜๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
databases
databases ๊ฐ์ฒด๋Š” stores์— ์ •์˜๋œ ๊ฐ ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ MongoDB ์ปฌ๋ ‰์…˜ ๊ฐ„์˜ ๋งคํ•‘์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
1"stores" : [
2 {
3 "name" : "<string>",
4 "provider" : "<string>",
5 "clusterName" : "<string>",
6 "projectId": "<string>"
7 "readPreference": {
8 "mode": "<string>",
9 "tagSets": [
10 [{"name": "<string>", "value": "<string>"},...],
11 ...
12 ],
13 "maxStalenessSeconds": <int>
14 },
15 "readConcern": {
16 "level": "<string>"
17 }
18 }
19]
stores

๊ฐ ๊ฐ์ฒด๊ฐ€ ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐํ•  ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ๋Š” S3 ๋ฒ„ํ‚ท์˜ ํŒŒ์ผ, Atlas ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฌธ์„œ ๋˜๋Š” ๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” URL์— ์ €์žฅ๋œ ํŒŒ์ผ์„ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค. Atlas Data Federation์€ stores ๊ฐ์ฒด์— ์ •์˜๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

stores.[n].name

์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. databases.[n].collections.[n].dataSources.[n].storeName ํ•„๋“œ๋Š” ๋งคํ•‘ ๊ตฌ์„ฑ์˜ ์ผ๋ถ€๋กœ ์ด ๊ฐ’์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

stores.[n].provider

๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ„์น˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Atlas ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๊ฐ’์€ atlas ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

stores.[n].clusterName

์Šคํ† ์–ด์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” Atlas cluster์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. cluster๋Š” ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜์˜ source ํ•„๋“œ๋Š” Atlas cluster์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

stores.[n].projectId

์Šคํ† ์–ด์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” Atlas cluster๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.

stores.[n].readPreference

์„ ํƒ ์‚ฌํ•ญ. ํด๋Ÿฌ์Šคํ„ฐ ์ฝ๊ธฐ ์„ค์ • - ์ฝ๊ธฐ ์š”์ฒญ์„ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

๋‹ค์Œ readPreference ์„ค์ •์€ secondary ๋ชจ๋“œ ๋ฐ ANALYTICS nodeType์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

{
...
"stores": [
{
"provider": "atlas",
"clusterName": <CLUSTER_NAME>,
"name": <STORE_NAME>,
"projectId": <PROJECT_ID>,
"readPreference": {
"mode": "secondary",
"tagSets": [
[
{
"name": "nodeType",
"value": "ANALYTICS"
}
],
...
]
}
}
]
}
stores.[n].readPreference.mode

์„ ํƒ ์‚ฌํ•ญ. ์ฝ๊ธฐ ์š”์ฒญ์„ ๋ผ์šฐํŒ…ํ•  ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋ฅผ ์ง€์ •ํ•˜๋Š” ์ฝ๊ธฐ ์„ค์ • ๋ชจ๋“œ ์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • primary - ๋ชจ๋“  ์ฝ๊ธฐ ์š”์ฒญ์„ ๋ณต์ œ๋ณธ ์„ธํŠธ ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

  • primaryPreferred - primary ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ชจ๋“  ์ฝ๊ธฐ ์š”์ฒญ์„ ๋ณต์ œ๋ณธ ์„ธํŠธ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฐ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

  • secondary - ๋ชจ๋“  ์ฝ๊ธฐ ์š”์ฒญ์„ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

  • secondaryPreferred - secondary ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ชจ๋“  ์ฝ๊ธฐ ์š”์ฒญ์„ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„์™€ ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

  • nearest - ๋ฉค๋ฒ„๊ฐ€ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„์ธ์ง€ ์„ธ์ปจ๋”๋ฆฌ๋ฉค๋ฒ„์ธ์ง€์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ์ฝ๊ธฐ ์š”์ฒญ์„ ์ž„์˜์˜ ์ ๊ฒฉ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ local์ž…๋‹ˆ๋‹ค.

stores.[n].readPreference.tagSets

์„ ํƒ ์‚ฌํ•ญ. ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ์ด๋ฆ„ ๋ฐ ๊ฐ’ ์Œ์ด ํฌํ•จ๋œ ํƒœ๊ทธ ์„ธํŠธ ๋˜๋Š” ํƒœ๊ทธ ์‚ฌ์–‘ ๋ฌธ์„œ์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ์ง€์ •๋œ ๊ฒฝ์šฐ Atlas Data Federation์€ ์ง€์ •๋œ ํƒœ๊ทธ์™€ ์—ฐ๊ฒฐ๋œ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋กœ ์ฝ๊ธฐ ์š”์ฒญ์„ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ธฐ๋ณธ ์„ค์ • ํƒœ๊ทธ ์„ธํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

Atlas Data Federation์€ cluster์— ๋Œ€ํ•ด tagSets ์„(๋ฅผ) ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

stores.[n].readPreference.maxStalenessSeconds

์„ ํƒ ์‚ฌํ•ญ. ์„ธ์ปจ๋”๋ฆฌ์—์„œ ์ฝ๊ธฐ์— ๋Œ€ํ•œ ์ตœ๋Œ€ ๋ณต์ œ ์ง€์—ฐ ๋˜๋Š” '๋น„ํ™œ์„ฑ ์ƒํƒœ'์ž…๋‹ˆ๋‹ค. maxStalenessSeconds ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ฝ๊ธฐ ์„ค์ • maxStalenessSeconds๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

stores.[n].readConcern

์„ ํƒ ์‚ฌํ•ญ. Atlas cluster์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ๋ฐ ๊ฒฉ๋ฆฌ ์†์„ฑ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ๊ธฐ ๊ณ ๋ ค ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ผ๊ด€์„ฑ ๋ฐ ๊ฐ€์šฉ์„ฑ ์ˆ˜์ค€ ๊ฐ’์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1"databases" : [
2 {
3 "name" : "<string>",
4 "collections" : [
5 {
6 "name" : "<string>",
7 "dataSources" : [
8 {
9 "storeName" : "<string>",
10 "database" : "<string>",
11 "databaseRegex": "<string>",
12 "collection" : "<string>",
13 "collectionRegex" : "<string>",
14 "provenanceFieldName": "<string>"
15 }
16 ]
17 }
18 ]
19 }
20]
databases

๊ฐ ๊ฐ์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๊ฐ์ฒด์˜ ์ปฌ๋ ‰์…˜, ๊ทธ๋ฆฌ๊ณ  ์„ ํƒ์ ์œผ๋กœ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณด๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ collections ๋ฐ views ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

databases.[n].name

Atlas Data Federation์ด ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์— * ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:

  • ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ•จ๊ป˜ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Atlas Data Federation์€ ์ €์žฅ์†Œ ๊ตฌ์„ฑ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ถฉ๋Œํ•˜๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ผ Atlas cluster์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Atlas Data Federation์€ ์—ฌ๋Ÿฌ Atlas ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

databases.[n].collections

๊ฐ ๊ฐ์ฒด๊ฐ€ stores ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ์— ๋งคํ•‘๋˜๋Š” ์ปฌ๋ ‰์…˜ ๋ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์—์„œ ์™€์ผ๋“œ์นด๋“œ(*) ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋งŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

databases.[n].collections.[n].name

๊ฐ databases.[n].collections.[n].dataSources.[n].storeName์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ Atlas Data Federation์ด ๋งคํ•‘ํ•˜๋Š” ์ปฌ๋ ‰์…˜์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ๊ฐ ๊ฐ์ฒด๋Š” ์ปฌ๋ ‰์…˜๊ณผ stores ๋ฐฐ์—ด์˜ ๊ฐ์ฒด ๊ฐ„์˜ ๋งคํ•‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ปฌ๋ ‰์…˜ ์ด๋ฆ„์— * ๋ฅผ ์ง€์ •ํ•˜๊ณ  collection ํ•„๋“œ๋ฅผ ์ƒ๋žตํ•˜์—ฌ ์ปฌ๋ ‰์…˜ ์ด๋ฆ„์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์™€์ผ๋“œ์นด๋“œ(*) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์™€์ผ๋“œ์นด๋“œ(*) ์ปฌ๋ ‰์…˜์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋ ค๋ฉด databases.[n].collections.[n].dataSources.[n].storeName ์˜ต์…˜์„ ์ง€์ •ํ•˜๊ณ  databases.[n].collections.[n].dataSources.[n].database ์˜ต์…˜์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์—์„œ ์™€์ผ๋“œ์นด๋“œ(*) ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋งŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™€์ผ๋“œ์นด๋“œ(*) ์ปฌ๋ ‰์…˜์˜ ๊ฒฝ์šฐ databases.[n].collections.[n].dataSources.[n].collectionRegex ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๊ทœ์‹ ํŒจํ„ด์„ ์ •์˜ํ•˜์—ฌ ์ปฌ๋ ‰์…˜๋งŒ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

databases.[n].collections.[n].dataSources

๊ฐ ๊ฐ์ฒด๊ฐ€ ์ปฌ๋ ‰์…˜๊ณผ ๋งคํ•‘ํ•  stores ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

databases.[n].collections.[n].dataSources.[n].storeName

<collection>์— ๋งคํ•‘ํ•  ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. stores ๋ฐฐ์—ด์— ์žˆ๋Š” ๊ฐ์ฒด์˜ name๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

databases.[n].collections.[n].dataSources.[n].database

collection์ด ํฌํ•จ๋œ Atlas cluster์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ด ์„ค์ •์„ ์ƒ๋žตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์™€์ผ๋“œ์นด๋“œ(*) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์™€์ผ๋“œ์นด๋“œ(*) collection์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

databases.[n].collections.[n].dataSources.[n].databaseRegex

์„ ํƒ ์‚ฌํ•ญ. ์—ฌ๋Ÿฌ collection์„ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋กœ๋น™ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ •๊ทœ์‹ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ธ์Šคํ„ด์Šค์—๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ collection์ด ์žˆ๋Š” ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. lobbbing ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

๋ฐ ๋ผ๋Š” 2๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๊ณ  foo bar ๊ฐ๊ฐ collection ๋ผ๋Š” ์ปฌ๋ ‰์…˜์ด Sales ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์˜ databaseRegex ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ foo ๋ฐ bar ์˜ Sales ์ปฌ๋ ‰์…˜์„ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
"databases": [
{
"name": "Transactions",
"collections": [
{
"name": "AllSales",
"dataSources": [
{
"storeName": "atlasStore",
"databaseRegex": ".*",
"collection": "Sales"
}
]
}
]
}
]
}

์•ž์˜ databases ๊ฐ์ฒด์— ๋Œ€ํ•ด Atlas Data Federation์€ ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์—์„œ ๋‹ค์Œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • Transactions ์ด๋ผ๋Š” ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

  • databaseRegex ์˜ต์…˜์— ์ง€์ •๋œ ์ •๊ทœ์‹ ํŒจํ„ด๊ณผ ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” Sales collection์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” AllSales ๊ฐ€์ƒ collection์ž…๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ collection์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ์นด๋“œ collection์—๋Š” ์ด ์˜ต์…˜์„ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

databases.[n].collections.[n].dataSources.[n].collection

์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” Atlas cluster ๋‚ด์˜ collection์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์— ๋Œ€ํ•ด์„œ๋Š” ์ด ์„ค์ •์„ ์ƒ๋žตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์™€์ผ๋“œ์นด๋“œ(*) collection์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ์ •๊ทœ์‹ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ์™€์ผ๋“œ์นด๋“œ ์ปฌ๋ ‰์…˜ ์ด๋ฆ„ ๋งŒ๋“ค๊ธฐ.

  • ์ •๊ทœ์‹ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฌ๋Ÿฌ collection์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

databases.[n].collections.[n].dataSources.[n].collectionRegex

์กฐ๊ฑด๋ถ€: ์™€์ผ๋“œ์นด๋“œ collection์˜ ๊ฒฝ์šฐ ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ collection์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์™€์ผ๋“œ์นด๋“œ(*) collection์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—ฌ๋Ÿฌ collection์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ •๊ทœ์‹ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

์™€์ผ๋“œ์นด๋“œ(``*``) collection ์ด๋ฆ„์— ์ •๊ทœ์‹ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์™€์ผ๋“œ์นด๋“œ collection์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ธ์Šคํ„ด์Šค์—๋Š” ์ง€์ •๋œ ์ •๊ทœ ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•˜๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ collection๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์˜ ์ €์žฅ์†Œ ๊ตฌ์„ฑ์˜ collection์€ Atlas cluster์˜ ์›๋ž˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์—ฌ๋Ÿฌ collection์„ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ทœ์‹ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์„ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์ด ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ธ์Šคํ„ด์Šค์˜ ์ปฌ๋ ‰์…˜์—๋Š” ์ง€์ •๋œ ์ •๊ทœ ํ‘œํ˜„์‹๊ณผ ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  Atlas ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ ๊ตฌ์„ฑ์˜ ์ปฌ๋ ‰์…˜์€ databases.[n].collections.[n].name ์˜ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ •๊ทœ์‹ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

databases.[n].collections.[n].dataSources.[n].provenanceFieldName

๊ฒฐ๊ณผ์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ์ถœ์ฒ˜๋ฅผ ํฌํ•จํ•˜๋Š” ํ•„๋“œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์—์„œ ์ด ์„ค์ •์„ ์ง€์ •ํ•˜๋ฉด Atlas Data Federation์€ ๊ฒฐ๊ณผ์˜ ๊ฐ ๋ฌธ์„œ์— ๋Œ€ํ•ด ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ ์ด๋ฆ„
์„ค๋ช…
provider
์—ฐํ•ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ €์žฅ์†Œ ๊ตฌ์„ฑ์˜ ์ œ๊ณต์ž(stores.[n].provider)
clusterName
Atlas ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ด๋ฆ„(stores.[n].clusterName)
databaseName
Atlas cluster์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„(databases.[n].collections.[n].dataSources.[n].database)
collectionName
์ปฌ๋ ‰์…˜์˜ ์ด๋ฆ„(databases.[n].collections.[n].name)

Atlas UI์˜ ๋น„์ฃผ์–ผ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์„ค์ •์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

databases.[n].views

๊ฐ ๊ฐ์ฒด๊ฐ€ ์ปฌ๋ ‰์…˜์˜ ์ง‘๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๋ณด๊ธฐ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

databases.[n].views.[n].name

๋ทฐ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

databases.[n].views.[n].source

๋ทฐ์— ๋Œ€ํ•œ ์†Œ์Šค ์ปฌ๋ ‰์…˜์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. $sql ๋‹จ๊ณ„๋กœ ๋ทฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด SQL ๋ฌธ์ด ์†Œ์Šค ์ปฌ๋ ‰์…˜์„ ์ง€์ •ํ•˜๋ฏ€๋กœ ์ด ํ•„๋“œ๋ฅผ ์ƒ๋žตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

databases.[n].views.[n].pipeline

์ปฌ๋ ‰์…˜์— ์ ์šฉํ• ์ง‘๊ณ„ source ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„ $sql ์ž…๋‹ˆ๋‹ค. ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ทฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ์•„๊ฐ€๊ธฐ

๋ฐฐํฌ