๐ Django์ MongoDB ํตํฉ ์ ๊ด๋ฆฌ์ ๋ก๊น ๋ฌธ์ ๋ง์คํฐ ์ฒญ์ฌ์ง
๐ก ์ํฉ ํด๋
- ํ์ฌ ์ํ: ์น์ฌ์ดํธ ๊ด๋ฆฌ์ ํ์ด์ง์์ ์ฝํ ์ธ ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ ๋๋ง๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์์ ์ด ์ค๋จ๋๊ณ ์์ต๋๋ค.
- ํต์ฌ ์์ :
- ๊ด๋ฆฌ์ ํ๋ ๊ธฐ๋ก์ ์ ์ฅํ ๋ ๊ณ ์ ์๋ณ์๊ฐ ์์ด ์ถฉ๋์ด ๋ฐ์ํจ
- ์์คํ ์ ๊ฐ์ "๋น ID"๋ฅผ ๊ฐ์ง ๊ธฐ๋ก์ด ์ด๋ฏธ ์๋ค๊ณ ๋ถํํจ
- ๊ธฐ๋ก์ ํฌ๊ธฐํ๊ฑฐ๋ ๊ธฐ๋ก์ ์ด๋ฆฌ๊ฑฐ๋ ์ ํํด์ผ ํ๋ ์ํฉ
- ์์ vs ํ์ค: ๊ด๋ฆฌ์๊ฐ ์น์ฌ์ดํธ ์ฝํ ์ธ ๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ด์ผ ํ๋๋ฐ, ์ค์ ๋ก๋ ๊ฐ๋จํ ์์ ๋ ์ค๋ฅ๋ก ์คํจํ๊ณ ์์ต๋๋ค.
- ์ํฅ ๋ฒ์: ๊ด๋ฆฌ์๋ ์ ๊ฒ์๋ฌผ ์ถ๊ฐ, ์นดํ ๊ณ ๋ฆฌ ์์ฑ, ์ฌ์ฉ์ ์ ๋ณด ์์ ๋ฑ ๋ชจ๋ ๊ด๋ฆฌ ์์ ์ ์ํํ ์ ์์ด ์น์ฌ์ดํธ ์ด์์ด ๋ง๋น๋ฉ๋๋ค.
๐ ์์ธ ํฌ์
- ๊ทผ๋ณธ ์์ธ: Django์ MongoDB๋ผ๋ ๋ ๊ธฐ์ ์ด ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ, ํนํ ๊ณ ์ ์๋ณ์(ID) ์ฒ๋ฆฌ ๋ฐฉ์์ ์ฐจ์ด๊ฐ ์ถฉ๋์ ์ผ์ผํต๋๋ค.
- ์ฐ๊ฒฐ ๊ณ ๋ฆฌ: Django๋ ๊ด๋ฆฌ์ ํ๋์ ๊ธฐ๋กํ ๋ ์๋์ผ๋ก ID๋ฅผ ๋ถ์ฌํ๋๋ฐ, MongoDB์ ํตํฉํ๋ฉด ์ด ID๊ฐ ๋น์ด์๊ฒ(null) ๋๊ณ , MongoDB๋ ์ฌ๋ฌ ํญ๋ชฉ์ด ๊ฐ์ "๋น์ด์๋ ID"๋ฅผ ๊ฐ์ง ์ ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ์ผ์ ๋น์ :
- ๋์๊ด์์ ๋ชจ๋ ์ฑ ์ ๊ณ ์ ๋ฒํธ๋ฅผ ๋ถ์ฌ์ผ ํ๋๋ฐ, ์ผ๋ถ ์ฑ ์ ๋ฒํธ๊ฐ ์์ด ์ปดํจํฐ๊ฐ "๋ฒํธ ์๋ ์ฑ ์ด ์ด๋ฏธ ์๋ค"๋ฉฐ ๋ฑ๋ก์ ๊ฑฐ๋ถํ๋ ์ํฉ
- ํ๊ต์์ ๋ชจ๋ ํ์์๊ฒ ํ๋ฒ์ ๋ถ์ฌํด์ผ ํ๋๋ฐ, ์ ํ์๋ค์๊ฒ ๋ชจ๋ "๋ฏธ์ "์ด๋ผ๋ ๋์ผํ ์์ ํ๋ฒ์ ์ฃผ์ด ์ถ์๋ถ ์์คํ ์ด ์ถฉ๋ํ๋ ์ํฉ
- ์ฃผ์ฐจ์ฅ์์ ๋ชจ๋ ์ฐจ์ ์ฃผ์ฐจ ๋ฒํธํ๋ฅผ ๋ถ์ฌํ๋๋ฐ, ์ฌ๋ฌ ์ฐจ์ "๋๊ธฐ์ค"์ด๋ผ๋ ๋์ผํ ํ์๋ฅผ ํด์ ๊ด๋ฆฌ ์์คํ ์ด ํผ๋์ ๊ฒช๋ ์ํฉ
- ์จ๊ฒจ์ง ์์: ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ค์ด Django๊ฐ SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๊ณ๋์๊ณ , NoSQL์ธ MongoDB์๋ ์ฒ ํ์ ์ฐจ์ด๊ฐ ์๋ค๋ ์ ์ ๊ฐ๊ณผํฉ๋๋ค.
๐ ๏ธ ํด๊ฒฐ ์ค๊ณ๋
- ์๋ ID ์์ฑ ์์คํ ๊ตฌ์ถํ๊ธฐ
- ํต์ฌ ํ๋: Django ๊ด๋ฆฌ์ ํ๋ ๊ธฐ๋ก์ ์๋์ผ๋ก ๊ณ ์ ID๋ฅผ ๋ถ์ฌํ๋ ์์คํ ๋ง๋ค๊ธฐ
- ์คํ ๊ฐ์ด๋:
- ์ ํธ๋ฆฌํฐ ์ฑ ํด๋ ์์ฑ (
utils
) - ์ฑ ์ค์ ํ์ผ ์์ฑ (
apps.py
) - LogEntry ๋ชจ๋ธ์ save ๋ฉ์๋๋ฅผ ํจ์นํ๋ ์ฝ๋ ์ถ๊ฐ
- settings.py์ ์ ํธ๋ฆฌํฐ ์ฑ ๋ฑ๋ก
- ์ฑ๊ณต ์งํ: ๊ด๋ฆฌ์ ํ์ด์ง์์ ์ฝํ ์ธ ์ถ๊ฐ/์์ /์ญ์ ์ ์ค๋ฅ ์์ด ์๋ํ๊ณ , ํ๋ ๊ธฐ๋ก์ด ์ ์ฅ๋จ
- ์์/์ฝ๋:
// ๋ณ๊ฒฝ ์ # LogEntry ์ ์ฅ ์ ID ํ๋๊ฐ null๋ก ์ค์ ๋จ // ๋ณ๊ฒฝ ํ def enhanced_save(self, *args, **kwargs): if not self.pk: unique_id = ObjectId() setattr(self, '_id', unique_id) setattr(self, 'id', unique_id) return original_save(self, *args, **kwargs) // ํต์ฌ ๋ณํ ์ค๋ช ์ ์ฅ ์ ์ ๊ฐ ๋ก๊ทธ ํญ๋ชฉ์ MongoDB ํธํ ๊ณ ์ ID๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ํ ๋นํฉ๋๋ค.
- ์ฃผ์์ฌํญ: Django ๋ฒ์ ๊ณผ MongoDB ๋ฒ์ ์ ๋ฐ๋ผ ์ธ๋ถ ๊ตฌํ์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก ํ ์คํธ๊ฐ ํ์ํฉ๋๋ค.
- ๋ก๊ทธ ์ก์ ๋ฉ์๋ ๊ฐ์ ํ๊ธฐ
- ํต์ฌ ํ๋: ๋ก๊ทธ ์์ฑ ์ ๋จ๊ณ์์๋ถํฐ ID ํ ๋น ์ฒ๋ฆฌํ๊ธฐ
- ์คํ ๊ฐ์ด๋:
- LogEntryManager์ log_action ๋ฉ์๋ ํ์ธ
- ๋ฉ์๋๋ฅผ ํจ์นํ์ฌ ๋ก๊ทธ ์์ฑ ์ ๊ณ ์ ID ํ ๋น ์ฝ๋ ์ถ๊ฐ
- ์ฌ์ฉ์ ID, ์ฝํ ์ธ ํ์ , ๊ฐ์ฒด ID ๋ฑ์ ์กฐํฉํ ๊ณ ์ ๋ฌธ์์ด ์์ฑ
- ์ฑ๊ณต ์งํ: ์ฌ๋ฌ ๊ด๋ฆฌ์๊ฐ ๋์์ ์์ ํด๋ ๋ก๊ทธ ID ์ถฉ๋์ด ๋ฐ์ํ์ง ์์
- ์์/์ฝ๋:
// ๋ณ๊ฒฝ ์ # ๋ก๊ทธ ์ก์ ์ฒ๋ฆฌ ์ ID ํ๋๋ฅผ ์ฒ๋ฆฌํ์ง ์์ // ๋ณ๊ฒฝ ํ def enhanced_log_action(self, *args, **kwargs): if 'object_id' in kwargs and kwargs['object_id']: log_id = f"{kwargs.get('user_id')}-{kwargs.get('content_type_id')}-{kwargs.get('object_id')}-{uuid.uuid4().hex[:8]}" kwargs['id'] = log_id return original_log_action(self, *args, **kwargs) // ํต์ฌ ๋ณํ ์ค๋ช ๋ก๊ทธ ์์ฑ ์ ์ ์ฌ์ฉ์, ์ฝํ ์ธ , ๊ฐ์ฒด ์ ๋ณด์ ๋๋ค ๋ฌธ์์ด์ ๊ฒฐํฉํ์ฌ ๊ณ ์ ID๋ฅผ ๋ฏธ๋ฆฌ ์ค๋นํฉ๋๋ค.
- ์ฃผ์์ฌํญ: ๋ก๊ทธ ID ์์ฑ ๋ก์ง์ด ๋ค๋ฅธ ์์คํ ๊ณผ ์ถฉ๋ํ์ง ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
- ์ ํธ๋ฆฌํฐ ์ฑ ์ค์ ์๋ฃํ๊ธฐ
- ํต์ฌ ํ๋: ํจ์น ์ฝ๋๋ฅผ ์๋์ผ๋ก ์ ์ฉํ๋ ์์คํ ๊ตฌ์ถ
- ์คํ ๊ฐ์ด๋:
- init.py ํ์ผ์ ๊ธฐ๋ณธ ์ฑ ์ค์ ์ ์ธ
- ์ค์ ํ์ผ์ ์ ํธ๋ฆฌํฐ ์ฑ ๋ฑ๋ก
- ์๋ฒ ์ฌ์์
- ์ฑ๊ณต ์งํ: ์๋ฒ ์์ ๋ก๊ทธ์ "LogEntry ๋ชจ๋ธ์ด ๋ก๊ทธ ๋ณด์กด ๋ชจ๋๋ก ํจ์น๋์์ต๋๋ค" ๋ฉ์์ง ํ์ธ
- ์์/์ฝ๋:
// ๋ณ๊ฒฝ ์ # settings.py์ ์ฑ์ด ๋ฑ๋ก๋์ง ์์ // ๋ณ๊ฒฝ ํ INSTALLED_APPS = [ # ...๊ธฐ์กด ์ฑ๋ค... 'utils', # ์ ํธ๋ฆฌํฐ ์ฑ ์ถ๊ฐ ] // ํต์ฌ ๋ณํ ์ค๋ช Django ์คํ ์ ์๋์ผ๋ก ์ ํธ๋ฆฌํฐ ์ฑ์ด ๋ก๋๋์ด LogEntry ๋ชจ๋ธ์ ํจ์นํฉ๋๋ค.
- ์ฃผ์์ฌํญ: Django ์์ ์์์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฑ๊ณผ์ ๋ก๋ ์์๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๐ง ํต์ฌ ๊ฐ๋ ํด๋ถ
- ORM(Object-Relational Mapping): ์ผ์์ ์ฌ์ ์
- 5์ด์๊ฒ ์ค๋ช ํ๋ค๋ฉด: ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ ํน๋ณํ ๋ฒ์ญ๊ธฐ์์. ๋ง์น ์์ด์ ํ๊ตญ์ด๋ฅผ ์๋ก ๋ฒ์ญํด์ฃผ๋ ํต์ญ์ฌ์ฒ๋ผ, ํ๋ก๊ทธ๋จ ์ธ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ด๋ฅผ ์๋ก ๋ฒ์ญํด์ค์.
- ์ค์ํ ์์: ๋์๊ด ์ฌ์๊ฐ ์ฑ ์ ๋ณด๋ฅผ ์ปดํจํฐ์ ์ ๋ ฅํ๋ฉด ์๋์ผ๋ก ์ฑ ์ฅ ์์น, ๋์ถ ์ํ ๋ฑ์ด ๊ธฐ๋ก๋๋ ๊ฒ์ฒ๋ผ, Django์ ORM์ ๊ฐ๋ฐ์๊ฐ Python ์ฝ๋๋ก ์์ฑํ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ดํดํ ์ ์๋ ๋ช ๋ น์ผ๋ก ๋ณํํฉ๋๋ค.
- ์จ๊ฒจ์ง ์ค์์ฑ: ORM์ ๋จ์ํ ๋ฒ์ญ๊ธฐ๊ฐ ์๋๋ผ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํธํ๋๋๋ก ํ๋ ์ถ์ํ ๊ณ์ธต์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฅ์ ์๊ด์์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ์คํด์ ์ง์ค: "ORM์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์๋ํ๋ค"๋ ์คํด๊ฐ ์์ง๋ง, ์ค์ ๋ก๋ SQL ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฅ ์ ๋ง๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ MongoDB ๊ฐ์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๊ฐ๋ ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
- ๊ณ ์ ์๋ณ์(ID): ์ผ์์ ์ฌ์ ์
- 5์ด์๊ฒ ์ค๋ช ํ๋ค๋ฉด: ๋ชจ๋ ์ฌ๋์ด ๋ค๋ฅธ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ฏ์ด, ์ปดํจํฐ๊ฐ ์ ๋ณด๋ฅผ ๊ตฌ๋ถํ ๋๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์ด๋ฆํ๊ฐ ํ์ํด์.
- ์ค์ํ ์์: ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๊ฐ ๋ชจ๋ ์ฌ๋์ ๊ตฌ๋ถํ๋ ๊ฒ์ฒ๋ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ ํญ๋ชฉ์ ๊ณ ์ ํ ID๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ํ์ ๋ฒํธ, ์ง์ ID, ์ํ ์ฝ๋ ๋ฑ ๋ชจ๋ ์ค์ํ์์์ ๊ณ ์ ์๋ณ์์ ๋๋ค.
- ์จ๊ฒจ์ง ์ค์์ฑ: ID๋ ๋จ์ํ ๊ตฌ๋ถ์ ์ํ ๊ฒ์ด ์๋๋ผ, ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ๊ณผ ๊ด๊ณ ์ค์ , ๊ฒ์ ์ฑ๋ฅ ์ต์ ํ์ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค.
- ์คํด์ ์ง์ค: "ID๋ ๊ทธ๋ฅ ๋ฒํธ์ผ ๋ฟ"์ด๋ผ๋ ์คํด๊ฐ ์์ง๋ง, ์ค์ ๋ก๋ ์์คํ ์ค๊ณ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒฐ์ ์ค ํ๋์ด๋ฉฐ ๋์ค์ ๋ณ๊ฒฝํ๊ธฐ ๋งค์ฐ ์ด๋ ค์ด ์์์ ๋๋ค.
- ํจ์น(Patch): ์ผ์์ ์ฌ์ ์
- 5์ด์๊ฒ ์ค๋ช ํ๋ค๋ฉด: ์ท์ ๊ตฌ๋ฉ์ด ๋๋ฉด ์ฒ์ ๋ง๋์ด ์์ ํ๋ฏ์ด, ์ปดํจํฐ ํ๋ก๊ทธ๋จ์๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ก์ด ์ฝ๋๋ฅผ ๋ง๋ถ์ฌ ๊ณ ์น ์ ์์ด์.
- ์ค์ํ ์์: ์๋์ฐจ์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ์ ์ฒด๋ฅผ ๊ต์ฒดํ์ง ์๊ณ ํน์ ๋ถํ๋ง ์๋ฆฌํ๋ ๊ฒ์ฒ๋ผ, ์ํํธ์จ์ด๋ ์ ์ฒด ์์คํ ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ํน์ ๊ธฐ๋ฅ๋ง ์์ ํ ์ ์์ต๋๋ค.
- ์จ๊ฒจ์ง ์ค์์ฑ: ํจ์น๋ ๋จ์ํ ์์ ์ด ์๋๋ผ ๊ธฐ์กด ์์คํ ์ ์์ ์ฑ์ ์ ์งํ๋ฉด์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ์ธํ ๊ท ํ์ ์์ ์ ๋๋ค.
- ์คํด์ ์ง์ค: "ํจ์น๋ ์์ ํด๊ฒฐ์ฑ ์ผ ๋ฟ"์ด๋ผ๋ ์คํด๊ฐ ์์ง๋ง, ์ ์ค๊ณ๋ ํจ์น๋ ์์คํ ์ ๊ทผ๋ณธ์ ์ธ ๋ถ๋ถ์ ๊ฑด๋๋ฆฌ์ง ์์ผ๋ฉด์ ํจ๊ณผ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์๊ตฌ์ ํด๊ฒฐ์ฑ ์ ๋๋ค.
๐ฎ ๋ฏธ๋ ์ ๋ต ๋ฐ ์งํ
- ์๋ฐฉ ์ ๋ต:
- Django์ MongoDB ํตํฉ ์ ๋ชจ๋ ๋ชจ๋ธ์ ๋ช ์์ ID ํ๋๋ฅผ ์ ์ํ๊ณ ์๋ ์์ฑ ๋ก์ง ์ ์ฉ
- ๊ธฐ๋ณธ ์ ๊ณต ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ ๊ธฐ์ ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ฐจ์ด์ ์ ๋ฌธ์ํํ์ฌ ๊ฒํ
- ํ ์คํธ ํ๊ฒฝ์์ ๊ณ ๋ถํ ์ํฉ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ ์ฌ์ ์ถฉ๋ ๋ฏธ๋ฆฌ ๋ฐ๊ฒฌ
- ์ฅ๊ธฐ์ ๊ณ ๋ ค์ฌํญ: Django์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ํตํฉ ์, ๋จ์ํ ๊ธฐ์กด ORM์ ์ฌ์ฉํ๊ธฐ๋ณด๋ค ๋ง์ถคํ ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ ๊ตฌ์ถํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
- ์ ๋ฌธ๊ฐ ์ฌ๊ณ ๋ฐฉ์: ๊ฒฝํ ๋ง์ ๊ฐ๋ฐ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ฆ์ ํด๊ฒฐ์ฑ ์ ์ฐพ๊ธฐ๋ณด๋ค, ๋จผ์ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ์ ๊น์ด ์ดํดํ๊ณ ๋ค์ํ ํด๊ฒฐ ๋ฐฉ์์ ์ฅ๋จ์ ์ ๋น๊ตํฉ๋๋ค.
- ํ์ต ๋ก๋๋งต:
- Django ORM์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋์ ๋ฐฉ์ ์ดํด
- MongoDB์ ๋ฌธ์ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ ํ์ต
- Django-MongoDB ํตํฉ ๋๊ตฌ์ ์์ค ์ฝ๋ ๋ถ์
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ ํจํด ํ์ต
๐ ์ค์ ์ ์ฉ ์ฒญ์ฌ์ง
- ์ฆ์ ์ ์ฉ:
- ๊ธฐ์กด Django-MongoDB ํ๋ก์ ํธ์ ์ ํธ๋ฆฌํฐ ์ฑ ์ ์ฉํ์ฌ ๋ก๊ทธ ์ค๋ฅ ํด๊ฒฐ
- ID ์์ฑ ๋ก์ง์ ๋ค๋ฅธ ๋ชจ๋ธ์๋ ํ์ฅํ์ฌ ์ ์ฌํ ๋ฌธ์ ์๋ฐฉ
- ๊ด๋ฆฌ์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐฑ์ ํ๊ณ ์ ๋ฆฌํ๋ ์คํฌ๋ฆฝํธ ์์ฑ
- ์ค๊ธฐ ํ๋ก์ ํธ: Django Admin์ ๋ก๊น ๊ธฐ๋ฅ์ MongoDB์ ์ต์ ํ๋ ์ปค์คํ ๋ก๊น ์์คํ ์ผ๋ก ์์ ํ ๋์ฒดํ๋ ์ฑ ๊ฐ๋ฐ
- ์๋ จ๋ ์ ๊ฒ:
- ๋ค์ํ Admin ์์ (์ถ๊ฐ, ์์ , ์ญ์ )์ ์ฌ๋ฌ ๋ชจ๋ธ์์ ํ ์คํธ
- ์ฌ๋ฌ ๊ด๋ฆฌ์๊ฐ ๋์์ ์์ ํ ๋ ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ ์ํฉ ํ ์คํธ
- ๋๋์ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ์ฑ๋ฅ ์ธก์
- ์ถ๊ฐ ๋ฆฌ์์ค:
- Django ๊ณต์ ๋ฌธ์ (์ด๊ธ)
- MongoDB ๊ณต์ ๊ฐ์ด๋ (์ด๊ธ-์ค๊ธ)
- djangotoolbox ๋ฐ django-nonrel ํ๋ก์ ํธ (์ค๊ธ)
- Martin Fowler์ NoSQL Distilled ์ฑ (์ค๊ธ-๊ณ ๊ธ)
๐ ์ง์ ์์ถ ์์ฝ
Django์ MongoDB ํตํฉ ์ ๋ฐ์ํ๋ ๋ก๊น ์ถฉ๋์ ๋ ์์คํ ์ ID ์ฒ๋ฆฌ ๋ฐฉ์ ์ฐจ์ด์์ ๋น๋กฏ๋๋ฉฐ, ์๋ ๊ณ ์ ID ์์ฑ ๋ก์ง์ ๊ตฌํํ์ฌ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํ๋ฉด์๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ฑ๊ณต์ ์ธ ํตํฉ์ ์ํด์๋ ๋ ๊ธฐ์ ์ ์ฒ ํ์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ , ํ์ํ ๋ถ๋ถ์ ๋ง์ถคํ ์ค๊ฐ ๊ณ์ธต์ ๊ฐ๋ฐํ๋ ์ ๊ทผ์ด ์ค์ํฉ๋๋ค.
๋๊ธ
๋๊ธ ๋ก๋ฉ ์ค...