-
Notifications
You must be signed in to change notification settings - Fork 2
๐ ๋ฐ์ดํฐ ๋ชจ๋ธ ๋์ถ ๊ณผ์
*Git์ ๊ฐ๋ ๊ณผ ์ฉ์ด๋ฅผ ๋ชจ๋ฅด๋ ์ผ๋ฐ์ธ ์ ์ ๋ฅผ ์ํด, Docsa์์๋ ์ผ๋ฐ์ ์ธ Git์ ๊ฐ๋ ๊ณผ ๋์๋๋ ์ฉ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ ์ํฉ๋๋ค.
(๊ธฐ๋ก: commit, ๋ฒ์ : branch, ๋ณํฉํ๊ธฐ: merge)
- ๋ฌธ์ ๋จ์์ ๋ฒ์ ๊ด๋ฆฌ์ ๋ธ๋์น ๊ธฐ๋ฅ
- ์ ๋ธ๋์น ์์ฑ ๋ฐ ๋ธ๋์น ๋ณํฉํ๊ธฐ ๊ธฐ๋ฅ
- ์์ฑ ์ค์ธ ๋ด์ฉ์ ์ ์ฅ ๋ฐ ๋ณต์
- ๋ฒ์ ๊ฐ ๋น๊ต ๋ฐ ์ปค๋ฐ ํ์คํ ๋ฆฌ ์๊ฐํ
- ๊ธฐ๋ก๋ง๋ค ์ ์ฒด ๋ณธ๋ฌธ์ด ํต์ผ๋ก ์ ์ฅ๋๋
wiki๊ฐ ์๋Git์ ๊ตฌ์กฐ - ๊ธฐ๋ก์
๋ธ๋กid์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง - DB์ ์ ์ฅ๋๋ ์ต์ ๋จ์๋
block(์ด๋ Editor.js (๊ณต์๋ฌธ์)์์ ๋ด๋ ค์ฃผ๋ ๊ณ ์ ํ id๋ฅผ ๊ฐ์ง ๋ฌธ๋จ)
-
์ฌ์ฉ์-๋ฌธ์-๋ธ๋์น-๊ธฐ๋ก๊ณผ ์ ์ฅ-๊ธฐ๋ก์ ๋ด์ฉ์ด ๋๋ ๋ธ๋ก์ด๋ ๋ณต์กํ ์ฐ๊ด๊ด๊ณ ํํ - ์ฃผ์ ์ํฐํฐ๋ ๋ชจ๋ ์ ํํ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง (FK์ ์์ฑ/์์ ์ผ์)
- ํธ๋์ญ์ ์ฒ๋ฆฌ ๋ฐ ๊ด๊ณ ์ ์ฝ์ด ๋ช ํํด์ผํ ๊ฒ
โก ์ด๋ฅผ ๊ตฌํํ๋ ์ต์ ์ ์ค๊ณ๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ ERD ์ค๊ณ ๊ณผ์ ์ ๊ฑฐ์ณค๋ค.
-
๋น์ ํ ํ ์ดํฐ์ ๋ํ ์ ํฉ์ฑ
- Save ์ ๋ณธ๋ฌธ๊ณผ Block์ ๋ณธ๋ฌธ์ JSON ํ์
- ์ด๋ฅผ String์ผ๋ก ํ์ฑํ๋ ๋น์ฉ ์กด์ฌ
- ํ๋ก ํธ์์ ๋ด๋ ค์ฃผ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ๊ธฐ๋ํ๋ ์ ๊ท์๊ณผ ๋ฌ๋ผ์ง ๊ฒฝ์ฐ์ ์ํ์ฑ
-
๋ธ๋ก์ ์ฐ๊ฒฐ ๊ตฌ์กฐ ์ค๊ณ ๋จ์ํ
- ์ด RDB ๊ตฌ์กฐ์์ block์ ์์๋ฅผ ํํํ๊ธฐ ์ํ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก์จ commits_block_sequence ์ค๊ฐํ ์ด๋ธ์ ์ฌ์ฉํ๊ณ ์์
- MongoDB๋ฅผ ์ฌ์ฉํ๋ค๋ฉด block์ ์์๋ฅผ ๋ฆฌ์คํธ๋ก ๊ฐ๋จํ๊ฒ ํํ ๊ฐ๋ฅ
-
ํ์ ๋ฐ์ดํฐ๋ RDB์ ์ํฐํฐ์ด๋ฉฐ, ์ฒญ๋ก์ ๋ฐ์ดํฐ๋ MongoDB์ ๋ํ๋จผํธ์ด๋ค.
-
์์ ๊ฐ์ ํ๊ณ์ ์ผ๋ก ์ธํด, ๋ธ๋ก ๋ฐ ์ฝํ ์ธ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ MongoDB์ ๋ถ๋ฆฌ ์ ์ฅํ๋ ๋ฐฉํฅ์ผ๋ก ๋ชจ๋ธ์ ์์ ํ์๋ค.
-
์ด์ธ์ ์ํฐํฐ๋ ๋ณต์กํ ์ฐ๊ด๊ด๊ณ์ ์ ํฉ์ฑ์ ๋ณด์กดํ ์ ์์ผ๋ฉฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค๋ ํน์ฑ์ ๊ณ ๋ คํ์ฌ RDB์ ์ ์งํ๊ณ , ํ์ํ MonboDB์ ObjectId๋ฅผ ํค๋ก ์ ์ฅํ๋ค.
โ RDB ์ํฐํฐ
โ MongoDB ๋ํ๋จผํธ
-
Block: ๊ฐ๋ณ ๋ธ๋ก์ ๋ฐ์ดํฐ
{
"_id": ObjectId('688acb39738f3ba3c0de543b'), // (MongoDB) CommitBlockSequence์ ๋ฆฌ์คํธ ์์์ ์ ์ฅ๋จ
"content": {
"id": "LTijV4knDj", // editor.js๊ฐ ์์ฑํ ์๋ํฐ์ ๋ฌธ๋จ์ ๊ณ ์ id
"type": "paragraph",
"data": {
"text": "ํ
์คํธ์ฝ๋๋ฅผ ์ต๊ดํ ํ์"
}
}
}-
CommitBlockSequence: ์ปค๋ฐ ์์ ์ ๋ธ๋ก ID ๋ฆฌ์คํธ
{
"_id": ObjectId('688acb39738f3ba3c0de543e'), // (RDB) Commit ์ํฐํฐ์ commitMongoId ํ๋์ ์ ์ฅ๋จ
"blockOrders": [ // MongoDB์ ์ ์ฅ๋ ๋ธ๋ก์ ObjectId๋ฅผ ์์๋๋ก ๊ฐ์ง ๋ฆฌ์คํธ
"688acb39738f3ba3c0de543a",
"688acb39738f3ba3c0de543b",
"688acb39738f3ba3c0de543c",
"688acb39738f3ba3c0de543d"
]
}-
SaveContent: Save๊ฐ ๊ฐ์ง๋ ๋ณธ๋ฌธ, Save์ ๊ฒฝ์ฐ์ ๊ธฐ๋ก๊ณผ ๋ค๋ฅด๊ฒ JSON ๋ณธ๋ฌธ ์ ์ฒด๋ฅผ DB์ ์ ์ฅ
{
"_id": ObjectId('688ac832738f3ba3c0de5415'), // (RDB) Save ์ํฐํฐ์ saveMongoId ํ๋์ ์ ์ฅ๋จ
"content": [
{
"id": "M4QIuFj82K", // editor.js๊ฐ ์์ฑํ ์๋ํฐ์ ๋ฌธ๋จ์ ๊ณ ์ id
"type": "paragraph",
"data": {
"text": "์ค๋ ํ ์ผ"
}
},
{
"id": "ew2k5QghnN",
"type": "paragraph",
"data": {
"text": "์ ๋จน๊ณ ์ ์๊ธฐ"
}
},
{
"id": "IqTwSiP2Lq",
"type": "paragraph",
"data": {
"text": "์ฆ๊ฒ๊ฒ ๊ณต๋ถํ๊ธฐ"
}
}
]
}