Database/SQL
์ด๋ฒ์๋ ์ํํธ ํ์ฑ๊ณผ ํ๋ ํ์ฑ์ ์ฐจ์ด์ ์์๋ณด๊ธฐ. ์ํํธ ํ์ฑ vs ํ๋ ํ์ฑ์ฌ์ฉ์๊ฐ SQL๋ฌธ์ ์ ๋ฌํ๋ฉด DBMS๋ SQL์ ํ์ฑํ๊ณ ํด๋น SQL์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ์กด์ฌํ๋์ง๋ถํฐ ํ์ธ์บ์์์ ์ฐพ์ผ๋ฉด ๊ณง๋ฐ๋ก ์คํ ๋จ๊ณ๋ก ๋์ด๊ฐ์ง๋ง, ์ฐพ์ง ๋ชปํ๋ฉด ์ต์ ํ ๋จ๊ณ๋ฅผ ๊ฑฐ์นจโจ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์๋ ?SQL ํ์ฑ, ์ต์ ํ, ๋ก์ฐ ์์ค ์์ฑ ๊ณผ์ ์ ๊ฑฐ์ณ ์์ฑํ ๋ด๋ถ ํ๋ก์์ ๋ฅผ ๋ฐ๋ณต ์ฌ์ฌ์ฉํ ์ ์๋๋ก ์บ์ฑํด ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก, SGA ๊ตฌ์ฑ ์์์โจ SGA (System Global Area) ๋ ?์๋ฒ ํ๋ก์ธ์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ๊ณตํต์ผ๋ก ์ก์ธ์คํ๋ ๋ฐ์ดํฐ์ ์ ์ด ๊ตฌ์กฐ๋ฅผ ์บ์ฑํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๐น ์ํํธ ํ์ฑSQL์ ์บ์์์ ์ฐพ์ ๊ณง๋ฐ๋ก ์คํ๋จ๊ณ๋ก ๋์ด๊ฐ๋ ๊ฒ ๐น ํ๋ ํ์ฑ์บ์์์ ์ฐพ๋ ๊ฑธ ์คํจํด ์ต์ ํ..
Database/SQL
1. ํต๊ณ ์ ๋ณด์ ๋น์ฉ ๊ณ์ฐ ์๋ฆฌ๋ณต์กํ ๋น์ฉ ๊ณ์ฐ ์๋ฆฌ๊น์ง ํ์ตํ ํ์๋ ์์ง๋ง, ์ตํฐ๋ง์ด์ ๊ฐ ํต๊ณ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๋์ง๋ ๊ฐ๋ตํ๊ฒ ์์์ผํ๋ฏ๋ก ์ ๋ฆฌํจ ์ ํ๋์ ์นด๋๋๋ฆฌํฐ, ํต๊ณ์ ๋ณด์ ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ํญ๋ชฉ๋ค์ด ์๋์ง ํ์ธ์ตํฐ๋ง์ด์ ๊ฐ ํต๊ณ์ ๋ณด๋ฅผ ์ด์ฉํด ๋น์ฉ์ ๊ณ์ฐํ๋ ์๋ฆฌ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌ ์ ํ๋์ ์นด๋๋๋ฆฌํฐโณ๏ธ ์ ํ๋ (Selectivity) ์ ์ฒด ๋ ์ฝ๋ ์ค์์ ์กฐ๊ฑด์ ์ ์ํด ์ ํ๋๋ ๋ ์ฝ๋ ๋น์จ ๐ ์ ํ๋ = 1 / NDV* * NDV (Number of Distinct Values) : ์ปฌ๋ผ ๊ฐ ์ข
๋ฅ ๊ฐ์ โณ๏ธ ์นด๋๋๋ฆฌํฐ (Cardinality) ์ ์ฒด ๋ ์ฝ๋ ์ค์์ ์กฐ๊ฑด์ ์ ์ํด ์ ํ๋๋ ๋ ์ฝ๋ ๊ฐ์ ๐ ์นด๋๋๋ฆฌํฐ = ์ด ๋ก์ฐ ์ x ์ ํ๋ = ์ด ๋ก์ฐ ์ / NDV ๐ง ์๋ฅผ ๋ค์ด, ์ํ ..
Database/SQL
1์ฅ์์๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ๊ธฐ ์ ์ ์ตํฐ๋ง์ด์ ๊ฐ SQL์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง, ์๋ฒ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฝ๊ณ ์ ์ฅํ๋์ง๋ฅผ ์์๋ณด์. 1. SQL ํ์ฑ๊ณผ ์ต์ ํโณ๏ธ SQL ํ์ฑ ํ์ฑ ํธ๋ฆฌ ์์ฑ : SQL๋ฌธ์ ์ด๋ฃจ๋ ๊ฐ๋ณ ๊ตฌ์ฑ ์์๋ฅผ ๋ถ์ํด์ ํ์ฑ ํธ๋ฆฌ ์์ฑ Syntax ์ฒดํฌ : ๋ฌธ๋ฒ์ ์ค๋ฅ ํ์ธ ๐ ์ฌ์ฉํ ์ ์๋ ํค์๋ ์ฌ์ฉ ๋๋ ์์, ๋๋ฝ๋ ํค์๋ ํ์ธSemantic ์ฒดํฌ : ์๋ฏธ์ ์ค๋ฅ ํ์ธ ๐ ์กด์ฌํ์ง ์๋ ํ
์ด๋ธ ๋๋ ์ปฌ๋ผ ์ฌ์ฉ์ฌ๋ถ, ์ฌ์ฉํ ์ค๋ธ์ ํธ์ ๋ํ ๊ถํ ํ์ธ โณ๏ธ SQL ์ต์ ํ ํ์ฑ ๋ค์ ๋จ๊ณ๋ก์ DBMS ๋ด๋ถ์์ ํ๋ก์์ ๋ฅผ ์์ฑํ๊ณ ์ปดํ์ผํด์ ์คํ ๊ฐ๋ฅํ ์ํ๋ก ๋ง๋๋ ์ ๊ณผ์ ๐ ์ตํฐ๋ง์ด์ ๊ฐ ์ญํ ์ํ์ตํฐ๋ง์ด์ ๋ ๋ฏธ๋ฆฌ ์์งํ ์์คํ
๋ฐ ์ค๋ธ์ ํธ ํต๊ณ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ค..
Database/SQL
1. ๊ฐ์ ๋น๊ต์ ๋์ฒด (CASE WHEN ... THEN ... END)CASE WHEN์ ํจ์๊ฐ ์๋๋ผ SQL๊ตฌ๋ฌธํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ ๊ณตํ๋ SWITCH ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ ์ญํ CASE๋ก ์์ํ๊ณ , END๋ก ๋๋์ผ ํจWHEN ... THEN ... ์ ํ์ํ ๋งํผ ๋ฐ๋ณตํด์ ์ฌ์ฉ๋จ์ํ ์ฝ๋๊ฐ์ ์ค์ ๊ฐ์ผ๋ก ๋ณํํ๊ฑฐ๋ ํน์ ์ผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด์ ์ธ์ง ์ดํ์ธ์ง ๋น๊ตํด ์ค๋ช
์ ๋ถ์ด๋ ์ฉ๋๋ก ์ฌ์ฉCASE WHEN ์ ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง THEN ์ดํ์ ํํ์์ด ์คํ๋จ๐น Marketing(d001) ๋ถ์์ ์์๋ ์ ์ด ์๋ ๋ชจ๋ ์ฌ์์ ๊ฐ์ฅ ์ต๊ทผ ๊ธ์ฌ ์กฐํSELECT de.dept_no, e.first_name, e.gender, (SELECT s.salary FROM salaries s WHERE ..
Database/SQL
1. NULL ๊ฐ ์ฒ๋ฆฌโณ๏ธ NULL ๊ฐ ๋น๊ต ๋ฐ ๋์ฒด (IFNULL, ISNULL) ๐ท IFNULL()์ปฌ๋ผ์ด๋ ํํ์์ ๊ฐ์ด NULL์ธ์ง ๋น๊ตํ๊ณ , NUnLL์ด๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์ฒด์ฒซ ๋ฒ์งธ ์ธ์๋ NULL์ธ์ง ์๋์ง ๋น๊ตํ๋ ค๋ ์ปฌ๋ผ์ด๋ ํํ์๋ ๋ฒ์งธ ์ธ์๋ ์ฒซ ๋ฒ์งธ ์ธ์์ ๊ฐ์ด NULL์ผ ๊ฒฝ์ฐ ๋์ฒดํ ๊ฐ์ด๋ ์ปฌ๋ผ ์ค์ ํจ์์ ๋ฐํ๊ฐ์ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ NULL์ด ์๋๋ฉด ์ฒซ ๋ฒ์งธ ์ธ์์ ๊ฐ์, ์ฒซ ๋ฒ์งธ ์ธ์์ ๊ฐ์ด NULL์ด๋ฉด ๋ ๋ฒ์งธ ์ธ์์ ๊ฐ ๋ฐํ ๐ท ISNULL()์ธ์๋ก ์ ๋ฌํ ํํ์์ด๋ ์ปฌ๋ผ์ ๊ฐ์ด NULL์ธ์ง ์๋์ง ๋น๊ตNULL์ด๋ฉด TRUE(1), NULL์ด ์๋๋ฉด FALSE(0) ๋ฐํ 2. ๋ ์ง ๋ฐ ์๊ฐ ์ฒ๋ฆฌโณ๏ธ ํ์ฌ ์๊ฐ ์กฐํ (NOW, SYSDATE) ๐ท NOW()ํ๋์ SQL์์ ๊ฐ..
Database/SQL
์ฟผ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ์ํ๋๊ฒ ํ๋ ค๋ฉด DB ์๋ฒ์์ ์ฟผ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์์ฒญ์ ์ฒ๋ฆฌํ ์ง ์์ธกํ ์ ์์ด์ผ ํ๋ค.๊ทธ๋ฌ๋ฏ๋ก SQL ์์ฑ ๋ฐฉ๋ฒ์ด๋ ๊ท์น, ๋ด๋ถ์ ์ธ ์ฒ๋ฆฌ๋ฐฉ์(์ตํฐ๋ง์ด์ )์ ๋ํ ์ง์์ด ํ์ํ๋ค. ์ด ์ฑํฐ์์๋ ์ฟผ๋ฆฌ์ ํจํด๋ณ๋ก ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง์ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์๋นํ ์ค์ผ ์ ์๋ ์ ์ฉํ ์ฟผ๋ฆฌ ํจํด์ ๋ค๋ฃฌ๋ค. 1. ์ฟผ๋ฆฌ ์์ฑ๊ณผ ์ฐ๊ด๋ ์์คํ
๋ณ์โณ๏ธ SQL ๋ชจ๋ sql_mode๋ผ๋ ์์คํ
์ค์ ์๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ด ๋์์ ์ค์ ๋ ์ ์๋ค.โ MySQL ์๋ฒ์ ์ต์ํ์ง ์๋ค๋ฉด sql_mode ์์คํ
๋ณ์๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์์ฐธ๊ณ ๋ก MySQL 8.0 ์๋ฒ์ sql_mode ๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค.- ONLY_FULL_GROUP_BY- STRICT_TRANS_TABLES- N..
Spring/Spring WebFlux
Sequence ๋ณํ Operatorโณ๏ธ mapupstream์์ emit๋ ๋ฐ์ดํฐ๋ฅผ mapper function์ ์ฌ์ฉํด ๋ณํํ ํ, downstream์ผ๋ก emitmap() operator ๋ด๋ถ์์ ์๋ฌ ๋ฐ์ ์ sequence๊ฐ ์ข
๋ฃ๋์ง ์๊ณ ๊ณ์ ์งํ๋๋๋ก ํ๋ ๊ธฐ๋ฅ ์ง์ Mono mono = Mono.just("Reactor") .map(String::toUpperCase);mono.subscribe(System.out::println); // ์ถ๋ ฅ: REACTOR โณ๏ธ flatMapupstream์์ emit๋ ๋ฐ์ดํฐ๊ฐ Inner Sequence์์ ํํํ ์์
์ ๊ฑฐ์น๋ฉด์ ํ๋์ Sequence๋ก ๋ณํฉ๋์ด downstream์ผ๋ก emitpublic class Example { public..
Spring/Spring WebFlux
Spring WebFlux ๊ฐ์Spring 5.0๋ถํฐ ์ง์ํ๋ ๋ฆฌ์กํฐ๋ธ ์น ํ๋ ์์ํฌ๋ก, ์ ์ ์์ ์ค๋ ๋๋ก ๋๋์ ์์ฒญ์ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋น๋๊ธฐ Non-Blocking I/O ๋ฐฉ์์ ์ฌ์ฉํ๋ค. Spring WebFlux ๊ธฐ์ ์คํ โณ๏ธ Spring MVC์ Spring WebFlux ๊ธฐ์ ์คํ ๋น๊ต ๐ท ์๋ฒSpring MVC์๋ธ๋ฆฟ ๊ธฐ๋ฐ์ ํ๋ ์์ํฌApache Tomcat๊ฐ์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์์ Blocking I/O ๋ฐฉ์์ผ๋ก ๋์Spring WebFluxNon-Blocking I/O ๋ฐฉ์์ผ๋ก ๋์ํ๋ Netty ๋ฑ์ ์๋ฒ ์์ง์์ ๋์ ๐ท ์๋ฒ APISpring MVC์๋ธ๋ฆฟ API ์ฌ์ฉSpring WebFlux Jetty๋ Undertow ๊ฐ์ ์๋ฒ ์์ง์์ ์ง์ํ๋ ๋ฆฌ์กํฐ๋ธ ์ค..