- 1. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฌด์์ธ์ง, ์ฃผ์ ํน์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- 2. RDBMS์ NoSQL์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
- 3. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํค๋ง(Schema)์ ์ธ์คํด์ค(Instance)์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
- 4. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ด(DDL, DML, DCL)์ ๋ํด ๋งํด์ฃผ์ธ์.
- 5. ํธ๋ฆฌ๊ฑฐ, Trigger์ ๋ํด ๋งํด์ฃผ์ธ์.
- 6. Index๋ ๋ฌด์์ด๊ณ , ์ฅ๋จ์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 7. ์ ๊ทํ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 8. ์ด์ ํ์์ ์ข ๋ฅ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 9. SQL Injection์ด ๋ฌด์์ธ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- 10. ํธ๋์ญ์ ์ด๋ ๋ฌด์์ธ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- 11. ๋ฐ์ดํฐ๋ฒ ์ด์ค Lock์ด๋ ๋ฌด์์ธ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- 12. ElasticSearch์ RDBMS์ LIKE ๊ฒ์์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 13. ์ตํฐ๋ง์ด์ (Optimizer)๋ ๋ฌด์์ธ์ง ๋งํด์ฃผ์ธ์.
- 14. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋์ด ๋ฌด์์ธ์ง ๋งํด์ฃผ์ธ์.
- 15. INNER JOIN๊ณผ OUTER JOIN์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
- 16. DELETE, TRUNCATE, DROP์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 17. HAVING๊ณผ WHERE์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฌด์์ธ์ง, ์ฃผ์ ํน์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๋ จ ๋ฐ์ดํฐ๋ค์ ์ฒด๊ณ์ ์ผ๋ก ์ ์ฅ, ๊ด๋ฆฌ, ๊ฒ์ํ ์ ์๋๋ก ๊ตฌ์ฑํ ๋ฐ์ดํฐ ์งํฉ์ด๋ค.
-
๋ฐ์ดํฐ ๋ ๋ฆฝ์ฑ: ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๋ค.
-
์ค์ ์ง์คํ: ๋ฐ์ดํฐ์ ํตํฉ ๊ด๋ฆฌ ๋ฐ ๋ณด์ ๊ฐํ๋ฅผ ํ๋ค.
-
๋์์ ์ ์ด: ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์ ๊ทผํด๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ค.
-
๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ: ๋ฐ์ดํฐ์ ์ ํ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํ ์ ์ฝ ์กฐ๊ฑด์ด ์๋ค. (PK, FK ๋ฑ)
โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
, DBMS์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- DBMS๋ ์ธ๋ฑ์ฑ, ์บ์ฑ, ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ, ๋์์ฑ ์ ์ด ๋ฑ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ค.
RDBMS์ NoSQL์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
- RDBMS๋ ๊ณ ์ ๋ ์คํค๋ง์ ํ ์ด๋ธ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก, SQL์ ์ฌ์ฉํ๋ฉฐ ACID ํธ๋์ญ์ ๋ณด์ฅ์ด ์ค์ํ ๋ ์ฌ์ฉํ๋ค.
- NoSQL(Not Only SQL)์ ์คํค๋ง๊ฐ ์ ์ฐํ๋ฉฐ ๋ฌธ์, KEY-VALUE, ์ปฌ๋ผํ, ๊ทธ๋ํ ๋ฑ ๋ค์ํ ๋ชจ๋ธ์ ์ ๊ณตํ๋ฉฐ, ์ํ์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ๋ฆฌํ๋ค.
โ๏ธ RDBMS์ NoSQL์ ์ด๋ ๊ฒฝ์ฐ์ ์ ํฉํ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ฐ์ดํฐ ์ ํฉ์ฑ๊ณผ ๋ณต์กํ JOIN ์ฐ์ฐ์ด ํ์ํ ๊ฒฝ์ฐ๋ RDBMS, ๋น ๋ฅธ ํ์ฅ์ฑ๊ณผ ์ ์ฐํ ์คํค๋ง๊ฐ ์๊ตฌ๋๋ฉด NoSQL์ด ์ ํฉํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํค๋ง(Schema)์ ์ธ์คํด์ค(Instance)์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ ์ฆ, ํ ์ด๋ธ, ์ด, ๋ฐ์ดํฐ ํ์ , ๊ด๊ณ ๋ฑ์ ์ ์ํ ์ฒญ์ฌ์ง์ด๋ค.
- ์ธ์คํด์ค๋ ์คํค๋ง์ ๋ฐ๋ผ ์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์งํฉ์ ์๋ฏธํ๋ค.
์คํค๋ง๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๊ณ๋๋ผ๋ฉด, ์ธ์คํด์ค๋ ์ค๊ณ๋๋ฅผ ๋ฐ๋ผ ์ค์ ๋ก ์ ์ฅ๋ ํ ์ด๋ธ์ด๋ค.
โ๏ธ ์คํค๋ง ๋ณ๊ฒฝ์ด ์ธ์คํด์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์คํค๋ง ๋ณ๊ฒฝ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ฏ๋ก, ๊ธฐ์กด ๋ฐ์ดํฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด ํ์ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ํฅ์ ์ค ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ด(DDL, DML, DCL)์ ๋ํด ๋งํด์ฃผ์ธ์.
- DDL(Data Definition Language)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์ ์, ์์ , ์ญ์ ํ๋ค. (CREATE, ALTER, DROP)
- DML(Data Manipulation Language)์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ค. (SELECT, INSERT, UPDATE, DELETE)
- DCL(Data Control Lanaguage)์ ๋ฐ์ดํฐ ๊ถํ ๋ฐ ๋ณด์ ๊ด๋ฆฌ๋ฅผ ํ๋ค. (COMMIT, ROLLBACK, GRANT, REVOKE)
โ๏ธ ์ค๋ฌด์์ DCL์ ์ด๋ป๊ฒ ํ์ฉํ๋์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๊ถํ ๊ด๋ฆฌ, ์ฌ์ฉ์ ์ ๊ทผ ํต์ , ๊ฐ์ฌ ๊ธฐ๋ก ๋ฑ์ ํตํด ๋ณด์์ ๊ฐํํ๋ค.
ํธ๋ฆฌ๊ฑฐ, Trigger์ ๋ํด ๋งํด์ฃผ์ธ์.
- ํธ๋ฆฌ๊ฑฐ๋ ํน์ ํ ์ด๋ธ์ INSERT, DELETE, UPDATE ๋ฑ ์ด๋ฒคํธ ๋ฐ์ ์ ์๋ ์คํ๋๋ ํ๋ก์์ ์ด๋ค.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง, ์๋ ๋ก๊ทธ ๊ธฐ๋ก, ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ ๋ ์ฌ์ฉ๋๋ค.
โ๏ธ ํธ๋ฆฌ๊ฑฐ ์ฌ์ฉ ์ ์ฃผ์ํ ์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ํธ๋ฆฌ๊ฑฐ๊ฐ ๊ณผ๋ํ๊ฒ ๋ณต์กํ๊ฑฐ๋ ์ค์ฒฉ๋๋ฉด, ์ฑ๋ฅ ์ ํ ๋ฐ ๋๋ฒ๊น ์ด ์ด๋ ค์์ง ์ ์์ด ํ์ํ ๊ฒฝ์ฐ์๋ง ์ ์คํ ์ฌ์ฉํด์ผ ํ๋ค.
Index๋ ๋ฌด์์ด๊ณ , ์ฅ๋จ์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ํ ์ด๋ธ ์ ์ฒด ์ค์บ(FTS) ๋์ , ํน์ ์ปฌ๋ผ์ ์ ๋ ฌ๋ ์๋ฃ๊ตฌ์กฐ์ธ B+Tree ๋๋ ํด์ ํ ์ด๋ธ์ ์ด์ฉํด ๋น ๋ฅธ ๊ฒ์์ ์ง์ํ๋ค.
- ๊ฒ์, ์ ๋ ฌ, ์กฐ์ธ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ง๋ง, ๋ฐ์ดํฐ ์ฝ์ , ์์ , ์ญ์ ์ ์ธ๋ฑ์ค ๊ฐฑ์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค.
โ๏ธ DBMS๋ Index๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๊ณ ์๋์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- B+Tree๋ ๋ฆฌํ ๋ ธ๋๋ฅผ LinkedList๋ก ์ฐ๊ฒฐํ์ฌ ์์ฐจ ์ ๊ทผ์ ์ ๋ฆฌํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
- ํด์ ํ ์ด๋ธ์ ์๊ฐ๋ณต์ก๋ O(1)์ ๊ฐ์ง์ง๋ง, ๋ฒ์ ๊ฒ์์๋ ๋ถ์ ํฉํ๋ค.
โ๏ธ ์ด๋ค ๊ฒฝ์ฐ์ ํด์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ฑ๊ฐ ๊ฒ์์ ์ต์ ํ๋์ด ์์ด, ๋ถ๋ฑํธ(<, >) ์กฐ๊ฑด์ด ์์ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
์ ๊ทํ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋ฐ์ดํฐ ์ค๋ณต์ ์ต์ํํ๊ณ ์ด์ ํ์ ์๋ฐฉ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง๋ฅผ ์ํด ์ฌ์ฉํ๋ค.
-
1NF๋ ๊ฐ ์ปฌ๋ผ์ด ์์๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ค.
-
2NF๋ ๊ธฐ๋ณธ ํค์ ๋ถ๋ถ ์ข ์์ ์ ๊ฑฐํ๋ค.
-
3NF๋ ์ดํ์ ์ข ์์ ์ ๊ฑฐํ๋ค.
-
BCNF๋ ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณด ํค๊ฐ ๋์ด์ผ ํ๋ค.
โ๏ธ ์ ๊ทํ์๋ ์ด๋ค ์ฅ๋จ์ ์ด ์๋์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ ๊ทํ๋ ๋ฐ์ดํฐ ์ค๋ณต ์ ๊ฑฐ, ์ด์ ํ์ ์๋ฐฉ, ๊ทธ๋ฆฌ๊ณ ์ ์ง๋ณด์์ ์ฉ์ดํ๋ค.
- ๋ค๋ง, ์ง๋์น ๋ถํด๋ก JOIN ์ฐ์ฐ์ด ์ฆ๊ฐํ๋ฉด์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
โ๏ธ ์ญ์ ๊ทํ๋ฅผ ํ๋ ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ฝ๊ธฐ ์์ ์ด ๋ง์ ๊ฒฝ์ฐ๋ฅผ ์ํด ์ ๊ทํ๋ ๊ตฌ์กฐ์ JOIN ๋น์ฉ์ ์ค์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํจ์ด๋ค.
โ๏ธ ์ ๊ทํ์ ์ญ์ ๊ทํ๋ฅผ ๊ฒฐ์ ํ ๋ ๊ณ ๋ คํด์ผ ํ ์์๋ ๋ฌด์์ธ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ, ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๋น์จ, ์์คํ ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋น๋ ๋ฑ์ ์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ๋ค.
์ด์ ํ์์ ์ข ๋ฅ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ฝ์ ์ด์: ๋ฐ์ดํฐ ์ฝ์ ์ ๋ถ์์ ํ ์ ๋ณด๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
- ๊ฐฑ์ ์ด์: ์ค๋ณต ๋ฐ์ดํฐ ์์ ์ ์ผ๋ถ๋ง ์์ ๋์ด ๋ฐ์ดํฐ ๋ชจ์์ด ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
- ์ญ์ ์ด์: ๋ฐ์ดํฐ ์ญ์ ์ ์๋์น ์์ ๊ด๋ จ ์ ๋ณด๊น์ง ์ญ์ ๋๋ ๋ฌธ์ ์ด๋ค.
โ๏ธ ์ด์ ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ ๊ทํ๋ฅผ ํตํด ๋ฐ์ดํฐ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ , ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ์ฌ ์ด์ ํ์์ ์๋ฐฉํ ์ ์๋ค.
SQL Injection์ด ๋ฌด์์ธ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๊ณต๊ฒฉ์๊ฐ ์ ์๋ก SQL ์ฝ๋๋ฅผ ์ฝ์ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ด๋ค.
โ๏ธ SQL Injection์ ๋ฐฉ์ด ๋ฐ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ ํจํ์ง ์์ ์ ๋ ฅ์ ์ฐจ๋จํ๋ค.
- ์ฟผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌ์ํจ๋ค.
- ๋ฏธ๋ฆฌ ์ ์๋ ์ฟผ๋ฆฌ ํ์์ ์ฌ์ฉํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ๊ถํ์ ์ต์ํํ๋ค.
โ๏ธ ์ค๋ฌด์์ SQL Injection ์๋ฐฉ์ ์ํด ์ด๋ค ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋๋ถ๋ถ์ ํ๋ ํ๋ ์์ํฌ๋ Prepared Statement๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ฉฐ, ์ถ๊ฐ๋ก ORM์ ํ์ฉํ๋ฉด ๋ณด์์ฑ์ด ๊ฐํ๋๋ค.
ํธ๋์ญ์ ์ด๋ ๋ฌด์์ธ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋
ผ๋ฆฌ์ ์ธ ์์
์ ๋จ์๋ก, ํ๋์ ์์
์ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ ๊ฐ์ ์ฐ์ฐ์ด ๋ชจ๋ ์ฑ๊ณตํด์ผ ํ๊ณ , ํ๋๋ผ๋ ์คํจํ๋ฉด ์ ์ฒด๋ฅผ ๋กค๋ฐฑํด์ผ ํ๋ค.
- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ์ ์ง, ์ฅ์ ๋ฐ์ ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ, ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์์ ํ ๋ ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฌธ์ ํด๊ฒฐ์ ์ํด ํ์ํ๋ค.
โ๏ธ ํธ๋์ญ์
์ ACID ํน์ฑ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์์์ฑ(Atomicity): ํธ๋์ญ์ ๋ด ์ฐ์ฐ์ด ๋ชจ๋ ์ฑ๊ณตํ๊ฑฐ๋, ๋ชจ๋ ์คํจํด์ผ ํ๋ค.
- ์ผ๊ด์ฑ(Consistency): ํธ๋์ญ์ ์ด ์๋ฃ๋ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ค.
- ๊ฒฉ๋ฆฌ์ฑ(Isolation): ๋์์ ์คํ๋๋ ํธ๋์ญ์ ์ด ์๋ก ์ํฅ์ ์ฃผ์ง ์๋๋ก ๋ณด์ฅํ๋ค.
- ์ง์์ฑ(Durability): ํธ๋์ญ์ ์ด ์ปค๋ฐ๋ ํ์๋ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ง๋๋ค.
โ๏ธ ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ๋ฅธ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๊ฒฉ๋ฆฌ ์์ค(Isolation Level)์ ๋ฐ๋ผ ๋์์ฑ(์ฑ๋ฅ)๊ณผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ๋ฌ๋ผ์ง๋ค.
- Read Uncommitted: ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ๋ฅผ ํ์ฉํ์ง๋ง, Dirty Read๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Read Committed: ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ์ฝ๊ธฐ๋ฅผ ํ์ฉํ์ง๋ง, Non-repeatable Read๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Repeatable Read: ๊ฐ์ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ผ๋ฉด ๊ฐ์ด ์ ์ง๋์ง๋ง, Phantom Read๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Serializable: ๊ฐ์ฅ ๋์ ์์ค์ ๊ฒฉ๋ฆฌ ๋ ๋ฒจ๋ก ํธ๋์ญ์ ์ ์ง๋ ฌํํ์ฌ ์คํํ์ง๋ง, ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๊ฒฉ๋ฆฌ ์์ค์ด ๋์์๋ก ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๊ฐํ์ง๋ง, ๋์์ฑ(์ฑ๋ฅ)์ ๋ฎ์์ง๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค Lock์ด๋ ๋ฌด์์ธ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ํธ๋์ญ์ ๊ฐ ์์ฐจ์ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ธฐ์ ์ด๋ค.
- ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๊ฒฝ์ฐ, ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฝ์ ์ข
๋ฅ์๋ ๋ฌด์์ด ์๋์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๊ณต์ ๋ฝ(Shared Lock, S Lock): ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๊ณ , ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ฝ์ ์ ์๋ค.
- ๋ฐฐํ ๋ฝ(Exclusive Lock, X Lock): ๋ฐ์ดํฐ์ ๋ํ ์ฐ๊ธฐ ์ฐ์ฐ์ ์ํํ ๋ ์ค์ ํ๋ฉฐ, ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ ๊ทผ์ ์ฐจ๋จํ๋ค.
โ๏ธ ๋ฝ ๊ฒฝํฉ์ด ์ฌํ ๋๋ ์ด๋ป๊ฒ ๋์ฒํ ์ ์๋์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- ํ์์์ ์ค์ ์ ํตํด ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๋ฝ์ ํด์ ํ์ฌ ๊ต์ฐฉ ์ํ๋ฅผ ๋ฐฉ์งํ๋ค.
- ๋ฝ ๋ถํ ์ ํตํด ํ ์ด๋ธ ๋จ์๊ฐ ์๋, ํ ๋๋ ํ์ด์ง ๋จ์๋ก ๋ฝ์ ์ ์ฉํ์ฌ ๋์์ฑ์ ๋์ธ๋ค.
- ๋ฝ ์์ ์ผ๊ด์ฑ ์ ์ง๋ฅผ ํตํด ํธ๋์ญ์ ์ด ๋ฝ์ ํ๋ํ๋ ์์๋ฅผ ๊ณ ์ ํ์ฌ ๊ต์ฐฉ ์ํ๋ฅผ ๋ฐฉ์งํ๋ค.
ElasticSearch์ RDBMS์ LIKE ๊ฒ์์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ElasticSearch๋ ์ญ์์ธ(Inverted Index)์ ์ฌ์ฉํ์ฌ ๋น ๋ฅธ ๊ฒ์์ ์ ๊ณตํ๋ฉฐ, ์์ฐ์ด ๊ฒ์, ์ ์ฌ์ด ๊ฒ์, ์ ๋ ฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- RDBMS์ LIKE ์ฐ์ฐ์ ๋จ์ ํ ์คํธ ๋งค์นญ์ผ๋ก, ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
โ๏ธ ElasticSearch์ ์ฅ์ ๊ณผ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋งํด์ฃผ์ธ์.
- ElasticSearch์ ๋น ๋ฅธ ๊ฒ์ ์๋์ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ์ ์ฐํ ์ฟผ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค๋ ์ฅ์ ์ด ์๋ค.
- ๋๋ฌธ์ ๊ฒ์ ์์ง, ๋ก๊ทธ ๋ถ์ ์์คํ , ๋น ๋ฐ์ดํฐ ๊ฒ์ ๋ฑ์์ ์ฌ์ฉ๋๋ค.
์ตํฐ๋ง์ด์ (Optimizer)๋ ๋ฌด์์ธ์ง ๋งํด์ฃผ์ธ์.
- SQL ์ฟผ๋ฆฌ์ ์ฌ๋ฌ ์คํ ๊ณํ ์ค ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํ์ฌ, ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ํฅ์์ํค๋ DBMS์ ํต์ฌ ์์ง์ด๋ค.
- ํต๊ณ ์ ๋ณด์ ๋น์ฉ ๊ธฐ๋ฐ ๋ถ์์ ํตํด ์ต์ ์ ์คํ ๊ณํ์ ์ ํํ๋ค.
- ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ (CBO)์ ๊ท์น ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ (RBO)๊ฐ ์๋ค.
โ๏ธ ์ตํฐ๋ง์ง์ด๊ฐ ์๋ชป๋ ์คํ ๊ณํ์ ์ ํํ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ํต๊ณ ์ ๋ณด ์ ๋ฐ์ดํธ๋ฅผ ํตํด ์ต์ ๋ฐ์ดํฐ ๋ถํฌ๋ฅผ ๋ฐ์ํ๋๋ก ํ๋ค.
- ํํธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ๊ณํ์ ์๋์ผ๋ก ์กฐ์ ํ ์ ์๋ค.
- ์ธ๋ฑ์ค๊ฐ ๋นํจ์จ์ ์ด๋ผ๋ฉด ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝ์ ํตํด ์ธ๋ฑ์ค ์ฌ์ค๊ณ๋ฅผ ํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋์ด ๋ฌด์์ธ์ง ๋งํด์ฃผ์ธ์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ณผ์ ์ 3๋จ๊ณ๋ก ๋๋ ์ ์๋ค.
- DB ์ค๊ณ ํ๋์ ์ธ๋ฑ์ค, ํํฐ์ ๋, ์ ๊ทํ๋ฅผ ํตํด ์ต์ ํํ๋ค.
- DBMS ํ๋์ ์บ์, ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํตํด ์ต์ ํํ๋ค.
- SQL ํ๋์ ์คํ ๊ณํ ๋ถ์, ์กฐ์ธ ๋ฐฉ์์ ํตํด ์ต์ ํํ๋ค.
โ๏ธ ๊ฐ์ฅ ๋จผ์ ์ ๊ฒํด์ผ ํ๋ ํ๋ ์์๊ฐ ๋ฌด์์ธ์ง ๋งํด์ฃผ์ธ์.
- ์คํ ๊ณํ ํ์ธ, ์ธ๋ฑ์ค ์ฌ์ฉ ์ฌ๋ถ ํ์ธ, ๊ทธ๋ฆฌ๊ณ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ๋ถ์ํ์ฌ ์๋ต ์๊ฐ์ด๋ ๋ณ๋ชฉ ๊ตฌ๊ฐ์ ํ์ธํด์ผ ํ๋ค.
INNER JOIN๊ณผ OUTER JOIN์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
- INNER JOIN์ ๋ ํ ์ด๋ธ์์ ์กฐ์ธ ์กฐ๊ฑด์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ง ๋ฐํํ๋ค.
- OUTER JOIN์ ํ์ชฝ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ NULL ๊ฐ์ ํฌํจํ์ฌ ๋ฐํํ๋ค.
โ๏ธ ์ด๋ค JOIN ๋ฐฉ์์ด ์ฑ๋ฅ์ ๋ ์ ๋ฆฌํ์ง ๋งํด์ฃผ์ธ์.
- INNER JOIN์ ๋ถํ์ํ NULL ๊ฐ์ด ํฌํจ๋์ง ์์ ์ฑ๋ฅ์ ์ผ๋ก ์ ๋ฆฌํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ๋ฐ๋ฉด, OUTER JOIN์ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํด์ผ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
DELETE, TRUNCATE, DROP์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- DELETE๋ ํน์ ํ์ ์ญ์ ํ ์ ์์ผ๋ฉฐ, ROLLBACK์ด ๊ฐ๋ฅํ๋ค.
- TRUNCATE๋ ์ ์ฒด ํ์ ์ญ์ ํ ์ ์์ผ๋ฉฐ, ROLLBACK์ด ๋ถ๊ฐ๋ฅํ๋ค.
- DROP์ ํ ์ด๋ธ ์์ฒด๋ฅผ ์ญ์ ํ๋ค.
โ๏ธ DELETE์ TRUNCATE์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- DELETE๋ ๊ฐ๋ณ ํ์ ์ญ์ ํ๊ณ , ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ฏ๋ก ์๋๊ฐ ๋๋ฆฌ๋ค.
- ๋ฐ๋ฉด, TRUNCATE๋ ์ ์ฒด ๋ฐ์ดํฐ ์ญ์ ํ ํ ์ด๋ธ์ ์ฌ์์ฑํ๋ฏ๋ก ์๋๊ฐ ๋น ๋ฅด๋ค.
HAVING๊ณผ WHERE์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- HAVING์ ๊ทธ๋ฃนํ ํ ์ง๊ณ ๊ฒฐ๊ณผ์ ์กฐ๊ฑด์ ์ ์ฉํ๋ค.
- WHERE์ ๊ทธ๋ฃนํ ์ ๊ฐ๋ณ ํ์ ์กฐ๊ฑด์ ์ ์ฉํ๋ค.