[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 7์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ

2022. 3. 5. 20:28ยท๐Ÿ“ Book/โœ Game Server

7์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ

 

1. ํ”Œ๋ ˆ์ด์–ด์˜ ์ •๋ณด ์ €์žฅ

์‹ฑ๊ธ€ ํ”Œ๋ ˆ์ด ๊ฒŒ์ž„์„ ๋งŒ๋“ค ๋•Œ๋Š” ๋ณดํ†ต ํ”Œ๋ ˆ์ด์–ด์˜ ๋กœ์ปฌ ์ปดํ“จํ„ฐ ์•ˆ์— ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด ๊ฒŒ์ž„์„ ๋งŒ๋“ค ๋•Œ๋„ ์‹ฑ๊ธ€ ํ”Œ๋ ˆ์ด์™€ ๊ฐ™์ด ๋กœ์ปฌ ์ปดํ“จํ„ฐ ์•ˆ์— ์ €์žฅํ•œ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด, ์ž์‹ ์ด ํ•˜๋˜ ํ”Œ๋ ˆ์ด ์ •๋ณด๋ฅผ ์ด์–ด์„œ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.
  • ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํ•ดํ‚น์„ ํ•  ์ค„ ์•ˆ๋‹ค๋ฉด, ํ”Œ๋ ˆ์ด ์ •๋ณด๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ๋Š” ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„๋‹Œ ์„œ๋ฒ„์—๋งŒ ์ €์žฅํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋กœ๊ทธ์ธ ํ›„ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋‹ค.

  • ์ƒ์šฉ์œผ๋กœ ์„œ๋น„์Šค๋˜๋Š” ๊ฒŒ์ž„๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•ด ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ํ”Œ๋ ˆ์ด์–ด ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์†๋„๋Š” ํŒŒ์ผ์ด ๋น ๋ฅด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ชจ๋‘ ์•ž์„ ๋‹ค.

ํŒŒ์ผ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๊ต

 

2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ Microsoft SQL Server๋‚˜ Oracle MySQL์ด๋‹ค. ๋‘˜ ์ค‘ SQL Server Express๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ๊ฒƒ์ด๋ฉฐ SQL Server Management Studio๋„ ํ•จ๊ป˜ ์„ค์น˜ํ•˜๋ฉด ๋”์šฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์„ฑ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ‘œ(table) ํ˜•ํƒœ์˜ ์ง‘ํ•ฉ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ํ…Œ์ด๋ธ” ์ง‘ํ•ฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค(instance)๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋‹ค๋ฃจ๋Š” ๊ฐ€์žฅ ํฐ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์•ˆ์—๋Š” ํ…Œ์ด๋ธ”์ด 1๊ฐœ ์ด์ƒ ๋“ค์–ด๊ฐ„๋‹ค.
  • ํ…Œ์ด๋ธ”์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ–‰๊ณผ ์—ด์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ–‰ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ๋บ„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ํ–‰์„ ๋ ˆ์ฝ”๋“œ(record)๋ผ ํ•œ๋‹ค. ๋˜ ๋ ˆ์ฝ”๋“œ ์•ˆ์—๋Š” ํ‘œ์˜ ์—ด์ด ์žˆ๋Š”๋ฐ, ์ด ์—ด์„ ํ•„๋“œ(field)๋ผ ํ•œ๋‹ค. ํ•„๋“œ๋Š” ์ด๋ฆ„ ๋ง๊ณ ๋„ ํƒ€์ž…(์ •์ˆ˜, ์†Œ์ˆ˜, ๋ฌธ์ž์—ด ๋“ฑ)์„ ์ถ”๊ฐ€๋กœ ๊ฐ–๊ณ  ์žˆ๋‹ค.

 

์•„๋ž˜ ์‚ฌ์šฉ ์˜ˆ๋ฅผ ๋ณด์ž.

 

ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

 

GameDB๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๊ณ  ๊ทธ ์•ˆ์—๋Š” UserAccount๋ผ๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ…Œ์ด๋ธ” ์•ˆ์—๋Š” john, prada์— ๋Œ€ํ•œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด๋ฉ”์ผ, ํŒจ์Šค์›Œ๋“œ, ์ƒ๋…„์›”์ผ์ด๋ผ๋Š” ํ•„๋“œ๊ฐ€ ์žˆ๋‹ค. ์ฆ‰, ์ด ํ…Œ์ด๋ธ”์€ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์šฉ๋„์ด๋‹ค

 

์ธ์Šคํ„ด์Šค, ํ…Œ์ด๋ธ”, ๋ ˆ์ฝ”๋“œ, ํ•„๋“œ

 

4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘

์ด์ œ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์™€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด๋ณด์ž.

 

๋จผ์ € SQL Server Management Studio๋ฅผ ์—ฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ํ•ญ๋ชฉ์—์„œ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ƒˆ ์ธ์Šคํ„ด์Šค ์•„๋ž˜์—์„œ ์ƒˆ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค. ์ด๋•Œ ์ƒˆ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ๋•Œ๋Š” ํ•„๋“œ๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ๊ธฐ์ž…ํ•ด์•ผ ํ•œ๋‹ค.

 

์ƒˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

 

ํ…Œ์ด๋ธ”์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ…Œ์ด๋ธ” ๋””์ž์ธ์„ ์„ ํƒํ•˜๋ฉด, ํ•„๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ…Œ์ด๋ธ” ๋””์ž์ธ

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ต์ˆ™ํ•ด์ง€๋ฉด ์ด๋ ‡๊ฒŒ ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ ๋„ SQL ์งˆ์˜ ๊ตฌ๋ฌธ์„ ์ž…๋ ฅํ•ด ๋น ๋ฅด๊ฒŒ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ ๋“ฑ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

 

5. SQL ์งˆ์˜ ๊ตฌ๋ฌธ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šค ํ•˜๋ฉด์„œ ์ฃผ๋กœ ํ•˜๋Š” ๊ฒƒ์€ CRUD(create, read, update, delete)์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์•ก์„ธ์Šค ํ•  ๋•Œ ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ๋ฌธ๋ฒ•์€ ์งˆ์˜(SQL query)์ด๋‹ค. 

  • ์ƒˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ๋Š” insert๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ex) insert into table1 (a, b, c) values (1, 2, 3)
  • ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ๋•Œ๋Š” select๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ex) select a, b, c from table1 where a=1
  • ๋ ˆ์ฝ”๋“œ ํ•„๋“œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋Š” update๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ex) update table1 set b=2 where a=1
  • ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” delete๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ex) delete from table1 where a=1

 

6. ์ธ๋ฑ์Šค์™€ ํ‚ค

๋งŒ์•ฝ ์–ด๋–ค ๋‘๊บผ์šด ๋„์„œ์—์„œ ์›ํ•˜๋Š” ์šฉ์–ด๋ฅผ ์ฐพ์•„์•ผ ํ•  ๊ฒฝ์šฐ, ๋งจ ๋’ค์— ์žˆ๋Š” ์ธ๋ฑ์Šค(index, ์ฐพ์•„๋ณด๊ธฐ)๋ฅผ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด ์›ํ•˜๋Š” ์šฉ์–ด๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋‹ค ๋ด์•ผ ํ–ˆ์„ ๊ฒƒ์ด๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ์ด๋Ÿฌํ•œ ์ธ๋ฑ์Šค ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ธ๋ฑ์Šค๋Š” ํ•„๋“œ ๋‹จ์œ„๋กœ ์„ค์ •ํ•˜๋ฉฐ 2๊ฐœ ์ด์ƒ ํ•จ๊ป˜ ๋„ฃ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ฒ€์ƒ‰๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณ€๊ฒฝ, ์‚ญ์ œ ์‹œ์—๋„ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š”๋ฐ ํฐ ๋„์›€์ด ๋œ๋‹ค.
  • ์œ ๋‹ˆํฌ ์†์„ฑ์„ ์ถ”๊ฐ€๋กœ ์ง€์ •ํ•˜๋ฉด ์ค‘๋ณต๋œ ๊ฐ’ ๋ฐฉ์ง€ํ•˜๋Š” ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ธ๋ฑ์Šค๊ฐ€ ๊ฑธ์ณ์žˆ๋Š” ๋ ˆ์ฝ”๋“œ์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์ธ๋ฑ์Šค ๋ง๊ณ ๋„ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๊ฐ€ ์žˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋Š” ํŠน์ˆ˜ํ•œ ํ˜•์‹์˜ ์ธ๋ฑ์Šค์ด๋‹ค.

  • ํ•œ ํ…Œ์ด๋ธ”์— ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ค‘๋ณต์„ ํ—ˆ๋ฝํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ํ•œ ํ…Œ์ด๋ธ”์— ๊ฐ’์ด ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋‹ค.
  • ํ•„๋“œ ๊ฐ’์€ null์ด ํ—ˆ๋ฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

7. ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• 1

ํ”Œ๋ ˆ์ด์–ด ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค. ์ฆ‰, ๊ตฌ์กฐ์ฒด์™€ ๋ชฉ๋ก์˜ ์ง‘ํ•ฉ์ด๋‹ค.

 

๊ตฌ์กฐ์ฒดํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

๊ตฌ์กฐ์ฒด์™€ ๋ชฉ๋ก์˜ ์ง‘ํ•ฉ ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ํ‘œํ˜„๋œ ํ”Œ๋ ˆ์ด์–ด ๋ฐ์ดํ„ฐ

 

์ด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

  • ํ”Œ๋ ˆ์ด์–ด ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ด๋ธ”์— ๋„ฃ๋Š”๋‹ค.
  • ํ”Œ๋ ˆ์ด์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํŠธ๋ฆฌ ๋…ธ๋“œ ๊ฐ๊ฐ์„ ํ…Œ์ด๋ธ”์— ๋„ฃ๋Š”๋‹ค.

 

๋จผ์ € ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

ํ”Œ๋ ˆ์ด์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๋ฉด JSON ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ๋‚˜์˜ค๋Š”๋ฐ, ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋Š” ์†์„ฑ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์†์„ฑ์ด๋ž€ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์ง์„ ๋งํ•œ๋‹ค. 

{"ID": "Hong Gil Dong", "email": "gildong@foofoomail.com", "password"
"xxiuhwdqwddwdwafd", "Characters": [{"ID": "Little Elf", "Gender": "Female", "Level":
35, "Items": [{"Type": 123, "Amount": 1}]}, {"ID": "Big Orc", "Gender": "Male",
"Level": 23, "Items": []}]}

 

์ด๋ ‡๊ฒŒ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ JSON ํŒŒ์ผ ํ•˜๋‚˜๋กœ ๋งŒ๋“  ํ›„ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•œ๋‹ค. ์ด๋•Œ ํ•„๋“œ๋Š” ํ”Œ๋ ˆ์ด์–ด ID์™€ JSON ํŒŒ์ผ์„ ๋‹ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ณ  JSON ํŒŒ์ผ์€ ๋ฌธ์ž์—ด ๊ธธ์ด ์ œํ•œ์ด ์—†๋Š” text ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ „์ฒด ํ…Œ์ด๋ธ”

 

์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด ์ค‘ ์›ํ•˜๋Š” ์กฐ๊ฑด๊ฐ’์„ ์ž์ฃผ ์ฐพ์•„์•ผ ํ•  ๋•Œ๋Š” ์ด ๋ฐฉ์‹์— ํ•œ๊ณ„๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

 

8. ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• 2

๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋Š” ์†์„ฑ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ ˆ์ฝ”๋“œ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ”Œ๋ ˆ์ด์–ด ๊ฐ๊ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” UserAccount๋ผ๋Š” ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•œ๋‹ค. ์ด๋•Œ ํ”Œ๋ ˆ์ด์–ด ID๋Š” ์„œ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฏ€๋กœ ์œ ๋‹ˆํฌ ์†์„ฑ์ด ๋“ค์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋กœ ์„ค์ •ํ•œ๋‹ค.

 

UserAccount ํ…Œ์ด๋ธ”

 

์บ๋ฆญํ„ฐ๋Š” ์ž๊ธฐ ์ž์‹ ์„ ์†Œ์œ ํ•˜๋Š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์บ๋ฆญํ„ฐ ๊ณ ์œ  ID ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์†Œ์œ ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋„ ํ•จ๊ป˜ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์™ธ๋ž˜ ํ‚ค์ด๋‹ค. ์™ธ๋ž˜ ํ‚ค๋ž€ ํ…Œ์ด๋ธ”์˜ ์–ด๋–ค ํ•„๋“œ๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ํ•„๋“œ ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, OwnerUserAccountID ํ•„๋“œ๋Š” UserAccount ํ…Œ์ด๋ธ”์˜ ID ํ•„๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์™ธ๋ž˜ ํ‚ค์ด๋‹ค.

  • ์™ธ๋ž˜ ํ‚ค๋กœ CRUD๋ฅผ ์ž์ฃผ ํ•˜๋ฏ€๋กœ ์™ธ๋ž˜ ํ‚ค์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ์—ฌ๊ธฐ์„œ๋Š” ์™ธ๋ž˜ ํ‚ค ์ค‘๋ณต์„ ํ—ˆ๋ฝํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋…ผ ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ–ˆ๋‹ค.

 

Character ํ…Œ์ด๋ธ”

 

์ •๋ฆฌํ•˜์ž๋ฉด, ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋Š” ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋˜๊ณ  ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ(์†Œ์œ ์ž)๋Š” ์™ธ๋ž˜ ํ‚ค๊ฐ€ ๋œ๋‹ค.

 

์ „์ฒด ํ…Œ์ด๋ธ”

 

์ถ”๊ฐ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•  ๋•Œ๋Š” ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก E-R Diagram์ด๋‚˜ UML ํ‘œํ˜„๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

9. ์งˆ์˜ ๊ตฌ๋ฌธ ์‹คํ–‰

ํ…Œ์ด๋ธ”์„ ์ •์˜ํ–ˆ์œผ๋‹ˆ ์ด์ œ ํ”Œ๋ ˆ์ด์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์จ๋ณด์ž. ์ด ๋™์ž‘์€ SQL ์งˆ์˜ ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

๊ทธ๋Ÿฌ๋‚˜ ์œ„์™€ ๊ฐ™์ด ๊ฒŒ์ž„ ์„œ๋ฒ„๊ฐ€ SQL ์งˆ์˜ ๊ตฌ๋ฌธ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋˜์ ธ์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ณ , ๋˜ ์งˆ์˜ ๊ตฌ๋ฌธ์„ ๋˜์ง€๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š” ๊ณผ์ •์ด ์ง€์†๋˜๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ๋ชจ๋กœ ๋น„ํšจ์œจ์ ์ด๋‹ค.

  • ์งˆ์˜ ๊ตฌ๋ฌธ ๋˜์ง€๊ธฐ ํ›„ ๊ฒฐ๊ณผ๋ฐ›๊ธฐ ๊ณผ์ •์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ๋””๋ฐ”์ด์Šค ํƒ€์ž„์ด ๋ฐœ์ƒํ•œ๋‹ค.
  • ๊ฒŒ์ž„ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„ ๋„คํŠธ์›Œํฌ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ๋‹ค ๋ชจ์œผ๋ฉด ๊ฝค ๊ธด ์‹œ๊ฐ„์ด๋‹ค.

 

์ด ๋ฌธ์ œ๋Š” ์ €์žฅ ํ”„๋กœ์‹œ์ € ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ €์žฅ ํ”„๋กœ์‹œ์ €๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์— ๋ฏธ๋ฆฌ ์งˆ์˜ ๊ตฌ๋ฌธ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์—์„œ ์ง์ ‘ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒŒ์ž„ ์„œ๋ฒ„๋Š” ๊ทธ์ € ์ €์žฅ ํ”„๋กœ์‹œ์ € ์ž์ฒด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์งˆ์˜ ๊ตฌ๋ฌธ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

ํŠธ๋žœ์žญ์…˜์€ ์–ด๋–ค ๊ตฌ๋ฌธ์ด ๋ชจ๋‘ ์‹คํ–‰๋˜๋“ ์ง€ ํ•˜๋‚˜๋„ ์‹คํ–‰๋˜์ง€ ์•Š๋“ ์ง€ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ ๋ณด์žฅ๋˜๊ฒŒ ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ๊ณ„์ขŒ ์ด์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ์•„๋ž˜ ์ฝ”๋“œ ์ค‘ ์ผ๋ถ€๋งŒ ์‹คํ–‰๋œ๋‹ค๋ฉด ํฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํŠธ๋žœ์žญ์…˜์„ ์ด์šฉํ•ด ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • begin transaction ๊ตฌ๋ฌธ์€ ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘์ด๋ผ ํ•˜๋ฉฐ ๊ทธ ๋’ค์— ๋‚˜์˜ค๋Š” ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•œ ํ›„ commit ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ทธ ๊ตฌ๋ฌธ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜๊ตฌ์ ์œผ๋กœ ๋‚จ๋Š”๋‹ค.
  • ๋งŒ์•ฝ ๊ตฌ๋ฌธ๋“ค์„ ์‹คํ–‰ํ•˜๋‹ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด rollback์„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด begin transaction ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•œ ํ›„ ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ชจ๋‘ ์›์ƒ ๋ณต๊ตฌ๋  ๊ฒƒ์ด๋‹ค.
begin transaction
update UserAccount set Money=Money+100 where ID='Kang Bu Ja'
update UserAccount set Money=Money-100 where ID='Hong Gil Dong'
commit

 

 

ํŠธ๋žœ์žญ์…˜์„ ๊ฑธ๊ณ  ์•ก์„ธ์Šค ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฎคํ…์Šค๋ฅผ ์ž ๊ธˆํ•œ ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์„œ ์•ž์„  ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ทจ์†Œ๋  ๋•Œ๊นŒ์ง€ ๋ธ”๋กœํ‚น์ด ๊ฑธ๋ฆฐ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์„ ํ•  ๋•Œ๋Š” ๊ผญ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ตฌ๊ฐ„์—๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์‹ค ๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์ด ๊ทธ๋ ‡๊ฒŒ๊นŒ์ง€ ํ•„์š”ํ•˜์ง€๋Š” ์•Š๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ธ์ด๋ธŒ ๋ฐ์ดํ„ฐ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ณดํ†ต ๊ฒŒ์ž„ ์„œ๋ฒ„ ์•ˆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ชจ๋‘ ํŒ์ •์„ ๋๋‚ธ ํ›„ ๋’ค๋Šฆ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋กํ•œ๋‹ค.

 

10. ๊ฒŒ์ž„ ์„œ๋ฒ„์—์„œ ์งˆ์˜ ๊ตฌ๋ฌธ ์‹คํ–‰

๊ฒŒ์ž„ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šค ํ•˜๋ ค๋ฉด ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•œ๋‹ค. (TCP ์ปค๋„ฅ์…˜๊ณผ ์œ ์‚ฌ) ์ด๋•Œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์ด๋‚˜ ์—ฐ๊ฒฐ ์ •๋ณด ๊ตฌ์กฐ์ฒด๋ฅผ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. ์ด ์•ˆ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์˜ ์ฃผ์†Œ, ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ด๋ฆ„, ์—ฐ๊ฒฐ์— ์‚ฌ์šฉํ•  ์‚ฌ์šฉ์ž ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

DbConnection db = new DbConnection();
db.Open("server=db01.mygame.com;userid=serverbot;password=good_day_one;database=GameDB");

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉด, ์—ฐ๊ฒฐ ๊ฐ์ฒด์—์„œ ๋ช…๋ น ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์งˆ์˜ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๋ฌธ์ž์—ด๋กœ ๋„ฃ๋Š” ๊ฒฝ์šฐ
DbCommand cmd = new DbCommand(db);
cmd.Execute("insert into table1 (a,b,c) values (123,456,789)");

// ๊ฐ’์„ ๋ณ„๋„๋กœ ์ž…๋ ฅํ•˜์—ฌ ๋„ฃ๋Š” ๊ฒฝ์šฐ (์„ ํ˜ธ)
DbCommand cmd = new DbCommand(db);
cmd.Parameters[0] = 123;
cmd.Parameters[1] = 456;
cmd.Parameters[2] = 789;
cmd.Execute("insert into table1 (a,b,c) values (?,?,?)");

// ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
bCommand cmd = new DbCommand(db);
cmd.Parameters[0] = 123;
cmd.Parameters[1] = 456;
cmd.Parameters[2] = 789;
cmd.Execute("InsertRecord");

// ๊ฒฐ๊ณผ ๋ ˆ์ฝ”๋“œ ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ๊ฒฝ์šฐ
bCommand cmd = new DbCommand(db);
cmd.Parameters[0] = 123;
DbRecordset rs = cmd.Execute("select (a,b,c) from table1 where a>=?");

foreach(DbRecord r in rs)
{
    int a = r.GetField("a");
    int b = r.GetField("b");
    string c = r.GetField("c");
    ...; // ์—ฌ๊ธฐ์„œ ์–ป์€ ํ•„๋“œ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค.
}

 

์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์™„์ „ํžˆ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ํ•„๋“œ์— ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋•Œ ํ˜น์€ ๋ช…๋ น ๊ฐ์ฒด์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ๊บผ๋‚ด ์˜ฌ ๋•Œ ์ถ”๊ฐ€ ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค.

// ํ•„๋“œ์— ๊ฐ’์„ ๊บผ๋‚ผ ๊ฒฝ์šฐ
DbVariable v = r.GetField("a");
if (v.isNull() = = false)
{
    int a = v.Convert(int);
}

// ํ•„๋“œ์— ๊ฐ’์„ ๋„ฃ์„ ๊ฒฝ์šฐ
DbVariable v = new DbVariable(DbType.integer, 123);
record.SetField("a", v);
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Book/โœ Game Server' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 9์žฅ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ตฌ์กฐ (1)
  • [Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 8์žฅ NoSQL ๊ธฐ์ดˆ
  • [Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 6์žฅ ๊ฒŒ์ž„ ๋„คํŠธ์›Œํฌ ์—”์ง„ ํ”„๋ผ์šฐ๋“œ๋„ท
  • [Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 5์žฅ ๊ฒŒ์ž„ ๋„คํŠธ์›Œํ‚น
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 7์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”