mongodrdl
์ด ํ์ด์ง์ ๋ด์ฉ
์ค๋ช
์ฐธ๊ณ
BI์ฉ MongoDB Connector ๋ฐ ๊ด๋ จ ์ ํธ๋ฆฌํฐ๋ํ์ฌ ์ง์๋๋ ๋ชจ๋ MongoDB ์๋ฒ ๋ฒ์ ๊ณผ ํธํ๋ฉ๋๋ค.
mongodrdl
BI์ฉ MongoDB Connector๋ฅผ ์ํ ๊ด๊ณํ ์คํค๋ง ๊ด๋ฆฌ ๋๊ตฌ์
๋๋ค. mongodrdl
๋ฐ์ด๋๋ฆฌ๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
Produce a schema
์(๋) ํ๋ ์ด์์ MongoDB ์ปฌ๋ ์ ์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋กmongosqld
์์์ฌ์ฉํ๋.drdl
ํ์ผ์ ๊ธฐ๋กํฉ๋๋ค.Upload
.drdl
ํ์ผ์ ์คํค๋ง๋ฅผ BI Connector๊ฐ ์ฝ๊ณ ์๋ MongoDB ๋ฐฐํฌ์ ์ถ๊ฐํฉ๋๋ค.Download
MongoDB ๋ฐฐํฌ์ ์ ์ฅ๋ ์คํค๋ง.Delete
MongoDB ๋ฐฐํฌ์ ์ ์ฅ๋ ์คํค๋ง.Name
MongoDB ๋ฐฐํฌ์ ์ ์ฅ๋ ์คํค๋ง๋ฅผ ํตํด ๋์ฑ ์ฝ๊ฒ ๊ด๋ฆฌ.
.drdl
ํ์ผ์ ์๋์ผ๋ก ํธ์งํ์ฌ BI Connector์ ์คํค๋ง๋ฅผ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค. 1}.drdl
ํ์ ๋ฐ .drdl
ํ์ผ ์๋ ํธ์ง์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด DRDL ํ์ผ์์ ์คํค๋ง ๋ก๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ชจ๋ BI Connector ์คํค๋ง ๊ด๋ฆฌ ์ต์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ๊ด๊ณํ ์คํค๋ง๋ฅผ MongoDB์ ๋งคํ์ ์ฐธ์กฐํ์ธ์.
์ค์
DRDL ํ์ผ์ ๋ณ๊ฒฝํ ๋ด์ฉ์ ์ ์ฉํ๋ ค๋ฉด mongosqld
๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
๊ตฌ๋ฌธ
mongodrdl
๋ค์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค:
mongodrdl [<command>] [<options...>]
๊ธฐ๋ณธ ์ต์ TLS ๋ฒ์
๋ฒ์ 2.6์ ์๋ก ์ถ๊ฐ๋จ
๊ธฐ๋ณธ ์ต์ TLS ๋ฒ์ ์ 1 ์
๋๋ค. { mongodrdl
์์ MongoDB๋ก ๋๊ฐ๋ ์ฐ๊ฒฐ์ ๊ฒฝ์ฐ 1 ์
๋๋ค.
--minimumTLSVersion
์ต์
์ผ๋ก ์ด ์ค์ ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
๋ช ๋ น.
๋ฒ์ 2.11์ ์๋ก ์ถ๊ฐ๋จ.
mongodrdl
์ ๋์์ ๋ค์ ๋ช
๋ น ์ค ํ๋์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๋ช
๋ น์ ์ง์ ํ์ง ์์ผ๋ฉด mongodrdl
์ด ์ง์ ๋ ๋ค์์คํ์ด์ค๋ฅผ ์ํ๋งํฉ๋๋ค.
sample
--db
, ์ ํ์ --collection
๋ฐ ๊ธฐํ ๋ช ๋ น์ค ์ต์ ์ผ๋ก ์ง์ ๋ ๋ค์์คํ์ด์ค๋ฅผ ์ํ๋งํ์ฌ .drdl ํ์ผ์ ์ถ๋ ฅํฉ๋๋ค.sample
๋ช ๋ น์ ๋ฒ์ 2.11 ์ด์ ์ ๋ชจ๋mongodrdl
๋์์ ์บก์ํํฉ๋๋ค.mongodrdl sample --db <db-name> --collection <collection-name> --out <filename>.drdl
list-schema-ids
์ ์ฅ๋ ๊ฐ ์คํค๋ง์ ObjectId์ ์์ฑ๋ ๋ ์ง์ ๋ฌธ์์ด ํํ์ ๋์ดํฉ๋๋ค.
list-schema-ids
๋ค์ ์ต์ ์ด ํ์ํฉ๋๋ค:์ด๋ฆ์ค๋ชํ์ ์ฌํญ. ์คํค๋ง ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.์๋ฅผ ๋ค์ด ๋ค์ ๋ช ๋ น์
schemas
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง ID๋ฅผ ๋์ดํฉ๋๋ค:mongodrdl list-schema-ids --schemaSource schemas ์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
5d72ad695c23a9e3e26e3c85 2019-09-06T15:03:05.556Z 5d72adea5c23a9e44882a1ad 2019-09-06T15:05:14.349Z
list-schema-names
์ด๋ฆ์ด ์๋ ๊ฐ ์ ์ฅ๋ ์คํค๋ง์ ๋ํ ObjectId์ ์ด๋ฆ๊ณผ ๋ฌธ์์ด ํํ์ ๋์ดํฉ๋๋ค.
์ ์ฅ๋ ์คํค๋ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฆ์ด ์ง์ ๋์ง ์์ต๋๋ค.
download
๋ฐdelete
๋ช ๋ น๊ณผ ํจ๊ป--name
์ต์ ์ ์ฌ์ฉํ์ฌ ๋ช ๋ช ๋ ์คํค๋ง๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.name-schema
๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์คํค๋ง์ ์ด๋ฆ์ ์ง์ ํ๊ฑฐ๋ ์ด๋ฆ์ ๋ณ๊ฒฝํฉ๋๋ค.list-schema-names
๋ค์ ์ต์ ์ด ํ์ํฉ๋๋ค:์ด๋ฆ์ค๋ชํ์ ์ฌํญ. ์คํค๋ง ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.์๋ฅผ ๋ค์ด, ๋ค์ ๋ช ๋ น์
schemas
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด ๋ช ๋ช ๋ ๊ฐ ์คํค๋ง์ ๋ํ ์ด๋ฆ๊ณผ ObjectId๋ฅผ ๋ฐํํฉ๋๋ค.mongodrdl list-schema-names --schemaSource schemas ์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
movies 5d72ad695c23a9e3e26e3c85 theaters 5d72adea5c23a9e44882a1ad
upload
์ง์ ๋
.drdl
ํ์ผ์์--schemaSource
์ต์ ์ผ๋ก ์ง์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์คํค๋ง๋ฅผ ์ ๋ก๋ํฉ๋๋ค. ์คํค๋ง๊ฐschemas
์ปฌ๋ ์ ์ ์ ๋ก๋๋ฉ๋๋ค.upload
๋ค์ ์ต์ ์ด ํ์ํฉ๋๋ค:์ด๋ฆ์ค๋ชํ์ ์ฌํญ. ์คํค๋ง ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.--drdl
ํ์ ์ฌํญ. ์ ๋ก๋ํ.drdl
ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.์๋ฅผ ๋ค์ด, ๋ค์ ๋ช ๋ น์
movies.drdl
ํ์ผ์ ์คํค๋ง๋ฅผschemas
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ก๋ํฉ๋๋ค.mongodrdl upload --schemaSource schemas --drdl ./movies.drdl ์ ๋ก๋๋ ์คํค๋ง์ ObjectId์ ๋ํ ๋ฌธ์์ด ํํ์ด ๋ฐํ๋ฉ๋๋ค:
5d793f3f6a26a3ce66c304ea ๋ค์ ๋จ๊ณ๋
name-schema
๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ ๊ณตํ ์ด๋ฆ์ผ๋ก ์คํค๋ง๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ๋๋ค.mongodrdl name-schema --name movies --schemaSource schemas --schema 5d793f3f6a26a3ce66c304ea ์ด๋ฆ์ด ์ง์ ๋ ์๋ก ์ ๋ก๋๋ ์คํค๋ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด
--schemaSource
์ต์ ์ผ๋ก ์ง์ ๋ ์คํค๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋กmongosqld
๋ฅผ ๋ค์ ์์ํ๊ณ ์คํค๋ง ์ด๋ฆ์--schemaName
(์ผ)๋ก ์ง์ ํฉ๋๋ค:mongosqld --schemaSource <schema-db> --schemaName movies ์ค์
์ฌ์ฉ์ ์ง์ ์คํค๋ง๋ฅผ ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ, ๋ฐ๋์
name-schema
๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์คํค๋ง๋ฅผ ์ง์ ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํ ๋ค์mongosqld
์--schemaName
์ผ๋ก ์ด ์ด๋ฆ์ ์ง์ ํด์ผ ํฉ๋๋ค. ์คํค๋ง๋ฅผ ์ ๋ก๋ํ ๋ ์คํค๋ง ์ด๋ฆ์ ์ ์ฅํ์ง ์์ผ๋ฉด ์คํค๋ง ์ด๋ฆ์defaultSchema
๋ก ๊ธฐ๋ณธ ์ค์ ๋ฉ๋๋ค. ์คํค๋ง ์ด๋ฆ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐmongosqld
์์ ๋ค์๊ณผ ์ ์ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. 'MongoDB ์คํค๋ง๋ฅผ ์์ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์คํค๋ง ์ด๊ธฐํ ์ค๋ฅ: ํด๋น ์ด๋ฆ์ ์คํค๋ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.'
download
์ด๋ฆ ๋๋ ObjectId์ ๋ฌธ์์ด ํํ์ผ๋ก ์ง์ ๋ ์คํค๋ง๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ฝ์์ ์ถ๋ ฅํฉ๋๋ค.
download
๋ค์ ์ต์ ์ ํ์ฉํฉ๋๋ค:์ด๋ฆ์ค๋ชํ์ ์ฌํญ. ์คํค๋ง ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.--name
์คํค๋ง์ ์ด๋ฆ์ ๋๋ค. ์คํค๋ง ์ด๋ฆ ์ง์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด
name-schema
๋ช ๋ น์ ์ฐธ์กฐํ์ธ์.--schema
๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ํ์์ ๋๋ค.--schema
์คํค๋ง์ ObjectId์ ๋ํ ๋ฌธ์์ด ํํ์ ๋๋ค.
--name
๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ํ์์ ๋๋ค.์๋ฅผ ๋ค์ด, ๋ค์ ๋ช ๋ น์
movies
์คํค๋ง๋ฅผ ์ฝ์์ ์ถ๋ ฅํฉ๋๋ค.mongodrdl download --schemaSource schemas --name movies ์คํค๋ง๋ฅผ
.drdl
ํ์ผ์ ์ ์ฅํ๋ ค๋ฉด ์ถ๋ ฅ์ ์ํ๋.drdl
ํ์ผ๋ก ์ง์ ํฉ๋๋ค:mongodrdl download --schemaSource schemas --name movies > ./movies.drdl
delete
ObjectId์ ์ด๋ฆ ๋๋ ๋ฌธ์์ด ํํ์ผ๋ก ์ง์ ๋ ์คํค๋ง๋ฅผ ์ญ์ ํฉ๋๋ค.
delete
๋ค์ ์ต์ ์ ํ์ฉํฉ๋๋ค:์ด๋ฆ์ค๋ชํ์ ์ฌํญ. ์คํค๋ง ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.--name
์คํค๋ง์ ์ด๋ฆ์ ๋๋ค. ์คํค๋ง ์ด๋ฆ ์ง์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด
name-schema
๋ช ๋ น์ ์ฐธ์กฐํ์ธ์.--schema
๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ํ์์ ๋๋ค.--schema
์คํค๋ง์ ObjectId์ ๋ํ ๋ฌธ์์ด ํํ์ ๋๋ค.
--name
๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ํ์์ ๋๋ค.์๋ฅผ ๋ค์ด, ๋ค์ ๋ช ๋ น์
schemas
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ID๊ฐ5d7941dc6a26a3d0fc397284
์ธ ์คํค๋ง๋ฅผ ์ญ์ ํฉ๋๋ค.mongodrdl delete --schemaSource schemas --schema 5d7941dc6a26a3d0fc397284
name-schema
์คํค๋ง์ ์ ์ด๋ฆ์ ์์ฑํ๊ฑฐ๋ ์คํค๋ง์ ๊ธฐ์กด ์ด๋ฆ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
์ ์ฅ๋ ์คํค๋ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฆ์ด ์ง์ ๋์ง ์์ต๋๋ค.
download
๋ฐdelete
๋ช ๋ น๊ณผ ํจ๊ป--name
์ต์ ์ ์ฌ์ฉํ์ฌ ๋ช ๋ช ๋ ์คํค๋ง๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.name-schema
๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์คํค๋ง์ ์ด๋ฆ์ ์ง์ ํ๊ฑฐ๋ ์ด๋ฆ์ ๋ณ๊ฒฝํฉ๋๋ค.name-schema
๋ค์ ์ต์ ์ด ํ์ํฉ๋๋ค:์ด๋ฆ์ค๋ชํ์ ์ฌํญ. ์คํค๋ง ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.ํ์ ์ฌํญ. ์คํค๋ง์ ์ ์ด๋ฆ์ ๋๋ค.ํ์ ์ฌํญ ์คํค๋ง์ ObjectId์ ๋ํ ๋ฌธ์์ด ํํ์ ๋๋ค.์๋ฅผ ๋ค์ด ๋ค์ ๋ช ๋ น์
schemas
๋ฐ์ดํฐ๋ฒ ์ด์ค์5d72adea5c23a9e44882a1ad
์คํค๋ง ์ด๋ฆ์movies
๋ก ์ง์ ํฉ๋๋ค:mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad
์ต์
์ฃผ์ ์ต์
--help
์ต์ ๋ฐ
mongodrdl
์ ์ฌ์ฉ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค.
--version
mongodrdl
๋ฆด๋ฆฌ์ค ๋ฒํธ๋ฅผ ๋ฐํํฉ๋๋ค.
--verbose <level>, -v <level>
mongodrdl
์ด ๋ ์์ธํ ๋ก๊ทธ ์ถ๋ ฅ์ ์ ๊ณตํ๋๋ก ์ง์ ํฉ๋๋ค. ๋ณด๋ค ์์ธํ๊ฒ ํ๋ ค๋ฉด ์ฌ๋ฌ ๋ฒ(์:-vvvvv
) ํฌํจํ๊ฑฐ๋ ์ซ์ ๊ฐ(์:--verbose=5
)์ ์ง์ ํฉ๋๋ค.
--uri <mongodb-uri>
๋ฒ์ 2.12์ ์๋ก์ด ๊ธฐ๋ฅ
MongoDB URI ์ฐ๊ฒฐ ๋ฌธ์์ด์ ๋๋ค.
์ค์
๋ค์ ๋ช ๋ น์ค ์ต์ ์
--uri
์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.--password
(URI ์ฐ๊ฒฐ ๋ฌธ์์ด์ ๋น๋ฐ๋ฒํธ๋ ํฌํจ๋ ๊ฒฝ์ฐ)
๋์ ์ด๋ฌํ ์ต์ ์
--uri
์ฐ๊ฒฐ ๋ฌธ์์ด์ ์ผ๋ถ๋ก ์ง์ ํฉ๋๋ค.
--host <hostname><:port>, -h <hostname><:port>
๊ธฐ๋ณธ๊ฐ: localhost:27017
์ฐ๊ฒฐํ
mongod
์ ๋ํด ํ์ธ ๊ฐ๋ฅํ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋กmongodrdl
๋ ํฌํธ ๋ฒํธ27017
์ ๋ก์ปฌ ํธ์คํธ์์ ์คํ ์ค์ธ MongoDB ์ธ์คํด์ค์ ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค.๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด
replSetName
๊ณผ ์ธํธ ๋ฉค๋ฒ์ ์๋ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค.<replSetName>/<hostname1><:port>,<hostname2><:port>,<...> ํธ์คํธ์ ํฌํธ ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ์ฌ ์ธ์ ๋ ์ง ๋จ์ผ MongoDB ์ธ์คํด์ค์ ์ง์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
--port <port>
๊ธฐ๋ณธ๊ฐ: 27017
MongoDB ์ธ์คํด์ค๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ์์ ์ ๋๊ธฐํ๋ TCP ํฌํธ๋ฅผ ์ง์ ํฉ๋๋ค.
--db <database>, -d <database>
.drdl
์คํค๋ง ํ์ผ์ ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.
--collection <collection>, -c <collection>
.drdl
์คํค๋ง ํ์ผ์ ์์ฑํ ์ปฌ๋ ์ ์ ์ง์ ํฉ๋๋ค. ์ปฌ๋ ์ ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด ์ต์ ์ ์ง์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์ธ์คํด์ค์ ๋ชจ๋ ์ปฌ๋ ์ ์ ์ฌ์ฉํฉ๋๋ค.
--customFilterField <name>, -f <name>
์ฌ์ฉ์ ์ง์ MongoDB ํํฐ์ ์ถ๊ฐํ ํ๋ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์ ์ง์ ํํฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
--out <path>, -o <path>
๊ธฐ๋ณธ๊ฐ: ํ์ค ์์.
mongodrdl
์ด ์คํค๋ง ํ์ผ์ ์์ฑํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. ์คํค๋ง๋ฅผ ํ์ค ์ถ๋ ฅ์ผ๋ก ๋ณด๋ด๋ ค๋ฉด ๊ฒฝ๋ก ๋์ "-
"๋ฅผ ์ง์ ํฉ๋๋ค.
--sampleSize <size>, -s <size>
๊ธฐ๋ณธ๊ฐ: 1000
์ปฌ๋ ์ ์ ์คํค๋ง๋ฅผ ์์ฑํ ๋ ์ํ๋งํ ๋ฌธ์ ์๋ฅผ ์ง์ ํฉ๋๋ค.
--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>
UUID ๋ฐ์ด๋๋ฆฌ ํ์ ์ ํ3์ ์์ฑํ๊ธฐ ์ํ ์ธ์ฝ๋ฉ์ ์ง์ ํฉ๋๋ค. ๋ค์ ๊ฐ ์ค์์ ์ ํํฉ๋๋ค.
old
: ์ด์ BSON ๋ฐ์ด๋๋ฆฌ ํ์ ์ ํ ํํcsharp
: C#/.NET ๋ ๊ฑฐ์ UUID ํํjava
: Java ๋ ๊ฑฐ์ UUID ํํ
--preJoined
์์ ์ด์ ํฌํจํ์ฌ ์ธ์์ธ๋ฉ๋ ํ ์ด๋ธ์ ์์ฑํ์ฌ '์ฌ์ ์ ์กฐ์ธ๋' ํ ์ด๋ธ์ ์์ฑํฉ๋๋ค.
--schema <db-id>
๋ฒ์ 2.11์ ์๋ก ์ถ๊ฐ๋จ.
ํ์ ์ฌํญ. ์คํค๋ง ObjectId์ ๋ฌธ์์ด ํํ์ ์ง์ ํฉ๋๋ค.
--name <db-name>
๋ฒ์ 2.11์ ์๋ก ์ถ๊ฐ๋จ.
์คํค๋ง ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์ค์
์ฌ์ฉ์ ์ง์ ์คํค๋ง๋ฅผ ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ, ๋ฐ๋์
name-schema
๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์คํค๋ง๋ฅผ ์ง์ ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํ ๋ค์mongosqld
์--schemaName
์ผ๋ก ์ด ์ด๋ฆ์ ์ง์ ํด์ผ ํฉ๋๋ค. ์คํค๋ง๋ฅผ ์ ๋ก๋ํ ๋ ์คํค๋ง ์ด๋ฆ์ ์ ์ฅํ์ง ์์ผ๋ฉด ์คํค๋ง ์ด๋ฆ์defaultSchema
๋ก ๊ธฐ๋ณธ ์ค์ ๋ฉ๋๋ค. ์คํค๋ง ์ด๋ฆ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐmongosqld
์์ ๋ค์๊ณผ ์ ์ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. 'MongoDB ์คํค๋ง๋ฅผ ์์ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์คํค๋ง ์ด๊ธฐํ ์ค๋ฅ: ํด๋น ์ด๋ฆ์ ์คํค๋ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.'
--schemaSource <db-name>
๋ฒ์ 2.11์ ์๋ก ์ถ๊ฐ๋จ.
์คํค๋ง ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค. ์ด ์ต์ ์
sample
๋ช ๋ น์์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
TLS/SSL ์ต์
--ssl
Default(๊ธฐ๋ณธ๊ฐ): False
mongodrdl
๊ฐ MongoDB ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ๋ TLS/SSL์ ์ฌ์ฉํ๋๋ก ์ง์ํฉ๋๋ค.
--sslCAFile <filename>
์ธ์ฆ ๊ธฐ๊ด์ ๋ฃจํธ ์ธ์ฆ์ ์ฒด์ธ์ ํฌํจํ๋ MongoDB ์ธ์คํด์ค์
.pem
ํ์ผ์ ์ง์ ํฉ๋๋ค. ์๋ ๊ฒฝ๋ก ๋๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด.pem
ํ์ผ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.๊ฒฝ๊ณ
mongod
๋ฐmongos
์ ๋ํ SSL ์ฐ๊ฒฐ(--ssl
)์ ๊ฒฝ์ฐmongodrdl
๊ฐ--sslCAFile
์์ด ์คํ๋๋ฉดmongodrdl
๋ ์๋ฒ ์ธ์ฆ์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์๋ํ์ง ์์ต๋๋ค. ์ด๋ก ์ธํด ๋ง๋ฃ๋mongod
๋ฐmongos
์ธ์ฆ์๋ ๋ฌผ๋ก ์ ํจํmongod
๋๋mongos
์ธ์คํด์ค๋ก ๊ฐ์ฅํ๋ ์ธ๋ถ ํ๋ก์ธ์ค์ ๋ํ ์ทจ์ฝ์ฑ์ด ๋ฐ์ํฉ๋๋ค. ์นจ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์๋ฒ ์ธ์ฆ์์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ธฐ ์ํด ํญ์ CA ํ์ผ์ ์ง์ ํด์ผ ํฉ๋๋ค.
--sslPEMKeyFile <filename>
MongoDB์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ
mongosqld
์ TLS/SSL ์ธ์ฆ์์ ํค๊ฐ ๋ชจ๋ ํฌํจ๋.pem
ํ์ผ์ ์ง์ ํฉ๋๋ค. ์๋ ๊ฒฝ๋ก๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ.pem
ํ์ผ์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค.์ด ์ต์ ์ ์ต์ ์ ์ฌ์ฉํ์ฌ
net.ssl.allowConnectionsWithoutCertificates
์์ด--ssl
{ ๊ฐmongos
ํ์ฑํ๋mongod
CAFile
๋๋ ์ ์ฐ๊ฒฐํ ๋ ํ์ํฉ๋๋ค
--sslPEMKeyPassword <password>
MongoDB์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ธ์ฆ์์ ๋น๊ณต๊ฐ ํค๋ฅผ ํฌํจํ๋ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
--sslCRLFile <filename>
์ธ์ฆ์ ํด์ง ๋ชฉ๋ก์ด ํฌํจ๋
.pem
ํ์ผ์ ์ง์ ํฉ๋๋ค. ์๋ ๊ฒฝ๋ก ๋๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ.pem
ํ์ผ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
--sslAllowInvalidCertificates
MongoDB ์ธ์คํด์ค๊ฐ ์๋ชป๋ ์๋ฒ SSL/TLS ์ธ์ฆ์๋ฅผ ์ ์ํ๋๋ก ํ์ฉํฉ๋๋ค.
allowInvalidCertificates
์ค์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, MongoDB๋ ์๋ชป๋ ์ธ์ฆ์ ์ฌ์ฉ์ ๊ฒฝ๊ณ ๋ก ๊ธฐ๋กํฉ๋๋ค.
--sslAllowInvalidHostnames
TLS/SSL ์ธ์ฆ์์ ํธ์คํธ ์ด๋ฆ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. ์ธ์ฆ์์ ํธ์คํธ ์ด๋ฆ์ด ์ง์ ๋ ํธ์คํธ ์ด๋ฆ๊ณผ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ
mongodrdl
๊ฐ MongoDB ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
--sslFIPSMode
์ค์น๋ OpenSSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ FIPS ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋๋ก
mongodrdl
์ ์ง์ํฉ๋๋ค.--sslFIPSMode
์ต์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์์คํ ์ FIPS๋ฅผ ์ค์ํ๋ OpenSSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ด์ผ ํฉ๋๋ค.
์ธ์ฆ ์ต์
--username <username>, -u <username>
์ธ์ฆ์ ์ฌ์ฉํ๋ MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ ์ฌ์ฉ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
--password
๋ฐ--authenticationDatabase
์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
--password <password>, -p <password>
์ธ์ฆ์ ์ฌ์ฉํ๋ MongoDB database์ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค.
--username
๋ฐ--authenticationDatabase
์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
--authenticationDatabase <dbname>
์ฌ์ฉ์๊ฐ ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค. ์ธ์ฆ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐธ์กฐํ์ธ์.
--authenticationMechanism <name>
๊ธฐ๋ณธ๊ฐ: SCRAM-SHA-1
mongodrdl
์ธ์คํด์ค๊ฐmongod
๋๋mongos
(์)๋ฅผ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ง์ ํฉ๋๋ค.๊ฐ์ค๋ชRFC 5802 SHA1 ํด์ ํจ์๋ฅผ ์ฌ์ฉํ๋ ํ์ค Salted Challenge Response ์ธ์ฆ ๋ฉ์ปค๋์ฆ.2๋ฒ์ ์ ์ถ๊ฐ๋์์ต๋๋ค.6: RFC 7677 SHA2 ํด์ ํจ์๋ฅผ ์ฌ์ฉํ๋ ํ์ค Salted Challenge Response ์ธ์ฆ ๋ฉ์ปค๋์ฆ.PLAIN (LDAP SASL)LDAP๋ฅผ ์ฌ์ฉํ ์ธ๋ถ ์ธ์ฆ.PLAIN
์(๋ฅผ) ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ ์๋ ์์ต๋๋ค.PLAIN
์(๋) ๋น๋ฐ๋ฒํธ๋ฅผ ์ผ๋ฐ ํ ์คํธ๋ก ์ ์กํฉ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ MongoDB Enterprise ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.GSSAPI (Kerberos)Kerberos๋ฅผ ์ฌ์ฉํ ์ธ๋ถ ์ธ์ฆ. ์ด ๋ฉ์ปค๋์ฆ์ MongoDB Enterprise ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ง์ ํํฐ
BI Connector ๋ MongoDB ์ง๊ณ ํ์ดํ๋ผ์ธ ์ ์ฌ์ฉํ์ฌ MongoDB database ์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ์คํค๋ง์ ํน์ ํ๋๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์ ์ง์ MongoDB $match ์ฟผ๋ฆฌ string ์ MongoDB ์ธ์คํด์ค์ ์ ๋ฌํ ์ ์์ต๋๋ค.
--customFilterField
์ต์
์ mongodrdl
์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ํํฐ ํ๋์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ด ํ๋๋ ๋ค์ดํฐ๋ธ MongoDB $match ๋จ๊ณ๋ฅผ ์ ๋ฌํ์ฌ MongoDB์์ ๋ฐํ๋ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํ๋ ์ง๊ณ ํ์ดํ๋ผ์ธ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. BI Connector๋ SQL์์ ์ถ๊ฐ ๋จ๊ณ๋ฅผ ํธ์ํ๊ธฐ ์ ์ ์ด ๋จ๊ณ๋ฅผ ์ ์ฉํฉ๋๋ค.
์ฟผ๋ฆฌ๋ ํ๋๊ฐ ๊ด๊ณํ ์คํค๋ง์ ๋ ธ์ถ๋์ง ์์ ๊ฒฝ์ฐ์๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ํ๋๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ง์ ํํฐ ์ฌ์ฉ ์์๋ ์ฌ์ฉ์ ์ง์ ํํฐ ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ ์
์คํค๋ง ์์ฑ ์์
test
๋ฐ์ดํฐ๋ฒ ์ด์ค์ abc
์ปฌ๋ ์
์ ๋ค์๊ณผ ๊ฐ์ ํํ์ ๋ฌธ์๊ฐ ์ฃผ์ด์ง๋๋ค:
{ "_id": ObjectId(), "close": 7.45, "detail": { "a": 2, "b": 3 } }
mongodrdl
๋ฅผ ์คํํ์ฌ ์ด ์ปฌ๋ ์
์ ๊ธฐ๋ฐ์ผ๋ก ์คํค๋ง๋ฅผ ์์ฑํฉ๋๋ค.
mongodrdl -d test -c abc -o schema.drdl
์์ฑ๋ ์คํค๋ง ํ์ผ(schema.drdl
)์ ๋ค์๊ณผ ์ ์ฌํ๊ฒ ํ์๋ฉ๋๋ค:
schema: - db: test tables: - table: abc collection: abc pipeline: [] columns: - Name: _id MongoType: bson.ObjectId SqlName: _id SqlType: varchar - Name: close MongoType: float64 SqlName: close SqlType: numeric - Name: detail.a MongoType: float64 SqlName: detail.a SqlType: numeric - Name: detail.b MongoType: float64 SqlName: detail.b SqlType: numeric
์ฌ์ฉ์ ์ง์ ํํฐ ์์
์ด ํ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด ํ๋์ ์ฌ์ฉํ ์ด๋ฆ๊ณผ ํจ๊ป --customFilterField
ํ๋๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค:
mongodrdl [ other options ] --customFilterField _MONGOFILTER -o schema.drdl
DRDL ํ์ผ schema.drdl
์๋ ์์ฑ๋ ๋ชจ๋ ํ
์ด๋ธ์ ๋ค์ ํ๋๊ฐ ํฌํจ๋ฉ๋๋ค:
- Name: _MONGOFILTER MongoType: mongo.Filter SqlName: _MONGOFILTER SqlType: varchar
ํ์ค SQL์ ํน์ MongoDB ์ฟผ๋ฆฌ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์ SQL ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
SELECT <normal> FROM <tablename> WHERE <normal conditions> AND _MONGOFILTER='{ <json string that represents query to use> }' SELECT name,age FROM users WHERE active='t' AND _MONGOFILTER='{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}}'
BI Connector๋ ์์ SQL์ ๋ค์๊ณผ ๊ฐ์ MongoDB ์ง๊ณ ํํ์์ผ๋ก ๋ณํํฉ๋๋ค:
db.users.aggregate([ {$match:{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}}, {$match:{"active":true}}, {$project:{"name":1, "age":1}} ]);
๋ชจ๋ ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ๋๊ตฌ์์ ํน์ ํ๋๋ฅผ ํํฐ๋งํ๊ณ ์ผ์นํ๋ ๊ฐ์ ์ ํจํ JSON์ ๋ํ๋ด๋ ์์๋ฐ์ดํ๋ก ๋ฌถ์ ๋ฌธ์์ด๋ก ์ ๊ณตํ๋ฉด ์ด ์ฌ์ฉ์ ์ง์ ํํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. JSON ๋ด์ ๋ชจ๋ ๋ฐ์ดํ๋ ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ด์ผ ํฉ๋๋ค.
์ธ์ฆ ์์
์ธ์ฆ ์ด ํ์ฑํ๋ ์ํ์์ MongoDB ์๋ฒ๋ฅผ ์คํ ์ค์ธ ๊ฒฝ์ฐ mongodrdl
๋ช
๋ น์ ์ต์
์ผ๋ก ์ฌ์ฉ์ ์ด๋ฆ, ๋น๋ฐ๋ฒํธ ๋ฐ ์ธ์ฆ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
์ธ์ฆ์ด ํ์ฑํ๋ mongod ์ธ์คํด์ค์์ .drdl ํ์ผ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ช ๋ น ํ์์ ์ฌ์ฉํฉ๋๋ค.
mongodrdl --host myhost.example.net:27017 \ --username dbUser \ --password myPassword \ --db reports \ --collection FY2017 \ --authenticationDatabase admin \ --out schema.drdl
MongoDB Atlas ์์
MongoDB Atlas ๋ MongoDB ์ธ์คํด์ค ์ ์ฉ ์๋ฒ ํ๋ก๋น์ ๋์ ํฌํจํ์ฌ MongoDB ๋ฐฐํฌ๋ฅผ ์คํ, ๋ชจ๋ํฐ๋ง ๋ฐ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ํ ํด๋ผ์ฐ๋ ์๋น์ค์ ๋๋ค.
์ฐธ๊ณ
MongoDB Atlas๋ ํธ์คํ
๋ BI Connector๋ฅผ ์ ๊ณตํฉ๋๋ค. Atlas์์ ํธ์คํ
๋๋ BI Connector์์๋ mongodrdl
๋ช
๋ น์ .drdl
ํ์ผ ์ถ๋ ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Atlas BI Connector์๋ ์ํ ์๋ก ๊ณ ์นจ ๊ฐ๊ฒฉ๊ณผ ์ํ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ ์ํ๋ง์ด ํ์ํฉ๋๋ค.
Atlas์์ ํธ์คํ ํ๋ BI Connector์ ๋ํ ์์ธํ ๋ด์ฉ์ Atlas์ฉ BI Connector๋ฅผ ํตํ ์ฐ๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
BI Connector๋ฅผ ๋ก์ปฌ์์ ์คํ ์ค์ด๋ฉฐ Atlas ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ .drdl ํ์ผ์ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น ํ์์ ์ฌ์ฉํ์ธ์.
mongodrdl --host <domain0>.mongodb.net:27017,<domain1>.mongodb.net:27017,... \ --username <username> \ --password <password> \ --ssl \ --authenticationDatabase admin \ --db <database> \ --out schema.drdl