ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

์ƒ˜ํ”Œ๋ง ์œ ํ˜• ์ถฉ๋Œ

๋ฒ„์ „ 2.6์—์„œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

MongoDB์˜ ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ ๋ชจ๋ธ์€ ์ฃผ์–ด์ง„ ํ•„๋“œ์— ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, relational database๋Š” ์—ด์„ ๋‹จ์ผ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. BI Connector๋Š” MongoDB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ˜ํ”Œ๋งํ•˜์—ฌ ๊ด€๊ณ„ํ˜• ์Šคํ‚ค๋งˆ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ, BI Connector๊ฐ€ MongoDB ๋ฌธ์„œ์˜ ํ•„๋“œ์—์„œ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ƒ˜ํ”Œ๋งํ•  ๋•Œ๋Š” ์œ ํ˜• ๋ณ€ํ™˜ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ˜• ๋ณ€ํ™˜ ์ถฉ๋Œ์—๋Š” ์Šค์นผ๋ผ ์œ ํ˜• ๊ฐ„์˜ ์ถฉ๋Œ๊ณผ ๋ฌธ์„œ ๋ฐ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๋ณตํ•ฉ ์œ ํ˜•๊ณผ ๊ด€๋ จ๋œ ์ถฉ๋Œ, ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

BI Connector๋Š” ์ƒ˜ํ”Œ๋ง๋œ ๋ฐ์ดํ„ฐ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ ์ค‘ ์œ ํ˜• ์ถฉ๋Œ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ํ•„๋“œ์—์„œ ์œ ํ˜• ์ถฉ๋Œ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์ถฉ๋Œํ•˜๋Š” ์œ ํ˜•์ด ์ƒ˜ํ”Œ์— ๋ชจ๋‘ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ƒ์„ฑ๋œ ์Šคํ‚ค๋งˆ๋Š” ์ด๋Ÿฌํ•œ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•„ ์ฟผ๋ฆฌ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--samplesize ๋ฐ --schemaRefreshIntervalSecs ์„ค์ •๊ณผ ๊ฐ™์€ ์ƒ˜ํ”Œ๋ง ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์Šคํ‚ค๋งˆ ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์Šค์นผ๋ผ-์Šค์นผ๋ผ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด BI Connector๋Š” ๋‹ค์Œ ๊ฒฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ์œ ํ˜• ์ค‘ ์ตœ์†Œ ์ƒํ•œ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

Scalar-scalar type lattice
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

์˜ˆ์‹œ

์ง€์ •๋œ ํ•„๋“œ์— int, double ๋ฐ string ์œ ํ˜•์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ตœ์†Œ ์ƒํ•œ์€ string ์ž…๋‹ˆ๋‹ค.

์Šค์นผ๋ผ-์Šค์นผ๋ผ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด BI Connector๋Š” information_schema.COLUMNS ํ…Œ์ด๋ธ”์— ํ–‰์„ ์‚ฝ์ž…ํ•˜๊ณ  COLUMN_COMMENT ์—ด์— ๋‹ค์–‘ํ•œ ์ƒ˜ํ”Œ๋ง๋œ ์œ ํ˜•์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

๋ณตํ•ฉ ์ถฉ๋Œ์€ ๋ฌธ์„œ ๋˜๋Š” ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ์œ ํ˜• ๋ณ€ํ™˜ ์ถฉ๋Œ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” BI Connector๊ฐ€ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ณตํ•ฉ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ์™€ ๊ด€๋ จ๋œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด BI Connector๋Š” ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ ์œ ํ˜•์˜ ํ•„๋“œ๋ฅผ ๋ณ„๋„์˜ ์—ด๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, conflict collection์—๋Š” ๋‹ค์Œ ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

{ _id: 0, a: "foo" } // "a" is scalar (string)
{ _id: 1, a: { a: "bar", b: "baz" } } // "a" is composite (document)

BI Connector๋Š” ์Šค์นผ๋ผ-๋ณตํ•ฉ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”: conflict

_id
a
aa
ab

0

"foo"

NULL

NULL

1

NULL

"bar"

"baz"

๋ฌธ์„œ์™€ ๊ด€๋ จ๋œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด BI Connector๋Š” information_schema.COLUMNS ํ…Œ์ด๋ธ”์— ํ–‰์„ ์‚ฝ์ž…ํ•˜๊ณ  COLUMN_COMMENT ์—ด์— ๋‹ค์–‘ํ•œ ์ƒ˜ํ”Œ๋ง๋œ ์œ ํ˜•์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด BI Connector๋Š” ์ถฉ๋Œ ํ•„๋“œ์— ์™ธ๋ž˜ ํ‚ค, ๋ฐฐ์—ด ์ธ๋ฑ์Šค ๋ฐ ๊ฐ’์— ๋Œ€ํ•œ ์—ด์ด ์žˆ๋Š” ์ƒˆ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. BI Connector๋Š” ๋ฐฐ์—ด์„ ์ƒˆ ํ…Œ์ด๋ธ”์˜ ์—ฌ๋Ÿฌ ํ–‰์œผ๋กœ ํ’€๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์—ด์„ ์ฑ„์›๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, conflict collection์—๋Š” ๋‹ค์Œ ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

{ _id: 0, a: "foo" } // "a" is scalar (string)
{ _id: 1, a: ["bar", "baz"] } // "a" is composite (array)

BI Connector๋Š” ์œ„์˜ ๋‚ด์šฉ์„ ๋‹ค์Œ ๋‘ ํ…Œ์ด๋ธ”๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”: conflict

_id

0

1

ํ…Œ์ด๋ธ”: conflict_a

_id
a_idx
a

0

NULL

"foo"

1

0

"bar"

1

1

"baz"

๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด BI Connector๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • information_schema.COLUMNS ํ…Œ์ด๋ธ”์— ํ–‰์„ ์‚ฝ์ž…ํ•˜๊ณ  COLUMN_COMMENT ์—ด์—์„œ ์ƒ˜ํ”Œ๋ง๋œ ๋‹ค์–‘ํ•œ ์œ ํ˜•์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐฐ์—ด์ด information_schema.COLUMNS ํ…Œ์ด๋ธ”์˜ ํ–‰์— ๋งคํ•‘๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ information_schema.TABLES ํ…Œ์ด๋ธ”์— ํ–‰์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.