ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ๊ธฐ์ˆ  ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŽธ
    ๊ธฐํƒ€ 2019. 12. 6. 21:54
    ๋ฐ˜์‘ํ˜•

     

     

    ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ  ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ์€ ์ด ์„ธ๊ฐ€์ง€ ๊ฒŒ์‹œ๋ฌผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ,

     

    1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

    2. ์ž๋ฐ”

    3. ์‹ค์ œ๋กœ ๋ฉด์ ‘์žฅ์—์„œ ๋“ค์—ˆ๋˜ ์งˆ๋ฌธ

     

    ์„ ์ •๋ฆฌํ•ด ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

     

    ์ด ์ž๋ฃŒ๋“ค๋กœ ๋ฉด์ ‘ ํ•ฉ๊ฒฉ ํ›„ ์žฌ์ง์ค‘์ด๋ฉฐ, ํ˜„์žฌ ์ทจ์—…์ค€๋น„์ค‘์ด์‹ ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

     


     

    1. index์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

    DB๋ฅผ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ๋„์™€์ฃผ๋Š” ์—ญํ• . ( B- Tree๋ฐฉ์‹ , DB ์„ฑ๋Šฅ๊ณผ ๋ฐ€์ ‘ )

    (์ธ๋ฑ์Šค๋Š” B- Tree๋ฐฉ์‹(binary,์ด์ง„๋ฒ•)๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด์ง„๋ฒ•์œผ๋กœ 0๊ณผ 1๋กœ๋งŒ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋นจ๋ผ์„œ ์‚ฌ์šฉํ•จ, 

    ๊ทธ๋ž˜์„œ Select ๋ฌธ์˜ where, join์—์„œ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•จ, ๋Œ€์‹  insert, update, delete๋ฌธ์—์„œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง)

     

     

    2. JOIN  ?

    ๋ณต์ˆ˜์˜ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉ, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ

     

    1. INNER JOIN :์กฐ์ธํ•˜๋Š” ๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋ชจ๋‘์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ํ–‰์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค

    2. OUTER JOIN : ๋งค์นญ๋˜๋Š” ํ–‰์ด ์—†์–ด๋„ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๋งค์นญ๋˜๋Š” ํ–‰์ด ์—†๋Š” ๊ฒฝ์šฐ NULL๋กœ ํ‘œ์‹œํ•œ๋‹ค

    • LEFT OUTER JOIN : table A์™€ B๊ฐ€ ์žˆ์„ ๋•Œ B์˜ JOIN์ปฌ๋Ÿผ์—์„œ ๊ฐ™์€ ๊ฐ’์ด ์žˆ์„ ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , B์˜ JOIN์ปฌ๋Ÿผ์—์„œ ๊ฐ™์€ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” Bํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ์ปฌ๋Ÿผ๋“ค์€ NULL๊ฐ’์œผ๋กœ ์ฑ„์›€
    • RIGHT OUTER JOIN : ์ด๊ฑด ์˜ค๋ฅธ์ชฝ
    • FULL OUTER JOIN : ์กฐ์ธ ์ˆ˜ํ–‰์‹œ ์ขŒ์ธก, ์šฐ์ธก ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด JOINํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑ, RIGHT OUTER JOIN ๊ณผ LEFT OUTER JOIN์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ง‘ํ•ฉ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ์™€ ๋™์ผ

    (ํ˜„์—…์—์„œ INNER JOIN๊ณผ OUTER JOIN์„ ์ฃผ๋กœ ์“ฐ๊ธฐ์—, ์‹ค์ œ ๋ฉด์ ‘์žฅ์—์„œ CROSS JOIN๊ณผ SELF JOIN์€ ์งˆ๋ฌธ๋ฐ›์€ ์  ์—†์Œ)

     

    3. CROSS JOIN 

    4. SELF JOIN

     

     

    3. ํŠธ๋žœ์žญ์…˜์ด๋ž€? 

     

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•˜์—ฌ , ๋…ผ๋ฆฌ์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…๋‹จ์œ„ ๋˜๋Š” ํ•œ๊บผ๋ฒˆ์— ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ๋“ค

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์™„์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ๊ฒƒ์ด ๋ชฉ์ 

    ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋Š” commit์ด ์ด๋ฃจ์–ด์ง€๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” rollback์ด ์‹คํ–‰๋˜๋ฉด์„œ 

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์Œ (all or nothing)

     

    ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ

    • ์›์ž์„ฑ(Atomicity) : ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๋“ ์ง€ ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ํ•จ 
    • ๋…๋ฆฝ์„ฑ(Isolation) : ์‹คํ–‰์ค‘์— ์žˆ๋Š” ์—ฐ์‚ฐ์˜ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ
    • ์ผ๊ด€์„ฑ(Consistency) : ์‹คํ–‰์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๋ฉด ์–ธ์ œ๋‚˜ ์ผ๊ด€์„ฑ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋กœ ๋ณ€ํ™˜ํ•จ
    • ์ง€์†์„ฑ(Durability) : ์ผ๋‹จ ์‹คํ–‰์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ ๋˜๋ฉด ๊ฒฐ๊ณผ๋Š” ์ง€์†์ ์ด์–ด์•ผ ํ•จ 

    - commit : ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์„œ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ˜์˜๋œ ์ƒํƒœ 

    - rollback : ์ทจ์†Œํ•˜๊ฑฐ๋‚˜ ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ๋•Œ ์ด์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ

     

     

    4. ํŠธ๋žœ์žญ์…˜์„ ๋ณ‘ํ–‰์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ์˜ ๋ฌธ์ œ์  

    ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ ๋‹ค๋ฅธ a์˜ ํŠธ๋žœ์ ์…˜์ด ๋กค๋ฐฑ๋˜๊ณ  b๋„ ๊ฐ™์ด ๋กค๋ฐฑ์ด ๋˜๋Š” ์ƒํ™ฉ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Œ 

    ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• : ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ผ๋ถ€๋ถ„์„ LOCK์„ ๊ฑธ๊ณ , ํŠธ๋žœ์ ์…˜์ด ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด LOCK์„ ํ’€๊ณ  ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•œ๋‹ค. (๋กœํ‚น์ œ์–ด๊ธฐ๋ฒ•)

     

    ๋กœํ‚น์ œ์–ด๊ธฐ๋ฒ• ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ : ๋‘๊ฐœ์˜ ํŠธ๋žœ์ ์…˜์ด ๋ฌดํ•œ์ • ๋Œ€๊ธฐํ•ด์•ผํ•˜๋Š”์ƒํƒœ (๋ฐ๋“œ๋ฝ)=>๊ต์ฐฉ์ƒํƒœ์— ๋น ์กŒ๋‹ค

    ํ•ด๊ฒฐ๋ฐฉ๋ฒ• : ํ•˜๋‚˜ ๋กค๋ฐฑ์‹œํ‚ค๊ณ  ๋กค๋ฐฑํ•œ๊ฑฐ ์™„๋ฃŒํ•˜๋ฉด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š”๊ฑฐ ์‹คํ–‰ (๋กœํ‚น์ œ์–ด๋ž‘ ๋˜‘๊ฐ™์ด)

     

    5. ๊ด€๊ณ„ํ˜• DB์™€ ๋น„๊ด€๊ณ„ํ˜•DB์˜ ์ฐจ์ด?

    ๊ด€๊ณ„ํ˜• : ํ…Œ์ด๋ธ”ํ˜•ํƒœ๋กœ key Value ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

    ๋น„๊ด€๊ณ„ํ˜• : ํ…Œ์ด๋ธ”ํ˜•์‹์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ , nosql (mongoDB)

    (๋น„๊ด€๊ณ„ํ˜•์˜ ์žฅ์ : ๋น„๊ด€๊ณ„ํ˜•์€ join์ด ์—†์Œ, ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ)

     

    6. PK / FK ?

    PK(Primary Key) : ํ…Œ์ด๋ธ”์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ปฌ๋Ÿผ, ํ”„๋ผ์ด๋จธ๋ฆฌํ‚ค(๋ถ€๋ชจํ‚ค)

    FK(Foreign Key) : ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ pk๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ปฌ๋Ÿผ(์ž์‹ํ‚ค)

     

    7. DB์„ฑ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€?

    QPS (query per second) ์ธก์ • : queue์— ์Œ“์ด๋Š” ์‹œ์ ์„ ๋ฐœ๊ฒฌํ•ด์„œ ์•ˆ์ • ๊ตฌ๊ฐ„์ด ์–ผ๋งˆ์ •๋„์ธ์ง€ ํ™•๋ณด

     

    8. http์™€ https์˜ ์ฐจ์ด 

    http: ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๊ณ  ์ด ํ”„๋กœํ† ์ฝœ์ด๋ž€ ์›น์—์„œ์˜ ๊ทœ์น™, ๊ทœ๊ฒฉ 

    https : http์™€ ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋“  ํ†ต์‹ ์„ ์•”ํ˜ธํ™” ํ•˜๊ธฐ ๋•Œ๋ฌธ์— http๋ณด๋‹ค ๋ณด์•ˆ์ด ์ข‹๋‹ค

      

    9. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๊ทœํ™”

    ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ ์‚ฝ์ž…,๊ฐฑ์‹ ,์‚ญ์ œ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ข… ์ด์ƒํ˜„์ƒ(Anamolies)์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ

    (์ •๊ทœํ™”์˜ ๋ฒ•์น™์€ 1์ฐจ์ •๊ทœํ™”, 2์ฐจ์ •๊ทœํ™”,3์ฐจ์ •๊ทœํ™”,BCNF,4์ฐจ์ •๊ทœํ™”,5์ฐจ์ •๊ทœํ™”๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ 

    ์‹ค๋ฌด์ ์œผ๋กœ 4,5๊นŒ์ง€๋Š” ํ•˜์ง€์•Š์Œ)

     

    * 3์ฐจ ์ •๊ทœํ™”? (๋ฉด์ ‘์งˆ๋ฌธ ๋นˆ๋„์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์ •๊ทœํ™”)

    =>๊ธฐ๋ณธํ‚ค๋ฅผ ์ œ์™ธํ•œ ์†์„ฑ๋“ค ๊ฐ„์˜ ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์ด ์—†๋Š” ๊ฒƒ(๊ธฐ๋ณธํ‚ค ์ด์™ธ์˜ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์ด ๊ทธ์™ธ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ) 

     

    10. mapper

    parameter Type=์ž…๋ ฅ๋  ๋ฐ์ดํ„ฐ

    resulte Type=์ฟผ๋ฆฌ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ

     

     

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.