Database

GreenBeanยท2021๋…„ 8์›” 5์ผ
0
post-thumbnail

Database

  • SQL์€ Structured Query Language์˜ ์•ฝ์ž
  • SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS, relational database management system)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํŠน์ˆ˜ ๋ชฉ์ ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • ํ”ํžˆ ์–˜๊ธฐํ•˜๋Š” ๊ด€๊ณ„ํ˜• DB๋ผ๋Š” ๋‹จ์–ด๋Š” RDBMS(์˜ˆ๋ฅผ ๋“ค์–ด, MySQL)์ธ ๊ฒƒ์ด๊ณ  SQL์€ RDBMS๋ฅผ ์„ค๊ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ ์–ธ์–ด

SQL (๊ด€๊ณ„ํ˜• DB)

  • SQL์„ ์‚ฌ์šฉํ•˜์—ฌ RDBMS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ ๋ฐ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•ต์‹ฌ์ ์ธ ๋‘ ๊ฐ€์ง€ ํŠน์ง•
    • ๋ฐ์ดํ„ฐ๋Š” ์ •ํ•ด์ง„ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”์— ์ €์žฅ
    • ๋ฐ์ดํ„ฐ๋Š” ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ
  • ๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ”์— ๋ ˆ์ฝ”๋“œ๋กœ ์ €์žฅ๋˜๋Š”๋ฐ, ๊ฐ ํ…Œ์ด๋ธ”๋งˆ๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ๊ตฌ์กฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ๊ตฌ์กฐ๋Š” ํ•„๋“œ์˜ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ์ •์˜
    • ๋”ฐ๋ผ์„œ ์Šคํ‚ค๋งˆ๋ฅผ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์€ ๋ ˆ์ฝ”๋“œ๋Š” ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Œ
    • ์ฆ‰, ์Šคํ‚ค๋งˆ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ์€ ์ •ํ•ด์ง„ ๊ตฌ์กฐ์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜
  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด '๊ด€๊ณ„'๋ฅผ ์ด์šฉ
    • ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ์ค‘๋ณต ์—†์ด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์œ„ํ—˜์ด ์—†์–ด์ง€๋Š” ์žฅ์  ์กด์žฌ

SQL ์žฅ์ 

  • ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ์Šคํ‚ค๋งˆ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
  • ๊ด€๊ณ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์—†์ด ํ•œ๋ฒˆ๋งŒ ์ €์žฅ

SQL ๋‹จ์ 

  • ๋œ ์œ ์—ฐํ•จ
  • ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์ „์— ๊ณ„ํšํ•˜๊ณ  ์•Œ๋ ค์•ผ ํ•จ (๋‚˜์ค‘์— ์ˆ˜์ •ํ•˜๊ธฐ ํž˜๋“ฌ)
  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ์–ด์„œ ์กฐ์ธ๋ฌธ์ด ๋งŽ์€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์Œ
  • ๋Œ€์ฒด๋กœ ์ˆ˜์ง์  ํ™•์žฅ๋งŒ ๊ฐ€๋Šฅํ•จ

Tip! ์ถ”๊ฐ€ ๋‚ด์šฉ

MySQL์ด๋ž€?

  • MySQL์€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS: Relational DBMS)
  • MySQL์€ ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ, ๋‹ค์ค‘ ์‚ฌ์šฉ์ž์™€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›
  • ๋˜ํ•œ, C์–ธ์–ด, C++, JAVA, PHP ๋“ฑ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ API๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Œ
  • MySQL์€ ์œ ๋‹‰์Šค, ๋ฆฌ๋ˆ…์Šค, ์œˆ๋„์šฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ PHP์™€ ํ•จ๊ป˜ ์›น ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋จ
  • MySQL์€ ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฅด๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ์ƒ์—…์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ƒ์—…์šฉ ๋ผ์ด์„ผ์Šค๋ฅผ ๊ตฌ์ž…ํ•ด์•ผ ํ•จ

MySQL์˜ ์žฅ์ 

  • ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›
  • ํฌ๊ธฐ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ๋„ ์•„์ฃผ ๋น ๋ฅด๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • ๋„๋ฆฌ ์•Œ๋ ค์ง„ ํ‘œ์ค€ SQL ํ˜•์‹์„ ์‚ฌ์šฉ
  • MySQL ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉ์ž์˜ ์šฉ๋„์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Œ

NoSQL

  • ๋ง๊ทธ๋Œ€๋กœ ๊ด€๊ณ„ํ˜• DB์˜ ๋ฐ˜๋Œ€
    • ์Šคํ‚ค๋งˆ๋„ ์—†๊ณ , ๊ด€๊ณ„๋„ ์—†์Œ

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข…๋ฅ˜

  • Document Store
    • ๋ฌธ์„œ ๋ชจ๋ธ NoSQL : MongoDB
    • ๋ฌธ์„œ ๋ชจ๋ธ NoSQL ์€ ํ•˜๋‚˜์˜ ํ‚ค์— ๊ตฌ์กฐํ™”๋œ ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒ
    • ๋ฌธ์„œ ๋ชจ๋ธ์—์„œ ์˜๋ฏธํ•˜๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฌธ์„œ๋ž€, ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ JSON์ด ์žˆ์œผ๋ฉฐ XML๊ณผ ๊ฐ™์ด ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ๋ฌธ์„œ๋ฅผ ๋งํ•จ
      • ์ €์žฅ๋œ ๋ฌธ์„œ๋ฅผ ์ปฌ๋ ‰์…˜์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ €์žฅ๊ณผ ๋™์‹œ์— ๋ฌธ์„œ ID์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ (๋ฌธ์„œ ๋ชจ๋ธ์˜ ํ‚ค๋Š” ๋ฌธ์„œ์— ๋Œ€ํ•œ ID๋กœ ํ‘œํ˜„)
      • ํ‚ค-๊ฐ’ ๋ฐ ์ปฌ๋Ÿผ ๋ชจ๋ธ์— ๋น„ํ•˜์—ฌ ๋งŽ์€ ์ข…๋ฅ˜์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, RBMS์™€ ์œ ์‚ฌํ•œ ๊ฒ€์ƒ‰์กฐ๊ฑด์„ ํฌํ•จํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ๋ฌธ์„œ๋ชจ๋ธ NoSQL์€ ๋งŽ์€ ์ธ๊ธฐ๋ฅผ ์–ป๊ณ  ์žˆ์Œ
    • ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์„œ ๋ชจ๋ธ NoSQL์€ BํŠธ๋ฆฌ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 2์ฐจ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ
      • ๊ทธ๋Ÿฌ๋‚˜ BํŠธ๋ฆฌ๋Š” ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ• ๋•Œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ BํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์„œ ๋ชจ๋ธ NoSQL์€ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ๋น„์œจ์„ 7:3 ์ด์ƒ์œผ๋กœ ์œ ์ง€ํ• ๋•Œ ๋” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ž„
      • ๊ฒฐ๊ตญ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์„œ ๋ชจ๋ธ NoSQL์˜ ํŠน์ง•์„ ํŒŒ์•…ํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•จ
      • BํŠธ๋ฆฌ์˜ ํŠน์„ฑ ๋–„๋ฌธ์— ํ•œ ๋ฒˆ ์ž‘์„ฑ๋˜๋ฉด ์ž์ฃผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜๋ฉฐ, ๋กœ๊ทธ์ €์žฅ, ํƒ€์ž„๋ผ์ธ ์ €์žฅ, ์ฑ„ํŒ…๋กœ๊ทธ ๊ธฐ๋ก์ด๋‚˜ ์กฐํšŒ์— ์ ํ•ฉ
  • Key-Value Store
    • ํ‚ค-๊ฐ’ ๋ชจ๋ธ NoSQL : Redis, Riak ๋“ฑ
    • ํ‚ค ๊ฐ’ ๋ชจ๋ธ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋‹จ์ˆœํ•œ ์ €์žฅ๊ตฌ์กฐ๋ฅผ ๊ฐ–์œผ๋ฉฐ, ๋ณต์žกํ•œ ์กฐํšŒ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ
      • ์ €์žฅ๋˜๋Š” ๊ฐ’์„ ๋‹จ์ง€ ์˜๋ฏธ ์—†๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋กœ ์ฒ˜๋ฆฌ
      • ๊ณ ์† ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ์— ์ตœ์ ํ™”๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ
    • ํ‚ค-๊ฐ’ ๋ชจ๋ธ์˜ ํŠน์ง•์„ ๊ณ ๋ คํ•ด ๋ณผ๋•Œ, ๋‹จ์ผ ์—ฐ์‚ฐ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š”๋ฐ ์ ํ•ฉ
    • ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ์š”์ฒญ์— ๋‹จ์ผ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ๋กœ ๋Œ€์‘ํ• ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์— ์ ํ•ฉ
  • Wide Cloumn Store
  • Graph Store

NoSQL ์žฅ์ 

  • ์Šคํ‚ค๋งˆ๊ฐ€ ์—†์–ด์„œ ์œ ์—ฐ
  • ์–ธ์ œ๋“ ์ง€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ•„๋“œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜์–ด ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ค๋Š” ์†๋„ ๋นจ๋ผ์ง
  • ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ชจ๋“  ์ฝ๊ธฐ/์“ฐ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

NoSQL ๋‹จ์ 

  • ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฐ์ •์„ ๋ฏธ๋ฃจ๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ
  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ๊ณ„์† ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•จ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์— ์ค‘๋ณต๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ • ์‹œ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ (SQL์—์„œ๋Š” ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ•œ๋ฒˆ๋งŒ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅ)

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ด ๋” ์ข‹์„ ๋•Œ

  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ
    • NoSQL์—์„œ๋Š” ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์„ ๋ชจ๋‘ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ 
  • ๋ณ€๊ฒฝ๋  ์—ฌ์ง€๊ฐ€ ์—†๊ณ , ๋ช…ํ™•ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ์—๊ฒŒ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ด ๋” ์ข‹์„ ๋•Œ

  • ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ/ํ™•์žฅ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
  • ์ฝ๊ธฐ๋ฅผ ์ž์ฃผ ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ ์ž์ฃผ ์—†๋Š” ๊ฒฝ์šฐ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ (๋ง‰๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ)

โœ๏ธ But, ํ•˜๋‚˜์˜ ์ œ์‹œ ๋ฐฉ๋ฒ•์ด์ง€ ์™„์ „ํ•œ ์ •๋‹ต์ด ์ •ํ•ด์ ธ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹˜

  • SQL์„ ์„ ํƒํ•ด์„œ ๋ณต์žกํ•œ JOIN๋ฌธ์„ ๋งŒ๋“ค์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜์—ฌ ๋‹จ์ ์„ ์—†์•จ ์ˆ˜ ์žˆ์Œ
  • NoSQL์„ ์„ ํƒํ•ด์„œ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค๊ณ„ํ•ด์„œ ๋‹จ์ ์„ ์—†์•จ ์ˆ˜๋„ ์žˆ์Œ
profile
๐ŸŒฑ Backend-Dev | hwaya2828@gmail.com

0๊ฐœ์˜ ๋Œ“๊ธ€