๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’Ž48

[mongoDB] ์ธ๋ฑ์Šค(Index) 1) ์ธ๋ฑ์Šค๋ž€? 1-1) ์ธ๋ฑ์Šค์˜ ๊ตฌ๋ถ„ 1-1-1) ์—ญํ•  1-1-2) ์ €์žฅ ๋ฐฉ์‹ 1-1-3) ์ค‘๋ณต ํ—ˆ์šฉ ์—ฌ๋ถ€ 1-1-4) ๊ธฐ๋Šฅ 1-2) ์ธ๋ฑ์Šค ๋‚ด๋ถ€ 1-3) ์ธ๋ฑ์Šค ํ‚ค ์—”ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ 2) ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• 2-1) ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ” 2-2) ์ธ๋ฑ์Šค ํ”„๋ฆฌํ”ฝ์Šค(Prefix) ์Šค์บ” 2-3) ์ปค๋ฒ„๋ง ์ธ๋ฑ์Šค 2-4) ์ธ๋ฑ์Šค ํ’€ ์Šค์บ” 2-5) ์ปดํŒŒ์šด๋“œ ์ธ๋ฑ์Šค (Compound Index) 2-5-1) ๋ณตํ•ฉ ํ•„๋“œ ์ธ๋ฑ์Šค 2-6) MongoDB์˜ Hash Index 2-7) ๋ฉ€ํ‹ฐ ํ‚ค ์ธ๋ฑ์Šค (Multi key Index) 2-7-1) ๋ฉ€ํ‹ฐ ํ‚ค ์ธ๋ฑ์Šค์˜ ์ •๋ ฌ 2-8) Full Text Search Index (์ „๋ฌธ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค) 2-8-1) N-Gram ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ณผ N-Gram์˜ ์žฅ๋‹จ์  ์ฐธ๊ณ  ์ž๋ฃŒ .. 2022. 7. 18.
[mongoDB] ์ƒค๋”ฉ(Sharding) 1) ์ƒค๋”ฉ(Sharding)์ด๋ž€? 1.1) ์ƒค๋”ฉ์˜ ํ•„์š”์„ฑ 1.2) ์ƒค๋”ฉ์˜ ์ข…๋ฅ˜ 2) MongoDB ์ƒค๋”ฉ ์•„ํ‚คํ…์ฒ˜ 2.1) ์ปจํ”ผ๊ทธ ์„œ๋ฒ„ ์ปจํ”ผ๊ทธ ์„œ๋ฒ„์˜ ๋ณต์ œ ๋ฐฉ์‹ 2.2) ๋ผ์šฐํ„ฐ ์ฃผ์š” ์—ญํ•  ์ฟผ๋ฆฌ ๋ถ„์‚ฐ ๋ฐฐํฌ 3) ์ƒค๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒญํฌ 3.1) ๋ ˆ์ธ์ง€ ์ƒค๋”ฉ(Range Sharding) 3.2) ํ•ด์‹œ ์ƒค๋”ฉ(Hashed Sharding) ์ œ์•ฝ ์‚ฌํ•ญ 3.3) ์ง€์—ญ ๊ธฐ๋ฐ˜ ์ƒค๋”ฉ(Zone Sharding) ์‚ฌ์šฉ ๋ชฉ์  4) ํ”„๋ผ์ด๋จธ๋ฆฌ ์ƒค๋“œ 5) ์ฒญํฌ ๋ฐธ๋Ÿฐ์‹ฑ 5.1) ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐธ๋Ÿฐ์„œ 5.2) ์ฒญํฌ ์Šคํ”Œ๋ฆฟ(Chunk split) 6) ์ƒค๋”ฉ์œผ๋กœ ์ธํ•œ ์ œ์•ฝ 6.1) ํŠธ๋žœ์žญ์…˜ 6.2) ์ƒค๋”ฉ๊ณผ ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค 6.3) ์กฐ์ธ๊ณผ ๊ทธ๋ž˜ํ”„ ์ฟผ๋ฆฌ ์ฐธ๊ณ ์ž๋ฃŒ 1) ์ƒค๋”ฉ(Sharding)์ด๋ž€? ์ƒค๋”ฉ์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐํ•ด์„œ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌ.. 2022. 7. 18.
[mongoDB] WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ 1) ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ํŠน์„ฑ ๋น„๊ต 2) ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ํ˜ผํ•ฉ ์‚ฌ์šฉ 3) WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ 4) WiredTiger ์Šคํ† ๋ฆฌ์ง€์˜ ์ €์žฅ ๋ฐฉ์‹ 5) ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ตฌ์กฐ 6) WiredTiger์˜ ๋‚ด๋ถ€ ์ž‘๋™ ๋ฐฉ์‹ ๊ณต์œ  ์บ์‹œ ํ•˜์ž๋“œ ํฌ์ธํ„ฐ(Hazard Pointer) ์Šคํ‚ต ๋ฆฌ์ŠคํŠธ(Skip-List) ์บ์‹œ ์ด๋น…์…˜(Cache Eviction) Checkpoint MVCC ๋ฐ์ดํ„ฐ ๋ธ”๋ก(ํŽ˜์ด์ง€) ์šด์˜์ฒด์ œ ์บ์‹œ(ํŽ˜์ด์ง€ ์บ์‹œ) ์••์ถ• ์•”ํ˜ธํ™” ์ฐธ๊ณ ์ž๋ฃŒ 1) ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ํด๋ผ์ด์–ธํŠธ ๋“œ๋ผ์ด๋ฒ„ (Java, Python, C/C++, Go, Spark, OGG ... ) โ†• ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ (Wire Protocol) ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ๊ธฐ, ์ƒค๋“œ ๊ด€๋ฆฌ์ž, ๋ณด์•ˆ ๊ด€๋ฆฌ์ž, ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งค๋‹ˆ์ € ์Šคํ† ๋ฆฌ์ง€ ์—”.. 2022. 7. 15.
[JPA] ์ฆ‰์‹œ ๋กœ๋”ฉ, ์ง€์—ฐ ๋กœ๋”ฉ | FetchType.EAGER, FetchType.LAZY ์ฆ‰์‹œ ๋กœ๋”ฉ FetchType.EAGER ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ฆ‰์‹œ ์กฐํšŒํ•œ๋‹ค. ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด SQL ์กฐ์ธ์„ ์‚ฌ์šฉํ•ด์„œ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•œ๋‹ค. ์ฆ‰์‹œ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด @ManyToOne์˜ fecth ์†์„ฑ์„ FetchType.EAGER๋กœ ์ง€์ •ํ•œ๋‹ค. @ManyToOne(fetch = FetchType.EAGER) JPA ๊ตฌํ˜„์ฒด๋Š” ์ฆ‰์‹œ ๋กœ๋”ฉ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•˜๋ฉด ์กฐ์ธ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด SQL ์กฐ์ธ์„ ์‚ฌ์šฉํ•ด์„œ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•œ๋‹ค. ์ฃผ์˜์  ์ปฌ๋ ‰์…˜์„ ํ•˜๋‚˜ ์ด์ƒ ์ฆ‰์‹œ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ปฌ๋ ‰์…˜๊ณผ ์กฐ์ธํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๋กœ ๋ณด๋ฉด ์ผ๋Œ€๋‹ค ์กฐ์ธ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, A ํ…Œ์ด๋ธ”์„ N, M ๋‘ ํ…Œ์ด๋ธ”๊ณผ ์ผ๋Œ€๋‹ค ์กฐ์ธํ•˜๋ฉด SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ N*M์ด ๋˜๋ฉด์„œ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ.. 2021. 8. 31.
ํด๋ผ์šฐ๋“œ๋ฅผ ์ œ์–ดํ•˜๋Š” API์˜ ๋™์ž‘ ๋ฐฉ์‹ ๋ชฉ์ฐจ 3์žฅ API๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์›น ๊ธฐ์ˆ  ๋ฐฐ๊ฒฝ ์ง€์‹ HTTP ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ๊ณผ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… SOA ์›น API์˜ ๊ตฌ์„ฑ ์š”์†Œ ๋ฆฌ์†Œ์Šค ์•ก์…˜ ๋„๋ฉ”์ธ DNS ์—”๋“œํฌ์ธํŠธ ROA ํด๋ผ์šฐ๋“œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค API CLI SDK ์ฝ˜์†” 4์žฅ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„ vs ์„œ๋ฒ„ ๊ฐ€์ƒํ™” ์„œ๋ฒ„ ๊ฐ€์ƒํ™” vs ํด๋ผ์šฐ๋“œ 3์žฅ API(Application Program Interface, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ ์ธํ„ฐํŽ˜์ด์Šค) ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์•ฝ์†๋œ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ๊ทœ์•ฝ์„ ์˜๋ฏธํ•œ๋‹ค. API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜‘๊ฐ™์ด ๋ฐ˜๋ณต๋˜๋Š” ์†Œ์Šค ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์—†์• ๋ฉด์„œ ํ‘œ์ค€ํ™”๋ฅผ ๊พ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ์˜ฌ๋ฆฌ๋Š” ํšจ๊ณผ๋ฅผ ๋‚ด๊ธฐ๋„ ํ•œ๋‹ค. ์›น API ํด๋ผ์šฐ๋“œ์—์„œ๋Š” ์›น API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ.. 2021. 8. 26.
[Java] GC ๋ฐฉ์‹ JDK 5.0์ด์ƒ์—์„œ ์ง€์›ํ•˜๋Š” GC ๋ฐฉ์‹์—๋Š” ๋„ค๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. WAS๋‚˜ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜ํ–‰์‹œ ์˜ต์…˜์„ ์ง€์ •ํ•˜์—ฌ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. 4๊ฐ€์ง€ GC(๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ) ๋ฐฉ์‹ Serial GC (์‹œ๋ฆฌ์–ผ ์ฝœ๋ ‰ํ„ฐ) Parallel GC (๋ณ‘๋ ฌ ์ฝœ๋ ‰ํ„ฐ) Parallel Compacting GC (Parallel Old GC, ๋ณ‘๋ ฌ ์ปดํŒฉํŒ… ์ฝœ๋ ‰ํ„ฐ) Concurrent Mark-Sweep GC (CMS ์ฝœ๋ ‰ํ„ฐ) Garbage First GC (G1 GC) JVM GC ๋™์ž‘ ์ˆœ์„œ ์š”์•ฝํ•˜๋ฉด GC ๋™์ž‘์€ ์•„๋ž˜ 3 STEP์œผ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค. Heap ์˜์—ญ์— ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค. GC Root์—์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ฐธ์กฐ๊ฐ’์„ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋“ค์— Markํ•˜๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ•œ๋‹ค. Mark ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด ์ฆ‰, .. 2021. 8. 25.
[Java] ์ถ”์ƒ ํด๋ž˜์Šค vs ์ธํ„ฐํŽ˜์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„ค๊ณ„๋„ ๋˜๋Š” ๋ช…์„ธ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๊ฐ€ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ์ด๊ณ , ์ผ๋ฐ˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. ์ž๋ฐ” 8 ๋ถ€ํ„ฐ default method, static method๋„ ์ •์˜ ๊ฐ€๋Šฅ default ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅ. ๋˜ํ•œ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” default๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ณ€๊ฒฝ์ด ๋˜๋ฉด, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋“ค์ด ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด ๋†“์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค. static ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅ ์ธํ„ฐํŽ˜์ด์Šค์— static ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•จ์œผ๋กœ์จ, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์„ฑ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฐ˜.. 2021. 8. 18.
[Java] Java SE, Java EE, Java ME ์ž๋ฐ” ๋ฐฐํฌํŒ Java SE, Java EE, Java ME ์ฐจ์ด Java SE(Standard Edition) ์ž๋ฐ” ์Šคํƒ ๋‹ค๋“œ ์—๋””์…˜์€ ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ ์“ฐ์ด๋Š” ์ž๋ฐ” API ์ง‘ํ•ฉ์ฒด(ํŒจํ‚ค์ง€)์ด๋‹ค. Java SE๋Š” Java Software Development Kit(SDK)์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค. ๋Œ€์ฒด๋กœ ์ฒ˜์Œ์— ์ž๋ฐ”๊ฐœ๋ฐœ์— ์ž…๋ฌธํ•  ๋•Œ ์ ‘ํ•œ๋‹ค. JAVA SE API Applet AWT RMI JDBC Swing Collections Xml binding JavaFX (Merged to Java SE 8) Java 8 Collections Streaming API Java 9 Reactive Streams API Java 9 HTTP/2 API Java EE(Enterprise Edition) Java SE ์ŠคํŽ™๊ธฐ๋ฐ˜์œผ๋กœ ์ž.. 2021. 8. 18.
[Java] ๋ณ€์ˆ˜์˜ scope์™€ static scope ํ”„๋กœ๊ทธ๋žจ์ƒ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋“ค์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„๋ผ๊ณ  ํ•œ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ธ”๋Ÿญ์ด ๊ทธ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ๋ฒ”์œ„์ด๋‹ค. public class ValableScopeExam{ int globalScope = 10; // ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ public void scopeTest(int value){ int localScope = 10; System.out.println(globalScope); System.out.println(localScope); System.out.println(value); } } ํด๋ž˜์Šค์˜ ์†์„ฑ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ globalScope ์˜ ์‚ฌ์šฉ ๋ฒ”์œ„๋Š” ํด๋ž˜์Šค ์ „์ฒด ์ด๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ int value ๋Š” ๋ธ”๋Ÿญ ๋ฐ”๊นฅ์— ์กด์žฌํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์—.. 2021. 8. 11.