๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๋ฐฑ์—”๋“œ (9)

๋‚˜์˜ ๋ชจ์–‘

043 | Layer interconnect & Class Mapping

๐ŸŽˆ DI๋ฅผ ํ†ตํ•œ ์„œ๋น„์Šค ๊ณ„์ธต ←→ API ๊ณ„์ธต ์—ฐ๋™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Service: ๋„๋ฉ”์ธ ์—…๋ฌด ์˜์—ญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค ๊ณ„์ธต์€ ๋Œ€๋ถ€๋ถ„ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. Spring Bean์œผ๋กœ ๋“ฑ๋ก Controller ํด๋ž˜์Šค์— @RestController ์ถ”๊ฐ€ Service ํด๋ž˜์Šค์— @Service ์ถ”๊ฐ€ ์ƒ์„ฑ์ž ๋ฐฉ์‹์˜ DI๋Š” ์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ์—๋Š” @Autowired ์• ๋„ˆํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ DI๊ฐ€ ์ ์šฉ๋œ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ธต๊ณผ API ๊ณ„์ธต์„ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์€ API ๊ณ„์ธต์—์„œ ๊ตฌํ˜„ํ•œ Controller ํด๋ž˜์Šค๊ฐ€ ์„œ๋น„์Šค ๊ณ„์ธต์˜ Service ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๐ŸŽˆ ๋งคํผ(Mapper)๋ฅผ ์ด์šฉํ•œ DTO ํด๋ž˜..

SEB/TIL 2022. 8. 23. 20:24
[DB] SQL vs NoSQL

๐Ÿ’™ SQL vs NoSQL SQL NoSQL ๊ธฐ๋ฐ˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ ์ €์žฅ SQL์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์— ์ €์žฅ key-value, document, wide-column, graph ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๋ฐ์ดํ„ฐ ํ˜•์‹ ํ–‰(์—ด์˜ ๋ฐ์ดํ„ฐ ํ˜•์‹)๊ณผ ์—ด(์†์„ฑ)๋กœ ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ์ง€ ์•Š์Œ ์Šคํ‚ค๋งˆ - ์Šคํ‚ค๋งˆ์— ๋งž์ถฐ ์ฝ์–ด์™€์„œ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•… ๊ฐ€๋Šฅ - ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ ์†์„ฑ๋ณ„๋กœ ์—ด(column)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด์•ผ๋จ - ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ด(schema on read) - ํ–‰ ์ถ”๊ฐ€ ์‹œ ์ฆ‰์‹œ ์ƒˆ๋กœ์šด ์—ด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ - ๊ฐœ๋ณ„ ์†์„ฑ์— ๋ชจ๋“  ์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋จ ์ฟผ๋ฆฌ ํ…Œ์ด๋ธ”์˜ ํ˜•์‹๊ณผ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ ๊ตฌ์กฐํ™” ๋˜์ง€ ์•Š์€ ์ฟผ..

WILT/DB 2022. 8. 7. 15:23
031 | RDBMS, SQL, ACID

๐Ÿ’™ SQL ๐Ÿค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•„์š”์„ฑ In-Memory ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๋ถˆ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์—†์Œ File I/O ํŒŒ์ผ์„ ์ฝ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ํ˜•ํƒœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ „์ฒด ํŒŒ์ผ์„ ์ฝ์–ด์•ผํ•จ. ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋น„ํšจ์œจ์ ์ธ ๋‹จ์ ์ด ์žˆ์Œ ๐Ÿค SQL(Structed Query Language) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด, ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ ์ข…๋ฅ˜: MySQL, Oracle, SQLite, PostgreSQL ๐Ÿค NoSQL ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ์กฐํ™”๋˜์–ด์žˆ์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ์ €์žฅ ์ข…๋ฅ˜: MongoDB ๐Ÿค ์ฟผ๋ฆฌ(Query) ์งˆ์˜๋ฌธ(์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต) ๊ธฐ์กด ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰์–ด๋กœ ํ•„ํ„ฐ๋งํ•ด์ฃผ๋Š” ๊ฒƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ..

SEB/TIL 2022. 8. 4. 20:33
024 | Data Structure - Tree, Graph

๐Ÿ’™ Tree ๐Ÿค ๊ฐœ๋… ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ ๋Œ€์ƒ ์ •๋ณด์˜ ๊ฐ ํ•ญ๋ชฉ๋“ค์„ ๊ณ„์ธต์ ์œผ๋กœ ์—ฐ๊ด€๋˜๋„๋ก ๊ตฌ์กฐํ™”์‹œํ‚ค๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๊นŠ์ด (depth) ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„ ๊ณ„์ธต์˜ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ๊นŠ์ด(depth)๋ฅผ ํ‘œํ˜„ ๋ ˆ๋ฒจ(Level) ๊ฐ™์€ ๊นŠ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์˜ ๋ฌถ์Œ ํ˜•์ œ ๋…ธ๋“œ(Sibling Node): ๊ฐ™์€ ๋ ˆ๋ฒจ์— ๋‚˜๋ž€ํžˆ ์žˆ๋Š” ๋…ธ๋“œ ๋†’์ด(Height) ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฃจํŠธ๊นŒ์ง€์˜ ๋†’์ด(height)๋ฅผ ํ‘œํ˜„ ๋ฆฌํ”„ ๋…ธ๋“œ์™€ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ๋†’์€ height ๊ฐ’์— +1ํ•œ ๊ฐ’์„ ๋†’์ด๋กœ ๊ฐ€์ง ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ์—๋Š” ๊ฐ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ 0์œผ๋กœ ๋†“์Œ ์„œ๋ธŒ ํŠธ๋ฆฌ(Sub tree) ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ root์—์„œ ๋ป—์–ด ๋‚˜์˜ค๋Š” ํฐ ํŠธ๋ฆฌ์˜ ๋‚ด๋ถ€..

SEB/TIL 2022. 7. 26. 20:49
023 | Data Structure - Stack & Queue

๐Ÿ’™ Data Structure ๐Ÿค ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ๋ž€? ๋ฐ์ดํ„ฐ: ๋ฌธ์ž, ์ˆซ์ž, ์†Œ๋ฆฌ, ๊ทธ๋ฆผ, ์˜์ƒ ๋“ฑ ์‹ค์ƒํ™œ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๋ฏธ์žˆ์–ด์ง€๋ ค๋ฉด: ๋ถ„์„ → ์ •๋ฆฌ → ํ™œ์šฉ ๋ฐ์ดํ„ฐ์˜ ์‚ฌ์šฉ: ํ•„์š” ๋ชฉ์ ์— ๋”ฐ๋ผ ํ˜•ํƒœ ๊ตฌ๋ถ„ → ๋ถ„๋ฅ˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? ์ž๋ฃŒ์˜ ํšจ์œจ์ ์ธ ์ €์žฅ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ž๋ฃŒ์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜์—ฌ ๊ตฌ์กฐํ™”ํ•œ ๊ฒƒ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜์™€ ๊ตฌ๋ถ„ ๐Ÿ’™ Stack ๐Ÿค Stack ์ •์˜ & ๊ตฌ์กฐ Stack: ์Œ“๋‹ค, ์Œ“์ด๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์Œ“๋Š” ์ž๋ฃŒ๊ตฌ์กฐ stack์— ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ: push() ๊บผ๋‚ด๊ธฐ: pop() ๐Ÿค Stack ํŠน์ง• LIFO(Last-In First-Out) - ํ›„์ž…์„ ์ถœ๊ตฌ์กฐ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๋Š” ์ œ์ผ ๋‚˜์ค‘์— ๋‚˜์˜ด ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด๊ฐ„ ํ”„๋ง๊ธ€์Šค๋Š” ์œ„์—๊บผ๊ฐ€ ๋‹ค ๋จนํžˆ๊ธฐ ์ „๊นŒ์ง€ ๋‚˜์˜ฌ ์ˆ˜ ์—†์Œ public cl..

SEB/TIL 2022. 7. 25. 23:16
[ํšŒ๊ณ ] Section1 ํ†บ์•„๋ณด๊ธฐ

ํ†บ์•„๋ณด๋‹ค๋Š” ์ƒ…์ƒ…์ด ํ†บ์•„ ๊ฐ€๋ฉด์„œ ์‚ดํ”ผ๋‹ค ๋ผ๋Š” ๋œป์˜ ์ˆœ ์šฐ๋ฆฌ๋ง์ด๋‹ค. ์–ด๋Š์ƒˆ ํ•œ ๋‹ฌ ... ๐Ÿซ  Section1์„ ๋งˆ์น˜๋ฉฐ, ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ๋ฒˆ์ฏค์€ ํ•œ๋‹ค!๋Š” ํšŒ๊ณ !๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํšŒ๊ณ ! ๋ง๋งŒ ๋“ค์œผ๋ฉด ๊ฑฐ์ฐฝํ•˜์ง€๋งŒ, ์ง€๋‚œ ํ•œ ๋‹ฌ์„ ๋˜๋Œ์•„๋ณด๊ณ  ์ž๊ธฐ ์„ฑ์ฐฐ์„ ํ•˜๊ณ  ๋‚˜์•„๊ฐ€ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋กํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. Section1. ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ์›œ์—…์˜ ์‹œ๊ฐ„์ด์—ˆ๊ฒ ์ง€๋งŒ, ๋‚˜์—๊ฒŒ๋Š” ๋‚ด๊ฐ€ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๋“ค์€ ์‚ฌ์‹ค์€ ์•Œ๊ณ  ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค์‹œ๊ธˆ ๋ผˆ์ €๋ฆฌ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์‹œ๊ฐ„์ด์—ˆ๋‹ค. ๋งˆ์น˜ ์‚ฌ๋ง‰์— ์˜ค์•„์‹œ์Šค๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ๐Ÿ๏ธ ์—†์—ˆ๋˜ ๋Š๋‚Œ๐Ÿ˜จ์ด๋ž„๊นŒ. ์ž๊ดด๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋ญ˜ ํ•œ๊ฑฐ์ง€. ํ˜„ํƒ€๊ฐ€ ์™”์ง€๋งŒ ์ฒ˜์Œ ๋ฐฐ์› ์„ ๋•Œ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด ๊ฐ€๋Šฅ ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์กŒ๊ธฐ์— ๋งˆ์Œ์„ ๋‹ค์žก์•„๋ณธ๋‹ค. ๐Ÿ’Ÿ ๋ถ€ํŠธ์บ ํ”„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋‹ค์ง์„ ํ–ˆ..

SEB/ํšŒ๊ณ  2022. 7. 20. 20:46