์‹ค์‹œ๊ฐ„ Chat์˜ ๋ชจ๋ธ์„ ์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ช‡๋ฒˆ ์จ๋ดค๋˜ MongoDB๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.

์ €์žฅํ•ด์•ผ ํ•  ๊ฒƒ์€

  • chat text
  • ์ฑ„ํŒ…์„ ๋ณด๋‚ธ username (ํšŒ์› ๊ฐ€์ž…ํ•˜๊ณ  ๋กœ๊ทธ์ธ ๊ด€๋ จ)
  • ์ฑ„ํŒ…์— ๋Œ€ํ•œ ์ข‹์•„์š” ๊ฐฏ์ˆ˜

๊ด€๋ จ ๋‚ด์šฉ

  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ (User Model)

Chat Model, Like Model ๊ตฌํ˜„ ์ค‘ ์ž˜ ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ๋“ค ์ •๋ฆฌ

  • MongoDB๋Š” NoSQL ์ด๋ผ๊ณ  ์•Œ๊ณ  ์žˆ๋Š”๋ฐ '์ข‹์•„์š”' ๊ฐ™์€ ๊ฒƒ๋“ค์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Œ

    • NoSQL ์ด๋ž€ ๋ญ์ง€? RDBMS ๋Š” ๋ญ์ง€?
      • NoSQL์€ RDB(Realtional Database)์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค.
      • RDB๋Š” id๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ foriegn key์™€ join์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ NoSQL์€ ๊ด€๊ณ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— join ์„ ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. (?)
    • MongoDB๋Š” ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๋‹ค. ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๋‹ค๋Š” ๋œป์€ ์ •ํ•ด์ง„ ํ‹€์ด ์—†๋‹ค๋Š” ๋œป์ด๋‹ค. ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ์ผ์ด ์‰ฌ์›Œ์กŒ๋‹ค. ์Šคํ‚ค๋งˆ๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ๋œป์ด์ง€ ?
      • MySQL์˜ ๊ฒฝ์šฐ
        create table study(
        id int auto_increment primary key,
        title varchar(20),
        name varchar(20))
        DEFAULT CHARACTER SET= utf8;
        )
        study ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, title๊ณผ name ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
        ํ•˜์ง€๋งŒ MongoDB ์˜ ๊ฒฝ์šฐ, ์ด๋Ÿฌํ•œ ์Šคํ‚ค๋งˆ์— ์ œ์•ฝ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— db.createCollection('study')๋กœ collection์„ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ๊ทธ ์•ˆ์— ์–ด๋–ค ๊ฐ’๋“ค์ด๋˜ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰ '๋ˆ„๊ฐ€' ํ•ด๋‹น ์ฑ„ํŒ…์— ๋Œ€ํ•ด ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅด๋Š” ๊ฒฝ์šฐ๋Š” ํ•ด๋‹น ์ฑ„ํŒ…๊ณผ user์™€ ๊ด€๊ณ„๊ฐ€ ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— mongoDB๋กœ๋Š” ์„ค๊ณ„๊ฐ€ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™๋‹ค. ์•„๋‹ˆ๋ฉด '๋ˆ„๊ฐ€' ์ฑ„ํŒ…์„ ์ข‹์•„์š” ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ ํ•„์š”์—†๊ณ , ๋ช‡๋ฒˆ ๋ˆŒ๋ ธ๋Š”์ง€๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด MongoDB๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๊ฑด๊ฐ€ ?

  • ๋„ˆ๋ฌด MongoDB์— ์ง‘์ฐฉํ•˜๋‚˜...?........ํ 

  • MongoDB๋Š” ๊ฐ์ข… ๊ฐ’๋“ค์„ JSON ํ˜•ํƒœ๋กœ ์ €์žฅํ•œ๋‹ค.

  • type : mongoose.Schema.Types.ObjectId

  • Express Tutorial Part 3: Using a Database (with Mongoose)

    • Mongoose๋ž€ ?
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ interactํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
      • database์˜ native query language๋ฅผ ์“ฐ๋Š” ๊ฒƒ (SQL ๊ฐ™์€)
      • Object Data Model('ODM') / Object Relation Model('ORM') ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. Django๋ฅผ ์“ธ ๋•Œ ORM ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ๋‹ค.
      • ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ORM์€ ์›น์—์„œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ javascript object๋กœ ๋‚˜ํƒ€๋‚ด์ฃผ๊ณ  ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งคํ•‘๋œ๋‹ค.๊ฐœ๋ฐœ์ž๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ค๋ธŒ์ ํŠธ ์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์–ธ์–ด๋ฅผ ์จ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์‰ฝ๋‹ค.
      • Mongoose๊ฐ€ MongoDB์˜ object modeling tool์ด๋‹ค. (Mongoose acts as a front end to MongoDB)
  • Mongoose ๊ด€๋ จ ๊ธ€

์ฐธ๊ณ  ๐Ÿ™‡๐Ÿปโ€โ™€๏ธ