DB(Database)/Basic Concept

[DB] λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ

탱저 2021. 3. 12. 01:01

3μž₯. λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ

  • DB, DBMS, DB μ‹œμŠ€ν…œμ˜ 차이 이해
  • DB μ‹œμŠ€ν…œμ˜ ꡬ성 μš”μ†Œ
  • DB의 3단계 κ΅¬μ‘°μ—μ„œ 데이터 λ…λ¦½μ„±μ˜ κ°œλ…μ„ μ‹€ν˜„ν•˜λŠ” 방법 이해
  • DB μ‚¬μš©μžλ³„ νŠΉμ§•
  • DBMS의 ꡬ성


1. λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ˜ μ •μ˜

λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ(DBS, DataBase System)

  • λ°μ΄ν„°λ² μ΄μŠ€μ— 데이터λ₯Ό μ €μž₯ν•˜κ³ , 이λ₯Ό 관리해 쑰직에 ν•„μš”ν•œ 정보λ₯Ό μƒμ„±ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œ
  • (λ‹€μ–‘ν•œ λͺ©μ μ˜ 정보 μ‹œμŠ€ν…œ ꡬ좕에 ν•„μš”ν•œ μ€‘μš”ν•œ 핡심 μš”μ†Œ, 전체적인 μ‹œμŠ€ν…œ 의미)

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

μŠ€ν‚€λ§ˆμ™€ μΈμŠ€ν„΄μŠ€

  • μŠ€ν‚€λ§ˆ(schema): λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ˜λŠ” 데이터 ꡬ쑰와 μ œμ•½ 쑰건 μ •μ˜ν•œ 것
  • μΈμŠ€ν„΄μŠ€(instance): μŠ€ν‚€λ§ˆμ— 따라 λ°μ΄ν„°λ² μ΄μŠ€μ— μ‹€μ œλ‘œ μ €μž₯된 κ°’

3단계 λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰

  • μ‚¬μš©μžμ˜ 관점에 따라 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ„Έ λ‹¨κ³„λ‘œ λ‚˜λˆ”
  • μ™ΈλΆ€ 단계 (external level, κ°œλ³„ μ‚¬μš©μž 관점)
    • DBλ₯Ό κ°œλ³„ μ‚¬μš©μž κ΄€μ μ—μ„œ 이해, ν‘œν˜„
    • DB ν•˜λ‚˜μ— μ™ΈλΆ€ μŠ€ν‚€λ§ˆκ°€ μ—¬λŸ¬ 개 μ‘΄μž¬ν•  수 있음
    • μ™ΈλΆ€ μŠ€ν‚€λ§ˆ
      1. μ™ΈλΆ€ λ‹¨κ³„μ—μ„œ μ‚¬μš©μžμ—κ²Œ ν•„μš”ν•œ DBλ₯Ό μ •μ˜ν•œ 것
      2. 각 μ‚¬μš©μžκ°€ μƒκ°ν•œ DB의 λͺ¨μŠ΅, 즉 논리적 ꡬ쑰 --> μ‚¬μš©μžλ§ˆλ‹€ 닀름 (μ‚¬μš©μž λ³„λ‘œ μ™ΈλΆ€ μŠ€ν‚€λ§ˆ 쑴재)
      3. (= μ„œλΈŒ μŠ€ν‚€λ§ˆ)
  • κ°œλ… 단계 (conceptual level, 쑰직 μ „μ²΄μ˜ 관점)
    • DBλ₯Ό 쑰직 μ „μ²΄μ˜ κ΄€μ μ—μ„œ 이해, ν‘œν˜„
    • DB ν•˜λ‚˜μ— κ°œλ… μŠ€ν‚€λ§ˆκ°€ ν•œ 개 쑴재
    • κ°œλ… μŠ€ν‚€λ§ˆ
      1. κ°œλ… λ‹¨κ³„μ—μ„œ DB μ „μ²΄μ˜ 논리적 ꡬ쑰 μ •μ˜ν•œ 것
      2. 쑰직 μ „μ²΄μ˜ κ΄€μ μ—μ„œ μƒκ°ν•˜λŠ” DB의 λͺ¨μŠ΅
      3. 전체 DBμ—μ„œ μ–΄λ–€ 데이터가 μ €μž₯λ˜λŠ”μ§€, 데이터 κ°„μ—λŠ” μ–΄λ–€ 관계가 μ‘΄μž¬ν•˜κ³  μ–΄λ–€ μ œμ•½μ‘°κ±΄ μžˆλŠ”μ§€μ— λŒ€ν•œ μ •μ˜, 데이터에 λŒ€ν•œ λ³΄μ•ˆ μ •μ±…μ΄λ‚˜ μ ‘κ·Ό κΆŒν•œμ— λŒ€ν•œ μ •μ˜ 포함
      4. (λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ ν•„μš”ν•œ DB μ •μ˜λ˜μ–΄μ•Ό 함 -> 였직 ν•œ 개의 κ°œλ… μŠ€ν‚€λ§ˆ, 일반적으둜 schema라 ν•˜λ©΄ κ°œλ… μŠ€ν‚€λ§ˆμ΄λ‹€.)
  • λ‚΄λΆ€ 단계 (internal level, 물리적 μ €μž₯ μž₯치의 관점)
    • DBλ₯Ό μ €μž₯ μž₯치의 κ΄€μ μ—μ„œ 이해, ν‘œν˜„
    • DB ν•˜λ‚˜μ— λ‚΄λΆ€ μŠ€ν‚€λ§ˆκ°€ ν•˜λ‚˜λ§Œ 쑴재
    • λ‚΄λΆ€ μŠ€ν‚€λ§ˆ
      1. 전체 DBκ°€ μ €μž₯ μž₯μΉ˜μ— μ‹€μ œλ‘œ μ €μž₯λ˜λŠ” 방법 μ •μ˜ν•œ 것
      2. λ ˆμ½”λ“œ ꡬ쑰, ν•„λ“œ 크기, λ ˆμ½”λ“œ μ ‘κ·Ό 경둜 λ“± 물리적 μ €μž₯ ꡬ쑰 μ •μ˜
  • 각 λ‹¨κ³„λ³„λ‘œ λ‹€λ₯Έ 좔상화 제곡 -> λ‚΄λΆ€ λ‹¨κ³„μ—μ„œ μ™ΈλΆ€ λ‹¨κ³„λ‘œ 갈수둝 좔상화 레벨 높아짐
  • (β€» 좔상화: 인간이 μ΄ν•΄ν•˜λŠ” 데 μ–΄λ €μš΄ 것은 μΊ‘μŠν™”, κ°’ 자체만 λ³Ό 수 있게 ν•΄μ£ΌλŠ” κ°œλ…)

3단계 λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰의 사상 λ˜λŠ” 맀핑

  • μŠ€ν‚€λ§ˆ μ‚¬μ΄μ˜ λŒ€μ‘ 관계
    • μ™ΈλΆ€/κ°œλ… 사상: μ™ΈλΆ€ μŠ€ν‚€λ§ˆ, κ°œλ… μŠ€ν‚€λ§ˆμ˜ λŒ€μ‘ 관계 (= μ‘μš© μΈν„°νŽ˜μ΄μŠ€)
    • κ°œλ…/λ‚΄λΆ€ 사상: κ°œλ… μŠ€ν‚€λ§ˆ, λ‚΄λΆ€ μŠ€ν‚€λ§ˆμ˜ λŒ€μ‘ 관계 (= μ €μž₯ μΈν„°νŽ˜μ΄μŠ€)

  • 미리 μ •μ˜λœ 사상 정보λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” 데이터에 μ ‘κ·Ό

β€» λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 3단계 ꡬ쑰둜 λ‚˜λˆ„κ³  λ‹¨κ³„λ³„λ‘œ μŠ€ν‚€λ§ˆλ₯Ό μœ μ§€ν•˜λ©° μŠ€ν‚€λ§ˆ μ‚¬μ΄μ˜ λŒ€μ‘ 관계λ₯Ό μ •μ˜ν•˜λŠ” ꢁ극적인 λͺ©μ ? 데이터 λ…λ¦½μ„±μ˜ μ‹€ν˜„ -> DBS ν•„μš”ν•œ 이유


β€» 데이터 독립성

  • ν•˜μœ„ μŠ€ν‚€λ§ˆ λ³€κ²½ν•˜λ”λΌλ„ μƒμœ„ μŠ€ν‚€λ§ˆκ°€ 영ν–₯ 받지 μ•ŠλŠ” νŠΉμ„±
  • 논리적 데이터 독립성
    • κ°œλ… μŠ€ν‚€λ§ˆκ°€ λ³€κ²½λ˜μ–΄λ„ μ™ΈλΆ€ μŠ€ν‚€λ§ˆλŠ” 영ν–₯ 받지 μ•ŠμŒ
    • κ°œλ… μŠ€ν‚€λ§ˆ λ³€κ²½λ˜λ©΄ κ΄€λ ¨λœ μ™ΈλΆ€/κ°œλ… 사상 (= μ‘μš© μΈν„°νŽ˜μ΄μŠ€)만 μ •ν™•ν•˜κ²Œ μˆ˜μ •ν•΄μ£Όλ©΄ 됨

  • 물리적 데이터 독립성
    • λ‚΄λΆ€ μŠ€ν‚€λ§ˆ λ³€κ²½λ˜μ–΄λ„ κ°œλ… μŠ€ν‚€λ§ˆλŠ” 영ν–₯ 받지 μ•ŠμŒ
    • λ‚΄λΆ€ μŠ€ν‚€λ§ˆ λ³€κ²½λ˜λ©΄ κ΄€λ ¨λœ κ°œλ…/λ‚΄λΆ€ 사상 (= μ €μž₯ μΈν„°νŽ˜μ΄μŠ€)만 μ •ν™•ν•˜κ²Œ μˆ˜μ •ν•΄μ£Όλ©΄ 됨

데이터 사전

  • (= μ‹œμŠ€ν…œ μΉ΄νƒˆλ‘œκ·Έ) , μŠ€ν‚€λ§ˆ-μŠ€ν‚€λ§ˆ 맀핑 정보(뢀가정보) μžˆμ–΄μ•Ό 보호됨
  • DB에 μ €μž₯λ˜λŠ” 데이터에 κ΄€ν•œ 정보, 즉 메타 데이터λ₯Ό μœ μ§€ν•˜λŠ” μ‹œμŠ€ν…œ λ°μ΄ν„°λ² μ΄μŠ€ (메타 데이터: 데이터에 λŒ€ν•œ 데이터)
  • μŠ€ν‚€λ§ˆ, 사상 정보, λ‹€μ–‘ν•œ μ œμ•½ 정보 μ €μž₯
  • DBMSκ°€ 슀슀둜 생성 + μœ μ§€
  • 일반 μ‚¬μš©μžλ„ μ ‘κ·Ό κ°€λŠ₯ν•˜μ§€λ§Œ μ €μž₯ λ‚΄μš© κ²€μƒ‰λ§Œ ν•  수 있음

데이터 디렉터리

  • 데이터 사전에 μžˆλŠ” 데이터에 μ‹€μ œλ‘œ μ ‘κ·Όν•˜λŠ” 데 ν•„μš”ν•œ μœ„μΉ˜ 정보λ₯Ό μ €μž₯ν•˜λŠ” μ‹œμŠ€ν…œ λ°μ΄ν„°λ² μ΄μŠ€
  • 일반 μ‚¬μš©μžμ˜ μ ‘κ·Ό ν—ˆμš© X (데이터 사전과 차이)

μ‚¬μš©μž λ°μ΄ν„°λ² μ΄μŠ€

  • μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ μ΄μš©ν•˜λŠ” 데이터가 μ €μž₯λ˜μ–΄ μžˆλŠ” 일반 λ°μ΄ν„°λ² μ΄μŠ€

3. λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©μž

λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©μž

  • DBλ₯Ό μ΄μš©ν•˜κΈ° μœ„ν•΄ μ ‘κ·Όν•˜λŠ” λͺ¨λ“  μ‚¬λžŒ
  • 이용 λͺ©μ μ— 따라 DB κ΄€λ¦¬μž, μ΅œμ’… μ‚¬μš©μž, μ‘μš© ν”„λ‘œκ·Έλž˜λ¨Έλ‘œ ꡬ뢄

  • λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ¦¬μž
    • λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ 운영 및 관리
    • 주둜 데이터 μ •μ˜μ–΄, 데이터 μ œμ–΄μ–΄ 이용
    • 업무
      1. DB ꡬ성 μš”μ†Œ μ„ μ •
      2. DB μŠ€ν‚€λ§ˆ μ •μ˜(섀계)
      3. 물리적 μ €μž₯ ꡬ쑰, μ ‘κ·Ό 방법 κ²°μ •
      4. 무결성 μœ μ§€ μœ„ν•œ μ œμ•½μ‘°κ±΄ μ •μ˜
      5. λ³΄μ•ˆ 및 μ ‘κ·Ό κΆŒν•œ μ •μ±… κ²°μ •
      6. λ°±μ—… 및 νšŒλ³΅κΈ°λ²• μ •μ˜
      7. μ‹œμŠ€ν…œ λ°μ΄ν„°λ² μ΄μŠ€ 관리
      8. μ‹œμŠ€ν…œ μ„±λŠ₯ κ°μ‹œ, μ„±λŠ₯ 뢄석
      9. λ°μ΄ν„°λ² μ΄μŠ€ μž¬κ΅¬μ„±

  • μ΅œμ’… μ‚¬μš©μž
    • λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘κ·Όν•΄ 데이터λ₯Ό μ‘°μž‘(μ‚½μž…, μ‚­μ œ, μˆ˜μ •, 검색)ν•˜λŠ” μ‚¬λžŒ
    • 주둜 데이터 μ‘°μž‘μ–΄ μ‚¬μš©
    • 캐주얼 μ‚¬μš©μž(DDL, DML μ‚¬μš© κ°€λŠ₯ν•œ μ‚¬λžŒ)와 초보 μ‚¬μš©μžλ‘œ ꡬ뢄

  • μ‘μš© ν”„λ‘œκ·Έλž˜λ¨Έ
    • 데이터 μ–Έμ–΄λ₯Ό μ‚½μž…ν•˜λ©° μ‘μš© ν”„λ‘œκ·Έλž¨ μž‘μ„±
    • 주둜 데이터 μ‘°μž‘μ–΄ μ‚¬μš©

4. 데이터 μ–Έμ–΄

데이터 μ–Έμ–΄

  • μ‚¬μš©μžμ™€ λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ κ°„μ˜ 톡신 μˆ˜λ‹¨
  • 데이터 μ •μ˜μ–΄(DDL)
    • μŠ€ν‚€λ§ˆ μ •μ˜, μˆ˜μ •, μ‚­μ œ (create, alter, drop ..)

  • 데이터 μ‘°μž‘μ–΄(DML)
    • λ°μ΄ν„°μ˜ μ‚½μž…, μ‚­μ œ, μˆ˜μ •, 검색 (select, insert ..)
    • 절차적 데이터 μ‘°μž‘μ–΄ / λΉ„μ ˆμ°¨μ  데이터 μ‘°μž‘μ–΄
      • 절차적 데이터 μ‘°μž‘μ–΄: μ‚¬μš©μžκ°€ μ–΄λ–€ 데이터λ₯Ό μ›ν•˜κ³  κ·Έ 데이터λ₯Ό μ–»κΈ° μœ„ν•΄ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ”μ§€λ„ μ„€λͺ…
      • λΉ„μ ˆμ°¨μ  데이터 μ‘°μž‘μ–΄: μ‚¬μš©μžκ°€ μ–΄λ–€ 데이터λ₯Ό μ›ν•˜λŠ”μ§€λ§Œ μ„€λͺ…, μ–΄λ–»κ²ŒλŠ” DBMSκ°€ μ•Œμ•„μ„œ ν•΄μ€Œ (= 선언적 언어라고도 함)
      • (두뢀λ₯Ό μ‚¬μ˜€λŠ” λ°©λ²•κΉŒμ§€ ꡬ체적으둜 μ•Œλ €μ£ΌλŠ” 심뢀름이 절차적,,, 두뢀λ₯Ό μ‚¬μ˜€λΌκ³ λ§Œ μ§€μ‹œν•˜λŠ” 심뢀름이 λΉ„μ ˆμ°¨μ ,,,)

  • 데이터 μ œμ–΄μ–΄(DCL)
    • λ‚΄μš©μ μœΌλ‘œ ν•„μš”ν•œ κ·œμΉ™, 기법 μ •μ˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©
    • μ‚¬μš© λͺ©μ (=νŠΉμ„±)
      1. 무결성: μ •ν™•, μœ νš¨ν•œ λ°μ΄ν„°λ§Œ μœ μ§€
      2. λ³΄μ•ˆ: ν—ˆκ°€λ°›μ§€ μ•Šμ€ μ‚¬μš©μžμ˜ 데이터 μ ‘κ·Ό 차단, ν—ˆκ°€λœ μ‚¬μš©μžμ— κΆŒν•œ λΆ€μ—¬
      3. 회볡: μž₯μ• κ°€ λ°œμƒν•΄λ„ 데이터 일관성 μœ μ§€
      4. λ™μ‹œμ„± μ œμ–΄: *λ™μ‹œ 곡유 지원
        *

5. λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œμ˜ ꡬ성

λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ

  • λ°μ΄ν„°λ² μ΄μŠ€ 관리와 μ‚¬μš©μžμ˜ 데이터 처리 μš”κ΅¬ μˆ˜ν–‰

  • μ£Όμš” ꡬ성 μš”μ†Œ

    • 질의 처리기 (query processor)

      1. μ‚¬μš©μžμ˜ 데이터 처리 μš”κ΅¬λ₯Ό 해석, 처리
      2. DDL 컴파일러, DML 프리 컴파일러, DML 컴파일러, λŸ°νƒ€μž„ λ°μ΄ν„°λ² μ΄μŠ€ 처리기, νŠΈλžœμž­μ…˜ κ΄€λ¦¬μž λ“± 포함
    • μ €μž₯ 데이터 κ΄€λ¦¬μž (Stored data manager)

      1. λ””μŠ€ν¬μ— μ €μž₯된 λ°μ΄ν„°λ² μ΄μŠ€μ™€ 데이터 사전을 관리, μ ‘κ·Ό (μ—¬κΈ°μ„œ λ””μŠ€ν¬μ— μ €μž₯된 λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘κ·Όν•˜λŠ” 것은 운영체제의 κΈ°λŠ₯이닀. 즉, μ €μž₯ data κ΄€λ¦¬μžλŠ” 운영체제의 도움을 λ°›μ•„ DB 접근을 μˆ˜ν–‰ν•œλ‹€.)

==> 1. μ‚¬μš©μžκ°€ 데이터 μ‘°μž‘μ–΄λ₯Ό 톡해 λ‚ λ¦° queryλ‚˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ— μ‚½μž…λœ ν˜•νƒœλ‘œ λ‚ λ¦° queryλ₯Ό 2. DML μ»΄νŒŒμΌλŸ¬κ°€ λ°›μ•„ DML μ»΄νŒŒμΌλŸ¬λŠ” μ‚½μž…, μ‚­μ œ, μˆ˜μ •, 검색 μš”κ΅¬λ₯Ό λΆ„μ„ν•œ λ‹€μŒ λŸ°νƒ€μž„ DB μ²˜λ¦¬κΈ°κ°€ 이해할 수 μžˆλŠ” ν˜•νƒœλ‘œ 해석 3. λŸ°νƒ€μž„ DB μ²˜λ¦¬κΈ°λŠ” μ‹€μ œλ‘œ 처리 4. μ €μž₯ 데이터 κ΄€λ¦¬μž 톡해 DB μ ‘κ·Όν•˜κ³  DML μ»΄νŒŒμΌλŸ¬λ‘œλΆ€ν„° 전달받은 데이터 처리 μš”κ΅¬λ₯Ό DBμ—μ„œ μ‹€μ œλ‘œ μ²˜λ¦¬ν•˜λŠ” μ—­ν•  λ‹΄λ‹Ή

728x90