λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

κ°œλ°œκ³΅λΆ€/CSπŸ’»

CS κ°•μ˜ 5. DB ꡬ쑰와 μœ ν˜•

728x90

좜처 : 내일배움캠프

 

0. 컴퓨터와 λ°μ΄ν„°λ² μ΄μŠ€

μ»΄ν“¨ν„°μ˜ μ—¬λŸ¬ ꡬ쑰 쀑, 보쑰 κΈ°μ–΅μž₯μΉ˜λŠ” 영ꡬ μ €μž₯μ†Œλ‘œμ¨ 파일과 데이터λ₯Ό μ €μž₯ν•  수 μžˆλ‹€. νŒŒμΌμ€ νŒŒμΌμ‹œμŠ€ν…œμ—, λ°μ΄ν„°λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λœλ‹€

0 - 1. νŒŒμΌμ‹œμŠ€ν…œ vs λ°μ΄ν„°λ² μ΄μŠ€

ex) μΉ΄μΉ΄μ˜€ν†‘ μ‹€ν–‰ νŒŒμΌμ€ νŒŒμΌμ‹œμŠ€ν…œμ— μ €μž₯λ˜μ–΄ 있고, μΉ΄ν†‘μ˜ 메세지 λͺ©λ‘ λ“±μ˜ λ°μ΄ν„°λŠ” DB에 μ €μž₯λœλ‹€

1) νŒŒμΌμ‹œμŠ€ν…œ

- κ°œλ³„ νŒŒμΌμ„ λ³΄κ΄€ν•˜κ³  μ •λ¦¬ν•˜λŠ” μ‹œμŠ€ν…œμœΌλ‘œ, μ—¬λŸ¬ 폴더에 파일이 μ €μž₯되고 μ‚¬μš©μžλŠ” νŒŒμΌμ„ 직접 관리해야 ν•œλ‹€

~ 파일 정리, 처리 등에 μ‚¬μš©μžμ˜ μžμ›μ΄ 많이 μ‚¬μš©λœλ‹€

2) λ°μ΄ν„°λ² μ΄μŠ€

- 데이터λ₯Ό κ΅¬μ‘°ν™”ν•˜κ³  μ—°κ²°ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€

- ν…Œμ΄λΈ”, λ ˆμ½”λ“œ, ν•„λ“œ λ“±μ˜ κ°œλ…μ„ μ‚¬μš©ν•΄ 데이터λ₯Ό κ΅¬μ„±ν•˜κ³ , 데이터λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κ³  검색할 수 μžˆλ‹€

- λ°μ΄ν„°μ˜ 일관성, 무결성, μ•ˆμ „μ„±μ„ μœ μ§€ν•˜λ©° λ³΅μž‘ν•œ 데이터 μ‘°μž‘μ„ κ°„νŽΈν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆλ‹€

1. λ°μ΄ν„°λ² μ΄μŠ€

1 - 1. λ°μ΄ν„°λ² μ΄μŠ€ κ°œμš”

정보 vs 데이터

정보 : μ—¬λŸ¬ μ’…λ₯˜μ˜ λ¬Έμ„œλ‘œ ν©μ–΄μ Έμžˆμ–΄ μ‘°ν•©ν•˜κΈ° μ–΄λ €μš΄ λ‹¨μœ„ ~ νŒŒμΌμ‹œμŠ€ν…œ : μΉ΄μΉ΄μ˜€ν†‘μ„ μ‹€ν–‰ν•  수 μžˆλŠ” 정보

데이터 : 정보λ₯Ό μ²΄κ³„μ μœΌλ‘œ λΆ„λ₯˜ν•΄ μ‘°ν•©ν•  수 μžˆλŠ” λ‹¨μœ„ ~ λ°μ΄ν„°λ² μ΄μŠ€ : μΉ΄μΉ΄μ˜€ν†‘μ˜ 메세지λ₯Ό μ±„νŒ…λ°©μ— 좜λ ₯ν•  수 μžˆλŠ” 데이터

 

λ°μ΄ν„°λ² μ΄μŠ€ : 쑰직체의 운영 데이터듀이 ν†΅ν•©λœ λ°μ΄ν„°λ² μ΄μŠ€μ˜ κ΅¬μ‘°λŠ” μ–΄λ–€ 데이터 λͺ¨λΈμ„ μ‚¬μš©ν•˜λŠ”μ§€μ— 따라 λ‹€λ₯΄λ‹€

 

νŠΉμ§•

- λ°μ΄ν„°μ˜ λŒ€κ·œλͺ¨ μ €μž₯μ†Œλ‘œμ„œ, μ—¬λŸ¬ μ‚¬μš©μžμ— μ˜ν•΄ λ™μ‹œ μ‚¬μš©

- λͺ¨λ“  데이터가 쀑볡을 μ΅œμ†Œν™”ν•˜λ©° 톡합

- λ°μ΄ν„°λ² μ΄μŠ€λŠ” 운영 데이터뿐 μ•„λ‹ˆλΌ κ·Έ 데이터에 κ΄€ν•œ μ„€λͺ…κΉŒμ§€ 포함 ~ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ λ˜λŠ” 메타데이터

- ν”„λ‘œκ·Έλž¨ λ©”λͺ¨λ¦¬κ°€ μ•„λ‹Œ κ°œλ³„ μ €μž₯곡간에 μ €μž₯되기 λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨ κ³Ό 데이터 κ°„ 독립성 제곡

- 효율적으둜 접근이 κ°€λŠ₯ν•˜κ³  질의(쿼리)λ₯Ό ν•  수 μžˆλ‹€

- λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(DBMS) : λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ •μ˜ν•˜κ³ , μ§ˆμ˜μ–΄λ₯Ό μ§€μ›ν•˜κ³ , 리포트λ₯Ό μƒμ„±ν•˜λŠ” λ“± μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄

1 - 2. λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ κ°œμš”

λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ

- 전체적인 λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰λ₯Ό λœ»ν•˜λ©° 자주 λ³€κ²½λ˜μ§€ μ•ŠμŒ

- λ°μ΄ν„°λ² μ΄μŠ€μ˜ λͺ¨λ“  κ°€λŠ₯ν•œ μƒνƒœλ₯Ό 미리 μ •μ˜

ex) μ‚¬λžŒ λ°μ΄ν„°λŠ” 이름, ν‚€, λͺΈλ¬΄κ²Œ, MBTI ν•„λ“œλ₯Ό 가진닀

 

λ°μ΄ν„°λ² μ΄μŠ€ μƒνƒœ

- νŠΉμ • μ‹œμ μ˜ λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ‚΄μš©μ„ μ˜λ―Έν•˜λ©°, μ‹œκ°„μ΄ 지남에 따라 κ³„μ†ν•΄μ„œ λ°”λ€œ

- λ°μ΄ν„°λ² μ΄μŠ€μ— μˆ˜μ •μ΄ 일어날 λ•Œλ§ˆλ‹€ μƒνƒœλŠ” λ°”λ€λ‹ˆλ‹€

 

λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ(DBS) : DB, DBMS, USERλ₯Ό ν¬ν•¨ν•œ κ°€μž₯ 큰 λ²”μœ„

 

λ°μ΄ν„°λ² μ΄μŠ€

- 쑰직체의 μ‘μš© μ‹œμŠ€ν…œλ“€μ΄ κ³΅μœ ν•΄ μ‚¬μš©ν•˜λŠ” 운영 데이터듀이 ꡬ쑰적으둜 ν†΅ν•©λœ λͺ¨μž„

μ‹œμŠ€ν…œ μΉ΄νƒˆλ‘œκ·Έ( λ˜λŠ” λ°μ΄ν„° 사전, Data Directory)와 μ €μž₯된 λ°μ΄ν„°λ² μ΄μŠ€λ‘œ ꡬ뢄할 수 있음

- μ‹œμŠ€ν…œ μΉ΄νƒˆλ‘œκ·Έ(system catalog)λŠ” μ €μž₯된 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μŠ€ν‚€λ§ˆ 정보λ₯Ό μœ μ§€

DBMS의 κΈ°λŠ₯

- μ‚¬μš©μžκ°€ μƒˆλ‘œμš΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 생성

- λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό λͺ…μ‹œ

- μ‚¬μš©μžκ°€ 데이터λ₯Ό 효율적으둜 μ§ˆμ˜ν•˜κ³  μˆ˜μ •ν•  수 μžˆλ„λ‘ 함

- μ‹œμŠ€ν…œμ˜ κ³ μž₯μ΄λ‚˜ κΆŒν•œμ΄ μ—†λŠ” μ‚¬μš©μžλ‘œλΆ€ν„° 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ 보호

- λ™μ‹œμ— μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ ‘κ·Όν•˜λŠ” 것을 μ œμ–΄

 

λ°μ΄ν„°λ² μ΄μŠ€ 언어라고 λΆ€λ₯΄λŠ” νŠΉλ³„ν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό ν•œ 개 이상 제곡

 

SQL은 μ—¬λŸ¬ DBMSμ—μ„œ μ œκ³΅λ˜λŠ” μ‚¬μ‹€μƒμ˜ ν‘œμ€€ λ°μ΄ν„°λ² μ΄μŠ€ μ–Έμ–΄

 

ν•˜λ“œμ›¨μ–΄

- λ°μ΄ν„°λ² μ΄μŠ€λŠ” λ””μŠ€ν¬μ™€ 같은 보쑰 κΈ°μ–΅ μž₯μΉ˜μ— μ €μž₯되며, DBMSμ—μ„œ μ›ν•˜λŠ” 정보λ₯Ό μ°ΎκΈ° μœ„ν•΄

λ””μŠ€ν¬ 블둝듀을 μ£ΌκΈ°μ–΅μž₯치둜 읽어듀어야 ν•©λ‹ˆλ‹€

- κ³„μ‚°μ΄λ‚˜ μ‘°ν•© 및 비ꡐ 연산듀을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ€‘μ•™μ²˜λ¦¬ μž₯μΉ˜κ°€ μ‚¬μš©

- DBMS μžμ²΄λ„ μ£ΌκΈ°μ–΅μž₯μΉ˜μ— μ μž¬λ˜μ–΄ μ‹€ν–‰λ˜μ–΄μ•Ό 함

 

λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ˜ μš”κ΅¬μ‚¬ν•­

  • 데이터 독립성
  • 효율적인 데이터 μ ‘κ·Ό
  • 데이터에 λŒ€ν•œ λ™μ‹œ μ ‘κ·Ό
  • λ°±μ—…κ³Ό 회볡
  • 쀑볡을 μ€„μ΄κ±°λ‚˜ μ œμ–΄ν•˜λ©° 일관성 μœ μ§€
  • 데이터 무결성
  • 데이터 보완
  • μ‰¬μš΄ μ§ˆμ˜μ–΄
  • λ‹€μ–‘ν•œ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€

1 - 3. νŒŒμΌμ‹œμŠ€ν…œ vs DBMS

νŒŒμΌμ‹œμŠ€ν…œμ„ μ‚¬μš©ν•œ 기쑴의 데이터 관리

- νŒŒμΌμ‹œμŠ€ν…œμ€ DBMS 이전뢀터 μ‚¬μš©λ˜μ—ˆλ‹€

- 파일 접근방식이 ν”„λ‘œκ·Έλž¨μ— μžμ„Έν•˜κ²Œ ν‘œν˜„λ˜λ―€λ‘œ 데이터에 λŒ€ν•œ μ‘μš© ν”„λ‘œκ·Έλž¨μ˜ μ˜μ‘΄λ„κ°€ λ†’λ‹€

단점

- 데이터가 μ„œλ‘œ λ‹€λ₯Έ λ‹€μˆ˜μ˜ νŒŒμΌμ— μ€‘λ³΅ν•΄μ„œ μ €μž₯λœλ‹€

- λ‹€μˆ˜ μ‚¬μš©μžλ₯Ό μœ„ν•œ λ™μ‹œμ„± μ œμ–΄κ°€ μ œκ³΅λ˜μ§€ μ•ŠλŠ”λ‹€

- 검색 데이터λ₯Ό κ°„νŽΈν•˜κ²Œ ν•΄μ£ΌλŠ” 쿼리가 μ œκ³΅λ˜μ§€ μ•ŠλŠ”λ‹€

- λ³΄μ•ˆ μ‘°μΉ˜κ°€ λ―Έν‘ν•˜λ‹€

- 회볡 κΈ°λŠ₯이 μ—†λ‹€

- ν”„λ‘œκ·Έλž¨, 데이터 독립성이 μ—†μœΌλ―€λ‘œ μœ μ§€λ³΄μˆ˜ λΉ„μš©μ΄ 많이 μ†Œμš”λœλ‹€

- νŒŒμΌμ„ κ²€μƒ‰ν•˜κ±°λ‚˜ κ°±μ‹ ν•˜λŠ” μ ˆμ°¨κ°€ μƒλŒ€μ μœΌλ‘œ λ³΅μž‘ν•΄ 생산성을 λ–¨μ–΄λœ¨λ¦°λ‹€

 

DBMS의 μž₯점

1. μŠ€ν‚€λ§ˆ μ •μ˜λ₯Ό 톡해

- λ°μ΄ν„°μ˜ 쀑볡과 뢈일치 κ°μ†Œ

- ν‘œμ€€ν™” 용이

- 쑰직체의 μš”κ΅¬μ‚¬ν•­ 식별 κ°€λŠ₯

2. 관리도ꡬλ₯Ό 톡해

- 개발 및 μœ μ§€λ³΄μˆ˜ λΉ„μš© κ°μ†Œ

- λ³΄μ•ˆ, 무결성 ν–₯상

- λ‹€μ–‘ν•œ μœ ν˜•μ˜ μž₯μ• λ‘œλΆ€ν„° DB 볡ꡬ κ°€λŠ₯

- λ°μ΄ν„°λ² μ΄μŠ€μ˜ κ³΅μœ μ™€ λ™μ‹œμ— 접근이 κ°€λŠ₯

단점

- DBMS 및 ν•˜λ“œμ›¨μ–΄ μΆ”κ°€ κ΅¬μž…λΉ„μš© λ°œμƒ, κ΅μœ‘λΉ„μš© λ°œμƒ

- ν”„λΌμ΄λ²„μ‹œ λ…ΈμΆœ μœ„ν—˜ 증가

 

+ DBMS μ μš©ν•˜λ©΄ μ•ˆλ˜λŠ” 경우

- 초기 νˆ¬μžλΉ„μš©μ΄ λ„ˆλ¬΄ 클 λ•Œ

- μ˜€λ²„ν—€λ“œκ°€ λ„ˆλ¬΄ 클 λ•Œ

- μ‘μš©μ΄ λ‹¨μˆœν•˜κ³  잘 μ •μ˜λ˜μ—ˆμœΌλ©° λ³€κ²½λ˜μ§€ μ•Šμ„ κ²ƒμœΌλ‘œ μ˜ˆμƒλ  λ•Œ

- μ—„κ²©ν•œ μ‹€μ‹œκ°„ 처리 μš”κ΅¬μ‚¬ν•­μ΄ μžˆμ„ λ•Œ

- 데이터에 λŒ€ν•œ λ‹€μˆ˜ μ‚¬μš©μžμ˜ 접근이 ν•„μš”ν•˜μ§€ μ•Šμ„ λ•Œ

1 - 3. DBMS λ°œμ „ κ³Όμ •

1) 계측 DBMS

- 1960λ…„λŒ€ ν›„λ°˜ λ“±μž₯, νŠΈλ¦¬ ꡬ쑰λ₯Ό 기반으둜 ν•œ 계측 데이터 λͺ¨λΈμ„ μ‚¬μš©ν•œ DBMS, 계측 데이터 λͺ¨λΈ

 

μž₯점 : νŠΉμ • μœ ν˜•μ˜ μ‘μš©μ— λŒ€ν•΄ λΉ λ₯Έ 속도와 높은 효율 제곡

단점

- μ–΄λ–»κ²Œ 데이터λ₯Ό μ ‘κ·Όν•˜λŠ” 지 미리 μ‘μš©ν”„λ‘œκ·Έλž¨μ— μ •μ˜ν•΄μ•Ό ν•œλ‹€

- λ°μ΄ν„°λ² μ΄μŠ€κ°€ 생성될 λ•Œ 각각의 관계λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ •μ˜ν•΄μ•Ό ν•œλ‹€

- λ ˆμ½”λ“œλ“€μ΄ 링크둜 μ—°κ²°λ˜μ–΄ μžˆμœΌλ―€λ‘œ λ ˆμ½”λ“œ ꡬ쑰λ₯Ό λ³€κ²½ν•˜κΈ° μ–΄λ ΅λ‹€

 

2) λ„€νŠΈμ›Œν¬ DBMS ꡬ쑰

- λ ˆμ½”λ“œλ“€μ΄ λ…Έλ“œλ‘œ, λ ˆμ½”λ“œλ“€ μ‚¬μ΄μ˜ 관계가 κ°„μ„ μœΌλ‘œ ν‘œν˜„λ˜λŠ” κ·Έλž˜ν”„λ₯Ό 기반으둜 ν•˜λŠ” λ„€νŠΈμ›Œν¬ 데이터 λͺ¨λΈμ„ μ‚¬μš©

- λ„€νŠΈμ›Œν¬ DBMSμ—μ„œλ„ λ ˆμ½”λ“œλ“€μ΄ 링크둜 μ—°κ²°λ˜μ–΄ μžˆμœΌλ―€λ‘œ λ ˆμ½”λ“œ ꡬ쑰λ₯Ό λ³€κ²½ν•˜κΈ° μ–΄λ ΅λ‹€

 

3) 관계 DBMS(RDBMS) ~ MY SQL Server, Oracle, MySQL

μž₯점

- λͺ¨λΈμ΄ 간단해 μ΄ν•΄ν•˜κΈ° 쉽닀

- μ‚¬μš©μžλŠ” μžμ‹ μ΄ μ›ν•˜λŠ” κ²ƒλ§Œ λͺ…μ‹œν•˜κ³  λ°μ΄ν„°μ˜ μœ„μΉ˜μ™€ μ ‘κ·Ό 방법은 DBMSκ°€ κ²°μ •ν•œλ‹€

 

4) 객체 지ν–₯ DBMS

- 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ„ 기반으둜 ν•˜λŠ” 데이터 λͺ¨λΈ

 

μž₯점 : 데이터와 ν”„λ‘œκ·Έλž¨μ„ κ·Έλ£Ήν™”ν•˜κ³ , λ³΅μž‘ν•œ 객체듀을 μ΄ν•΄ν•˜κΈ° μ‰¬μš°λ©°, μœ μ§€μ™€ 변경이 μš©μ΄ν•˜λ‹€

ex) ONTOS, OpenODB, GemStone, ObjectStore, O2λ“±

 

5) 객체 관계 DBMS

- DBMS에 객체 지ν–₯ λŒ€λ…μ„ ν†΅ν•©ν•œ 객체 관계 데이터 λͺ¨λΈμ΄ μ œμ•ˆλ¨

ex) 였라클, infomix, Universal Serverλ“±

1 - 4. DBMS μ–Έμ–΄

1) 데이터 μ •μ˜μ–΄ (DDL)

- μ‚¬μš©μžλŠ” 데이터 μ •μ˜μ–΄λ₯Ό μ‚¬μš©ν•΄ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆλ₯Ό μ •μ˜

- 데이터 μ •μ˜μ–΄λ‘œ λͺ…μ‹œλœ λ¬Έμž₯이 μž…λ ₯되면 DBMSλŠ” μ‚¬μš©μžκ°€ μ •μ˜ν•œ μŠ€ν‚€λ§ˆμ— λŒ€ν•œ λͺ…μ„Έλ₯Ό μ‹œμŠ€ν…œ μΉ΄νƒˆλ‘œκ·Έ λ˜λŠ” 데이터 사전에 μ €μž₯

 

데이터 μ •μ˜μ–΄μ˜ 기본적 κΈ°λŠ₯

- 데이터 λͺ¨λΈμ—μ„œ μ§€μ›ν•˜λŠ” 데이터 ꡬ쑰λ₯Ό 생성

- 데이터 ꡬ쑰의 λ³€κ²½

- 데이터 ꡬ쑰의 μ‚­μ œ

- 데이터 접근을 μœ„ν•΄ νŠΉμ • μ–΄νŠΈλ¦¬λ·°νŠΈ μœ„μ— 인덱슀λ₯Ό μ •μ˜

 

2) 데이터 μ‘°μž‘μ–΄(DML)

- μ‚¬μš©μžλŠ” 데이터 μ‘°μž‘μ–΄λ₯Ό μ‚¬μš©ν•΄ λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄ μ›ν•˜λŠ” 데이터λ₯Ό 검색, μˆ˜μ •, μ‚½μž…, μ‚­μ œ

- 절차적 언어와 λΉ„μ ˆμ°¨μ  μ–Έμ–΄

cf)

절차적 μ–Έμ–΄ : ν”„λ‘œκ·Έλž¨μ„ 순차적으둜 μ‹€ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘, λͺ…령어와 ν•¨μˆ˜μ˜ μ—°μ†μœΌλ‘œ 이루어진 ν”„λ‘œμ‹œμ €λ₯Ό μ‚¬μš©ν•΄ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€. C, Pascal, Fortan 등이 μžˆλ‹€

- 관계 DBMSμ—μ„œ μ‚¬μš©λ˜λŠ” SQL은 λŒ€ν‘œμ μΈ λΉ„μ ˆμ°¨μ  μ–Έμ–΄

- λŒ€λΆ€λΆ„ 데이터 μ‘°μž‘μ–΄λŠ” SUM, COUNT, AVG와 같은 λ‚΄μž₯ ν•¨μˆ˜λ₯Ό λ‹΄κ³  μžˆλ‹€

- 데이터 μ‘°μž‘μ–΄λŠ” μž…μΆœλ ₯을 톡해 μˆ˜ν–‰λ˜κ±°λ‚˜ C, μ½”λ³Ό λ“±μ˜ κ³ κΈ‰ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ— λ‚΄ν¬λ˜μ–΄ μ‚¬μš©λœλ‹€

 

데이터 μ‘°μž‘μ–΄μ˜ κΈ°λ³Έ κΈ°λŠ₯

- λ°μ΄ν„°μ˜ μ‚½μž…

- λ°μ΄ν„°μ˜ 검색

- λ°μ΄ν„°μ˜ μˆ˜μ •

- λ°μ΄ν„°μ˜ μ‚­μ œ

 

3) 데이터 μ œμ–΄μ–΄(DCL) : μ‚¬μš©μžλŠ” 데이터 μ œμ–΄μ–΄λ₯Ό μ‚¬μš©ν•΄ λ°μ΄ν„°λ² μ΄μŠ€ νŠΈλžœμ μ…˜μ„ λͺ…μ‹œν•˜κ³  κΆŒν•œμ„ λΆ€μ—¬ν•˜κ±°λ‚˜ μ·¨μ†Œ

1 - 5. DBMS μ‚¬μš©μž

1) μ‘μš© ν”„λ‘œκ·Έλž˜λ¨Έ

- DBμ—μ„œ νŠΉμ • μ‘μš©μ„ κ΅¬ν˜„ν•˜λŠ” μ—­ν• 

- ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λ©° DB에 μ ‘κ·Όν•  λ•ŒλŠ” 제곡된 데이터 μ‘°μž‘μ–΄λ₯Ό μ‚¬μš©ν•œλ‹€

- ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μž‘μ„±ν•œ ν”„λ‘œκ·Έλž¨μ— 따라 λ°μ΄ν„°λ² μ΄μŠ€μ— μ΅œμ’… μ‚¬μš©μžλ“€μ΄ 반볡적으둜 μ ‘κ·Ό 및 ν”„λ‘œκ·Έλž¨μ΄ μˆ˜ν–‰λ˜λ―€λ‘œ ν”„μž‘μ„± νŠΈλžœμ μ…˜ λ˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λΌκ³  ν•œλ‹€

 

2) DBA

- λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ¦¬μžλŠ” 쑰직 μ—¬λŸ¬ λΆ€λΆ„μ˜ μƒμ΄ν•œ μš”κ΅¬λ₯Ό λ§Œμ‘±μ‹œν‚€κΈ° μœ„ν•΄ μΌκ΄€μ„±μžˆλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆλ₯Ό μƒμ„±ν•˜κ³  μœ μ§€ν•˜λŠ” μ‚¬λžŒ(νŒ€)

- 물리 DB의 변경을 μˆ˜ν–‰

- λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆμ˜ 생성과 λ³€κ²½

~ 무결성 μ œμ•½μ‘°κ±΄ λͺ…μ‹œ

~ μ‚¬μš©μž κΆŒν•œμ„ ν—ˆμš©ν•˜κ±°λ‚˜ μ·¨μ†Œ, μ‚¬μš©μž μ—­ν•  관리

~ μ €μž₯ ꡬ쑰와 μ ‘κ·Ό 방법(물리적 μŠ€ν‚€λ§ˆ) μ •μ˜

~ λ°±μ—…κ³Ό 회볡

~ ν‘œμ€€ν™” μ‹œν–‰

 

3) μ˜€νΌλ ˆμ΄ν„°(μΈν”„λΌνŒ€)

- DBMSκ°€ 운영되고 μžˆλŠ” 컴퓨터 μ‹œμŠ€ν…œκ³Ό 전산싀을 κ΄€λ¦¬ν•˜λŠ” μ‚¬λžŒ

 

4) μ΅œμ’… μ‚¬μš©μž

- μ§ˆμ˜ν•˜κ±°λ‚˜ κ°±μ‹ ν•˜κ±°λ‚˜ λ³΄κ³ μ„œλ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒ

- μ΅œμ’… μ‚¬μš©μžλŠ” λ‹€μ‹œ λ°μ΄ν„°λ² μ΄μŠ€ 쿼리문을 μ‚¬μš©ν•΄ 맀번 λ‹€λ₯Έ 정보λ₯Ό μ°ΎλŠ” 캐주얼 μ‚¬μš©μžμ™€ κΈ°μž‘μ„± νŠΈλžœμ μ…˜μ„ 주둜 λ°˜λ³΅ν•΄ μ‚¬μš©ν•˜λŠ” 초보 μ‚¬μš©μžλ‘œ κ΅¬λΆ„λœλ‹€

2. λ°μ΄ν„°λ² μ΄μŠ€

2 - 1. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(SQL)

- λ™μΌν•œ ꡬ쑰(λ¦΄λ ˆμ΄μ…˜)의 κ΄€μ μ—μ„œ λͺ¨λ“  데이터λ₯Ό λ…Όλ¦¬μ μœΌλ‘œ ꡬ성

- 선언적 μ§ˆμ˜μ–΄λ₯Ό 톡해 데이터 접근을 제곡

- μ‘μš© ν”„λ‘œκ·Έλž¨λ“€μ€ λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄ λ ˆμ½”λ“œλ“€μ˜ μ–΄λ–€ μˆœμ„œμ™€λ„ λ¬΄κ΄€ν•˜κ²Œ μž‘μ„±λ¨

- μ‚¬μš©μžλŠ” μ›ν•˜λŠ” λ°μ΄ν„°λ§Œ λͺ…μ‹œν•˜κ³ , μ–΄λ–»κ²Œ 데이터λ₯Ό 찾을지 λͺ…μ‹œν•  ν•„μš” μ—†λ‹€

- κ°€μž₯ λ‹¨μˆœν•œ κ°œλ…μ˜ 데이터 λͺ¨λΈ

 

νŠΉμ§•

- 바탕이 λ˜λŠ” 데이터 ꡬ쑰둜 κ°„λ‹¨ν•œ ν…Œμ΄λΈ”μ„ μ‚¬μš©

- μ€‘μ²©λœ λ³΅μž‘ν•œ ꡬ쑰가 μ—†λ‹€

- 집합 μœ„μ£Όλ‘œ 데이터λ₯Ό 처리

- μˆ™λ ¨λ˜μ§€ μ•Šμ€ μ‚¬μš©μžλ„ μ‰½κ²Œ 이해할 수 μžˆλ‹€

- ν‘œμ€€ λ°μ΄ν„°λ² μ΄μŠ€ μ‘μš©μ— λŒ€ν•œ 쒋은 μ„±λŠ₯을 보인닀

 

λ¦΄λ ˆμ΄μ…˜ : 2μ°¨μ›μ˜ ν…Œμ΄λΈ”(μŠ€ν”„λ ˆλ“œ μ‹œνŠΈμ™€ μœ μ‚¬)

λ ˆμ½”λ“œ : λ¦΄λ ˆμ΄μ…˜μ˜ 각 ν–‰

νŠœν”Œ : λ ˆμ½”λ“œμ˜ 곡식 μš©μ–΄ = 둜우(ROW)

속성 : λ¦΄λ ˆμ΄μ…˜μ—μ„œ 이름을 가진 ν•˜λ‚˜μ˜ μ—΄ = 컬럼(COLUMN)

 

* 파일 μ‹œμŠ€ν…œμ€ λ ˆμ½”λ“œλ§Œ μžˆλŠ” 파일 ν˜•νƒœλ‘œ 데이터가 μ‘΄μž¬ν•˜μ§€λ§Œ, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” 속성, νŠœν”Œμ„ 가진 λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”) ν˜•νƒœλ‘œ μ‘΄μž¬ν•œλ‹€

 

도메인

- ν•œ 속성에 λ‚˜νƒ€λ‚  수 μžˆλŠ” κ°’λ“€μ˜ 집합

- 각 μ†μ„±μ˜ 도메인은 μ›μžκ°’

- ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ 데이터 νƒ€μž…κ³Ό μœ μ‚¬ν•˜λ‹€

- λ™μΌν•œ 도메인이 μ—¬λŸ¬ μ†μ„±μ—μ„œ μ‚¬μš©λ  수 μžˆλ‹€

- 볡작 μ†μ„±μ΄λ‚˜ λ‹€μΉ˜ μ• νŠΈλ¦¬λ·°νŠΈ(μ• νŠΈλ¦¬λ·°νŠΈ ν•˜λ‚˜μ— μ—¬λŸ¬ 값이 λ“€μ–΄κ°ˆ 수 μžˆλŠ” 것 ex) ν•™κ³Ό 사무싀 μ „ν™”λ²ˆν˜Έ)

 

μ°¨μˆ˜μ™€ 카디널리티

- 차수 : ν•œ λ¦΄λ ˆμ΄μ…˜μ— λ“€μ–΄μžˆλŠ” μ†μ„±μ˜ 수(ν•„λ“œ 수)

~ 유효 λ¦΄λ ˆμ΄μ…˜μ˜ μ΅œμ†Œ μˆ˜λŠ” 1 : 속성이 1개 이상 μžˆμ–΄μ•Ό λ¦΄λ ˆμ΄μ…˜μ΄ λœλ‹€

~ λ¦΄λ ˆμ΄μ…˜μ˜ μ°¨μˆ˜λŠ” 자주 λ°”λ€Œμ§€ μ•ŠλŠ”λ‹€ : ν…Œμ΄λΈ” μŠ€ν‚€λ§ˆλ₯Ό λ³€κ²½ν•  경우 전체 λ‘œμš°μ— λ°˜μ˜λ˜μ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— μ²˜λ¦¬κ°€ μ€‘λ‹¨λœλ‹€

- 카디널리티 : λ¦΄λ ˆμ΄μ…˜μ˜ νŠœν”Œ(둜우 수)

~ μœ νš¨ν•œ λ¦΄λ ˆμ΄μ…˜μ€ μΉ΄λ””λ„λ¦¬νŠΈ 0을 κ°€μ§ˆ 수 μžˆλ‹€

~ λ¦΄λ ˆμ΄μ…˜μ˜ μΉ΄λ””λ„λ¦¬ν‹°λŠ” μ‹œκ°„μ΄ 지남에 따라 계속 λ³€ν•œλ‹€

2 - 2. λΉ„κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(NoSQL)

- κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ³΄λ‹€ 더 μœ΅ν†΅μ„± μžˆλŠ” 데이터 λͺ¨λΈμ„ μ‚¬μš©ν•˜λ©° 데이터 μ €μž₯ 및 검색에 νŠΉν™”λœ λ§€μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•œλ‹€

- NoSQL은 λΆ„μ‚° ν™˜κ²½μ—μ„œμ˜ 데이터 처리λ₯Ό λ”μš± λΉ λ₯΄κ²Œ ν•˜κΈ° μœ„ν•΄ κ°œλ°œλ˜μ—ˆλ‹€

 

νŠΉμ§•

- κ±°λŒ€ν•œ Map으둜 Key-Value ν˜•μ‹μ„ 지원

- μ»¬λŸΌκ°„ 관계λ₯Ό μ •μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€(PK λ“±)

- μŠ€ν‚€λ§ˆμ— λŒ€ν•œ μ •μ˜κ°€ μ—†λ‹€

 

μ’…λ₯˜

1) λ¬Έμ„œν˜• λ°μ΄ν„°λ² μ΄μŠ€

- 데이터λ₯Ό ν…Œμ΄λΈ”μ΄ μ•„λ‹Œ λ¬Έμ„œμ²˜λŸΌ μ €μž₯ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€

- JSONκ³Ό μœ μ‚¬ν•œ ν˜•μ‹μœΌλ‘œ 데이터 λ¬Έμ„œν™”, μ €μž₯

- 각 λ¬Έμ„œλŠ” ν•˜λ‚˜μ˜ 속성에 λŒ€ν•œ 데이터λ₯Ό κ°–κ³  있고, μ»¬λ ‰μ…˜μ΄λΌλŠ” 그룹으둜 λ¬Άμ–΄ 관리 ~ MongoDB

2) Key - Value νƒ€μž…

- 속성을 Key - Value의 쌍으둜 λ‚˜νƒ€λ‚΄λŠ” 데이터λ₯Ό λ°°μ—΄μ˜ ν˜•νƒœλ‘œ μ €μž₯

- Key : 속성 Value : 속성에 μ—°κ²°λœ 데이터 κ°’

- Redis, Dynamo λ“±

3) Wide - Column Store λ°μ΄ν„°λ² μ΄μŠ€

- λ°μ΄ν„°λ² μ΄μŠ€μ˜ 열에 λŒ€ν•œ 데이터λ₯Ό μ§‘μ€‘μ μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€

- 각 μ—΄μ—λŠ” Key - Value ν˜•μ‹μœΌλ‘œ 데이터가 μ €μž₯되고, 컬럼 νŒ¨λ°€λ¦¬λΌκ³  ν•˜λŠ” μ—΄μ˜ 집합체 λ‹¨μœ„λ‘œ 데이터λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€

- ν•˜λ‚˜μ˜ 행에 λ‹€μˆ˜μ˜ 열을 포함할 수 μžˆμ–΄ μœ μ—°μ„±μ΄ λ†’λ‹€

- 데이터 μ²˜λ¦¬μ— ν•„μš”ν•œ 열을 μœ μ—°ν•˜κ²Œ 선택할 수 μžˆμ–΄ 규λͺ¨κ°€ 큰 데이터 뢄석에 주둜 μ‚¬μš©λœλ‹€

- Cassandra, HBase λ“±

4) κ·Έλž˜ν”„ λ°μ΄ν„°λ² μ΄μŠ€

- 자료ꡬ쑰의 κ·Έλž˜ν”„μ™€ λΉ„μŠ·ν•œ ν˜•μ‹μœΌλ‘œ 데이터 κ°„ 관계λ₯Ό κ΅¬μ„±ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€

- λ…Έλ“œμ— 속성별 데이터 μ €μž₯, 각 λ…Έλ“œκ°„ κ΄€κ³„λŠ” μ„ μœΌλ‘œ ν‘œν˜„ν•œλ‹€. Neo4J, InfiniteGraph λ“±

- μž₯점 : λŒ€μš©λŸ‰ 데이터 처리 적합, 읽기보닀 μ“°κΈ°κ°€ λΉ λ₯΄κ³  RDB보닀 읽기 μ“°κΈ°κ°€ λͺ¨λ‘ 빠름, 데이터 λͺ¨λΈλ§μ΄ μœ μ—°, ν™•μž₯성이 μ’‹μ•„ 검색에 유리, μ΅œμ ν™”λœ ν‚€ μ €μž₯ 기법을 μ‚¬μš©ν•΄ μ‘λ‹΅μ†λ„λ‚˜ 처리효율 λ“±μ—μ„œ μ„±λŠ₯이 λ›°μ–΄λ‚˜λ‹€

- 단점 : 쿼리 μ²˜λ¦¬μ‹œ 데이터λ₯Ό νŒŒμ‹± ν›„ 연산을 ν•΄μ•Όν•˜λ―€λ‘œ 큰 크기의 documentλ₯Ό λ‹€λ£° λ•Œ μ„±λŠ₯이 μ €ν•˜λ¨

2 - 3. SQL vs NoSQL

1) SQL μ‚¬μš©μ΄ μ ν•©ν•œ 경우

1. λ°μ΄ν„°λ² μ΄μŠ€μ˜ ACID μ„±μ§ˆμ„ μ€€μˆ˜ν•΄μ•Ό ν•˜λŠ” 경우

- SQL을 μ‚¬μš©ν•  λ•Œ DB와 μƒν˜Έμž‘μš© 방식을 μ •ν™•ν•˜κ²Œ κ·œμ •ν•  수 μžˆμ–΄, DBμ—μ„œ 데이터λ₯Ό μ²˜λ¦¬ν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” μ˜ˆμ™Έ 상황을 쀄이고 λ°μ΄ν„°λ² μ΄μŠ€μ˜ 무결성을 λ³΄ν˜Έν•  수 μžˆλ‹€

- μ „μž μƒκ±°λž˜λ₯Ό 포함, λͺ¨λ“  금육 μ„œλΉ„μŠ€ λͺ©μ μ˜ SW κ°œλ°œμ€ λ°˜λ“œμ‹œ ACIDκ°€ μ€€μˆ˜λ˜μ–΄μ•Ό ν•˜λ―€λ‘œ SQL을 μ‚¬μš©ν•œλ‹€

 

2. μ†Œν”„νŠΈμ›¨μ–΄μ— μ‚¬μš©λ˜λŠ” 데이터가 ꡬ쑰적이고 일관적인 경우

- μ†Œν”„νŠΈμ›¨μ–΄(ν”„λ‘œμ νŠΈ)의 규λͺ¨κ°€ λ§Žμ€ μ„œλ²„λ₯Ό ν•„μš”λ‘œ ν•˜μ§€ μ•Šκ³  μΌκ΄€λœ 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 RDBλ₯Ό μ‚¬μš©

- NoSQL은 λ‹€μ–‘ν•œ 데이터 νƒ€μž…κ³Ό 높은 νŠΈλž˜ν”½λ„ μ§€μ›ν•˜λ„λ‘ μ„€κ³„λ˜μ–΄ μžˆμ–΄ ꡳ이 μ‚¬μš©ν•  ν•„μš”κ°€ μ—†λ‹€

 

2) NoSQL μ‚¬μš©μ΄ μ ν•©ν•œ 경우

1. λ°μ΄ν„°μ˜ ꡬ쑰가 거의 λ˜λŠ” μ „ν˜€ μ—†λŠ” λŒ€μš©λŸ‰ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 경우

- λŒ€λΆ€λΆ„μ˜ NoSQL DBλŠ” μ €μž₯ 데이터 μœ ν˜•μ˜ μ œν•œμ΄ μ—†λ‹€

- SW κ°œλ°œμ— μ •ν˜•ν™”λ˜μ§€ μ•Šμ€ λŒ€λŸ‰μ˜ 데이터가 ν•„μš”ν•œ 경우 NoSQL 적용이 보닀 효율적

 

2. ν΄λΌμš°λ“œ μ»΄ν“¨νŒ… 및 μ €μž₯곡간을 μ΅œλŒ€ν•œ ν™œμš©ν•˜λŠ” 경우

- ν΄λΌμš°λ“œ 기반으둜 λ°μ΄ν„°λ² μ΄μŠ€ μ €μž₯μ†Œλ₯Ό κ΅¬μΆ•ν•˜λ©΄, μ €λ ΄ν•œ λΉ„μš©μ˜ μ†”λ£¨μ…˜μ„ μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€

- μ†Œν”„νŠΈμ›¨μ–΄ λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν™•μž₯성이 μ€‘μš”ν•˜λ‹€λ©΄, λ²ˆκ±°λ‘­μ§€ μ•Šκ²Œ ν™•μž₯ν•  수 μžˆλŠ” NoSQL이 적합할 수 μžˆλ‹€

 

3. λΉ λ₯΄κ²Œ μ„œλΉ„μŠ€λ₯Ό κ΅¬μΆ•ν•˜λŠ” κ³Όμ •μ—μ„œ 데이터 ꡬ쑰λ₯Ό 자주 μ—…λ°μ΄νŠΈν•˜λŠ” 경우

- μŠ€ν‚€λ§ˆλ₯Ό 미리 μ€€λΉ„ν•  ν•„μš”κ°€ μ—†μ–΄ 개발 속도가 빨라진닀

- λ‹€μš΄νƒ€μž„(DB μ„œλ²„λ₯Ό 내리고 μ˜€ν”„λΌμΈμ—μ„œ 데이터 처리 μ§„ν–‰ν•˜λŠ” μ‹œκ°„)없이 데이터 ꡬ쑰λ₯Ό 자주 μ—…λ°μ΄νŠΈν•΄μ•Ό ν•˜λŠ” 경우, μŠ€ν‚€λ§ˆλ₯Ό 맀번 μˆ˜μ •ν•΄μ•Ό ν•˜λŠ” RDB보닀 NoSQL DBκ°€ 더 μ ν•©ν•˜λ‹€

 

 

728x90