๐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. ์ด์ 1 2 3 4 ยทยทยท 6 ๋ค์