[μŠ€ν”„λ§ DB 1편] - 5. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° ꡬ쑰와 DB μ„Έμ…˜
Β·
Spring/Spring DB
λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° ꡬ쑰 μ‚¬μš©μžλŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„(WAS)λ‚˜ DB μ ‘κ·Ό 툴 같은 ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‚¬μš©ν•΄μ„œ λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ— μ ‘κ·Όν•  수 μžˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ— 연결을 μš”μ²­ν•˜κ³  컀λ„₯μ…˜μ„ 맺게 λœλ‹€. μ΄λ•Œ λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„λŠ” 내뢀에 μ„Έμ…˜μ΄λΌλŠ” 것을 λ§Œλ“ λ‹€. 그리고 μ•žμœΌλ‘œ ν•΄λ‹Ή 컀λ„₯μ…˜μ„ ν†΅ν•œ λͺ¨λ“  μš”μ²­μ€ 이 μ„Έμ…˜μ„ ν†΅ν•΄μ„œ μ‹€ν–‰ν•˜κ²Œ λœλ‹€. Database Session λ°μ΄ν„°λ² μ΄μŠ€ 접속을 μ‹œμž‘μœΌλ‘œ, μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰ν•œ ν›„ 접속 μ’…λ£ŒκΉŒμ§€μ˜ 전체 기간을 μ˜λ―Έν•œλ‹€. μ„Έμ…˜ μ•ˆμ—λŠ” μ—¬λŸ¬κ°œμ˜ νŠΈλžœμž­μ…˜μ΄ μ‘΄μž¬ν• μˆ˜ 있으며(ν•˜λ‚˜ μ΄μƒμ˜), 일반적으둜 λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ—¬λŸ¬ κ³³μ—μ„œ λ™μ‹œμ— 접근이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— λ§Žμ€ μ„Έμ…˜μ΄ λ™μ‹œμ— μ—°κ²°λ μˆ˜ μžˆλ‹€. μ„Έμ…˜μ€ 데이터가 λ³€κ²½, μ‚­μ œκ°€ ν™•μ •λ λ•ŒκΉŒμ§€ ν•΄λ‹Ή 데이터 μ‘°μž‘μ„ λΆ„λ¦¬μ²˜λ¦¬..
[μŠ€ν”„λ§ DB 1편] - 4. νŠΈλžœμž­μ…˜
Β·
Spring/Spring DB
데이터λ₯Ό μ €μž₯ν•  λ•Œ λ‹¨μˆœνžˆ νŒŒμΌμ— μ €μž₯해도 λ˜λŠ”λ°, λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ? μ—¬λŸ¬κ°€μ§€ μ΄μœ κ°€ μžˆμ§€λ§Œ, κ°€μž₯ λŒ€ν‘œμ μΈ μ΄μœ λŠ” λ°”λ‘œ λ°μ΄ν„°λ² μ΄μŠ€λŠ” νŠΈλžœμž­μ…˜μ΄λΌλŠ” κ°œλ…μ„ μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. νŠΈλžœμž­μ…˜ νŠΈλžœμž­μ…˜μ€ ν•˜λ‚˜μ˜ 거래λ₯Ό μ•ˆμ „ν•˜κ²Œ μ²˜λ¦¬ν•˜λ„λ‘ 보μž₯ν•΄μ£ΌλŠ” 것을 λœ»ν•œλ‹€. μ˜ˆμ‹œ ) 5000원 κ³„μ’Œμ΄μ²΄ 1. A의 μž”κ³ λ₯Ό 5000원 κ°μ†Œ 2. B의 μž”κ³ λ₯Ό 5000원 증가 κ³„μ’Œμ΄μ²΄λΌλŠ” κ±°λž˜λŠ” μ΄λ ‡κ²Œ 2가지 μž‘μ—…μ΄ ν•©μ³μ Έμ„œ ν•˜λ‚˜μ˜ μž‘μ—…μ²˜λŸΌ λ™μž‘ν•΄μ•Ό ν•œλ‹€. λ§Œμ•½ 1λ²ˆμ€ μ„±κ³΅ν–ˆλŠ”λ° 2λ²ˆμ—μ„œ μ‹œμŠ€ν…œμ— λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ κ³„μ’Œμ΄μ²΄λŠ” μ‹€νŒ¨ν•˜κ³ , A의 μž”κ³ λ§Œ 5000원 κ°μ†Œν•˜λŠ” μ‹¬κ°ν•œ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€. λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ œκ³΅ν•˜λŠ” νŠΈλžœμž­μ…˜ κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ 1,2 λ‘˜λ‹€ ν•¨κ»˜ 성곡해야 μ €μž₯ν•˜κ³ , 쀑간에 ν•˜λ‚˜λΌλ„ μ‹€νŒ¨ν•˜λ©΄ 거래 μ „..
[SQLD] 4. SQL κΈ°λ³Έ - 2
Β·
자격증/SQLD
νŠΈλžœμž­μ…˜ μ›μžμ„±(atomicity) : νŠΈλžœμž­μ…˜μ—μ„œ μ •μ˜λœ 연산듀은 λͺ¨λ‘ μ„±κ³΅μ μœΌλ‘œ μ‹€ν–‰λ˜λ˜μ§€ μ•„λ‹ˆλ©΄ μ „ν˜€ μ‹€ν–‰λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ 남아 μžˆμ–΄μ•Ό ν•œλ‹€. (All or Nothing) 일관성(consistency) : νŠΈλžœμž­μ…˜μ΄ μ‹€ν–‰ 되기 μ „μ˜ λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μš©μ΄ 잘λͺ» λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄ νŠΈλžœμž­μ…˜μ΄ μ‹€ν–‰λœ 이후에도 λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ‚΄μš©μ— 잘λͺ»μ΄ 있으면 μ•ˆλœλ‹€. 고립성(isolation) : νŠΈλžœμž­μ…˜μ΄ μ‹€ν–‰λ˜λŠ” 도쀑에 λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ˜ 영ν–₯을 λ°›μ•„ 잘λͺ»λœ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄μ„œλŠ” μ•ˆλœλ‹€. 지속성(durability) : νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λ˜λ©΄ κ·Έ νŠΈλžœμž­μ…˜μ΄ κ°±μ‹ ν•œ λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ‚΄μš©μ€ 영ꡬ적으둜 μ €μž₯λœλ‹€. 격리성(isolation)으둜 인해 λ‚˜νƒ€λ‚  수 μžˆλŠ” 문제점 Dirty Read λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ— μ˜ν•΄ μˆ˜μ •λμ§€λ§Œ ..
[μŠ€ν”„λ§ DB 1편] - 3. DataSource 이해
Β·
Spring/Spring DB
DataSource 이해 컀λ„₯μ…˜μ„ μ–»λŠ” 방법은 μ•žμ„œ ν•™μŠ΅ν•œ JDBC DriverManager λ₯Ό 직접 μ‚¬μš©ν•˜κ±°λ‚˜, 컀λ„₯μ…˜ 풀을 μ‚¬μš©ν•˜λŠ” λ“± λ‹€μ–‘ν•œ 방법이 μ‘΄μž¬ν•œλ‹€. DriverManagerλ₯Ό 톡해 컀λ„₯μ…˜ νšλ“ν•˜λ‹€κ°€ 컀λ„₯μ…˜ ν’€λ‘œ λ³€κ²½μ‹œ 문제 μš°λ¦¬κ°€ μ•žμ„œ JDBC둜 κ°œλ°œν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 처럼 DriverManager λ₯Ό ν†΅ν•΄μ„œ 컀λ„₯μ…˜μ„ νšλ“ν•˜λ‹€κ°€, 컀λ„₯μ…˜ 풀을 μ‚¬μš©ν•˜λŠ” λ°©λ²•μœΌλ‘œ λ³€κ²½ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ? 예λ₯Ό λ“€μ–΄μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œμ§μ—μ„œ DriverManager λ₯Ό μ‚¬μš©ν•΄μ„œ 컀λ„₯μ…˜μ„ νšλ“ν•˜λ‹€κ°€ HikariCP 같은 컀λ„₯μ…˜ 풀을 μ‚¬μš©ν•˜λ„λ‘ λ³€κ²½ν•˜λ©΄ 컀λ„₯μ…˜μ„ νšλ“ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ„ ν•¨κ»˜ λ³€κ²½ν•΄μ•Ό ν•œλ‹€. μ˜μ‘΄κ΄€κ³„κ°€ DriverManager μ—μ„œ HikariCP 둜 λ³€κ²½λ˜κΈ° λ•Œλ¬Έμ΄λ‹€. λ¬Όλ‘  λ‘˜μ˜ μ‚¬μš©λ²•λ„ 쑰금..
[μŠ€ν”„λ§ DB 1편] - 2. 컀λ„₯μ…˜ν’€(Connection Pool)
Β·
Spring/Spring DB
λ°μ΄ν„°λ² μ΄μŠ€ 컀λ„₯μ…˜μ„ 맀번 νšλ“(λ³΅μž‘ν•œ κ³Όμ •) λ°μ΄ν„°λ² μ΄μŠ€ 컀λ„₯μ…˜μ„ νšλ“ν•  λ•ŒλŠ” λ‹€μŒκ³Ό 같은 λ³΅μž‘ν•œ 과정을 κ±°μΉœλ‹€. 0. μ‚¬μš©μž μš”μ²­ 1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œμ§μ€ DB λ“œλΌμ΄λ²„λ₯Ό 톡해 컀λ„₯μ…˜μ„ μ‘°νšŒν•œλ‹€. 2. DB λ“œλΌμ΄λ²„λŠ” DB 와 TCP/IP 컀λ„₯μ…˜μ„ μ—°κ²°ν•œλ‹€. λ¬Όλ‘  μ΄κ³Όμ •μ—μ„œ 3 way handshake 같은 TCP/IP 연결을 μœ„ν•œ λ„€νŠΈμ›Œν¬ λ™μž‘μ΄ λ°œμƒν•œλ‹€. 3. DB λ“œλΌμ΄λ²„λŠ” TCP/IP 컀λ„₯μ…˜μ΄ μ—°κ²°λ˜λ©΄, ID/PW와 기타 뢀가정보λ₯Ό DB에 μ „λ‹¬ν•œλ‹€. 4. DBλŠ” ID,PWλ₯Ό 톡해 λ‚΄λΆ€ 인증을 μ™„λ£Œν•˜κ³ , 내뢀에 DB μ„Έμ…˜μ„ μƒμ„±ν•œλ‹€. 5. DBλŠ” 컀λ„₯μ…˜ 생성이 μ™„λ£Œλ˜μ—ˆλ‹€λŠ” 응닡을 보낸닀. 6. DB λ“œλΌμ΄λ²„λŠ” 컀λ„₯μ…˜ 객체λ₯Ό μƒμ„±ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈμ— λ°˜ν™˜ν•œλ‹€. μ΄λ ‡κ²Œ 컀λ„₯μ…˜μ„ μƒˆλ‘œ λ§Œλ“œλŠ” 것은 과정도..
[SQLD] 3. SQL κΈ°λ³Έ - 1
Β·
자격증/SQLD
SQL λ¬Έμž₯λ“€μ˜ μ’…λ₯˜ 데이터 μ‘°μž‘μ–΄(DML) : SELECT , INSERT , UPDATE , DELETE λΉ„μ ˆμ°¨μ  : 무슨(what) 데이터λ₯Ό μ›ν•˜λŠ”μ§€λ§Œ λͺ…μ„Έ 절차적 : μ–΄λ–»κ²Œ(how) 데이터λ₯Ό μ ‘κ·Όν•΄μ•Ό ν•˜λŠ”μ§€ λͺ…μ„Έ 데이터 μ •μ˜μ–΄(DDL) : CREATE , ALTER , DROP , RENAME 데이터 μ œμ–΄μ–΄(DCL) : GRANT , REVOKE νŠΈλžœμž­μ…˜ μ œμ–΄μ–΄(TCL) : COMMIT , ROLLBACK PRIMARY KEY μ„€μ • CREATE λ¬Έ ALTER λ¬Έ ν…Œμ΄λΈ” μ»¬λŸΌμ— λŒ€ν•œ μ •μ˜ λ³€κ²½ (ALTER) [Oracle] ALTER TABLE ν…Œμ΄λΈ”λͺ… MODIFY ( 칼럼λͺ… λ°μ΄ν„°μœ ν˜• NOT NULL ) [SQL Server] ALTER TABLE ν…Œμ΄λΈ”λͺ… ALTER COLUMN 컬럼λͺ… λ°μ΄ν„°μœ ν˜•..
[μŠ€ν”„λ§ DB 1편] - 1. JDBC 이해
Β·
Spring/Spring DB
문제점 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ‹€λ₯Έ μ’…λ₯˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ λ³€κ²½ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ— 개발된 λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš© μ½”λ“œλ„ ν•¨κ»˜ λ³€κ²½ν•΄μ•Ό ν•œλ‹€. κ°œλ°œμžκ°€ 각각의 λ°μ΄ν„°λ² μ΄μŠ€λ§ˆλ‹€ 컀λ„₯μ…˜ μ—°κ²°, SQL 전달, 그리고 κ·Έ κ²°κ³Όλ₯Ό 응닡 λ°›λŠ” 방법을 μƒˆλ‘œ ν•™μŠ΅ν•΄μ•Ό ν•œλ‹€. 이런 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ JDBCλΌλŠ” μžλ°” ν‘œμ€€μ΄ λ“±μž₯ν•œλ‹€. JDBC 이해 JDBC(Java Database Connectivity)λŠ” μžλ°”μ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€μ— 접속할 수 μžˆλ„λ‘ ν•˜λŠ” μžλ°” APIλ‹€. JDBCλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 자료λ₯Ό μΏΌλ¦¬ν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈν•˜λŠ” 방법을 μ œκ³΅ν•œλ‹€. JDBCλ₯Ό 직접 μ‚¬μš©ν•˜μ§€λŠ” μ•Šλ”λΌλ„, JDBCκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ κΈ°λ³Έ 원리λ₯Ό μ•Œμ•„λ‘μ–΄μ•Ό ν•œλ‹€. κ·Έλž˜μ•Ό ν•΄λ‹Ή κΈ°μˆ λ“€μ„ 더 깊이있게 이해할 수 있고, 무엇보닀 λ¬Έμ œκ°€ λ°œμƒν–ˆμ„ λ•Œ 근본적인 λ¬Έ..
[SQLD] 2. 데이터 λͺ¨λΈκ³Ό μ„±λŠ₯
Β·
자격증/SQLD
μ„±λŠ₯데이터λͺ¨λΈλ§ 데이터 베이슀 μ„±λŠ₯ ν–₯상을 λͺ©μ μœΌλ‘œ 섀계 λ‹¨κ³„μ˜ 데이터 λͺ¨λΈλ§ λ•Œ λΆ€ν„° μ„±λŠ₯κ³Ό κ΄€λ ¨λœ 사항이 데이터 λͺ¨λΈλ§μ— 반영될 수 μžˆλ„λ‘ ν•˜λŠ” 것 μ„±λŠ₯ν–₯상을 μœ„ν•œ λΉ„μš©μ€ ν”„λ‘œμ νŠΈ μˆ˜ν–‰ 쀑에 μžˆμ–΄μ„œ 사전에 ν• μˆ˜λ‘ λΉ„μš©μ΄ 적게 λ“ λ‹€. 특히, 뢄석 / 섀계 λ‹¨κ³„μ—μ„œ 데이터 λͺ¨λΈμ— μ„±λŠ₯을 κ³ λ €ν•œ 데이터 λͺ¨λΈλ§μ„ μˆ˜ν–‰ν•  경우 μ„±λŠ₯μ €ν•˜μ— λ”°λ₯Έ μž¬μ—…λ¬΄(Rework) λΉ„μš©μ„ μ΅œμ†Œν™” ν•  수 μžˆλŠ” 기회λ₯Ό κ°€μ§€κ²Œ λœλ‹€. 데이터 λͺ¨λΈμ€ μ„±λŠ₯을 νŠœλ‹ν•˜λ©΄μ„œ 변경이 될 수 μžˆλ‹€. μ„±λŠ₯ 데이터 λͺ¨λΈλ§ μˆ˜ν–‰ 절차 1. λͺ¨λΈλ§ ν• λ•Œ μ •κ·œν™”λ₯Ό μ •ν™•νžˆ μˆ˜ν–‰ 2. μš©λŸ‰μ‚°μ • μˆ˜ν–‰ 3. νŠΈλžœμž­μ…˜μ˜ μœ ν˜• νŒŒμ•… 4. μš©λŸ‰κ³Ό νŠΈλžœμž­μ…˜ μœ ν˜•μ— 따라 λ°˜μ •κ·œν™” μˆ˜ν–‰ 5. 이λ ₯λͺ¨λΈμ˜ μ‘°μ •, PK/FKμ‘°μ •, μŠˆνŽ΄νƒ€μž…/μ„œλΈŒνƒ€μž… μ‘°μ • μˆ˜ν–‰ 6. 검증 λ°˜μ •κ·œ..