복습 - 데이터베이스(DB)

DW J·2022년 8월 19일
0

review

목록 보기
7/7

1. 데이터베이스

  • 관찰 가능한 대상의 수치, 기호, 문자를 데이터라고 한다
  • 이러한 데이터들이 모이면 의미가 발생하고 정보로 표현한다
  • 정보들을 모아서 보고 싶은 니즈가 발생
  • 정보를 구조화 시켜 만든 데이터의 모음을 데이터베이스라고 한다

1-1) 정형데이터 비정형데이터 반정형데이터

- 정형 데이터(Structured Data)

  • 데이터베이스의 정해진 규칙에 맞게 의미 파악히 쉬운 데이터들을 뜻함
  • 값이 의미를 파악하기 쉽고 규칙적인 값이면 정형 데이터로 인식

- 비정형 데이터(Unstructured Data)

  • 정형 데이터와 반대되는 단어
  • 정해진 규칙없이 값의 의미를 쉽게 파악하기 힘듬
  • 텍스트, 음성, 음악, 영상등의 데이터가 비정형 데이터의 범위에 속함

- 반정형 데이터(Semi-structured Data)

  • 반정형 데이터의 반은 Semi를 말함 (약한 정형 데이터)
  • HTML, XML과 같은 포맷이 반정형 데이터의 범위에 속함
  • 일반적인 데이터 베이스가 아니지만 스키마를 가지고 있음
  • 데이터를 Dump하여 JSON이나 XML형태의 포맷으로 변경하면 반정형 데이터가 됨

ex)

  • JSON 형태로 되어 있는 글 내용 본문 - 반정형 데이터 + 비정형 데이터
  • 데이터 베이스에 저장되어 있는 성별, 나이 - 정형 데이터
  • 데이터 베이스에 저장되어 있는 글의 제목 - 비정형 데이터

데이터 베이스 구조화 방식

데이터베이스 구조화 > 원자성으로 구축 > 관계모델 > 관계형 데이터베이스(RDB)

관계형 데이터베이스(RDB) 설계

1. ERD (Entity-Relation Dragram: 개체 관계도)

  • 하고자 하는 일의 데이터 간의 관계를 구성
  • 추상화 수준이 높고 업무중심적이며 포괄적인 수준의 모델일을 수행
  • 도형이 의미하는 바를 알고 화살표를 통해 관계를 표현

관계도 예시)

2. 스키마

  • 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합
  • 데이터베이스를 구성하는 개체, 속성, 관계 및 데이터 조작 시 값들이 갖는 제약 조건 등을 정의

3. 무결성 제약 조건

  • 개체(Entity) : 중복 값 및 null일 수 없음
  • 참조(Relation) : 외래키는 참조가 가능해야 한다
  • 도메인 : 속성은 원자적이어야 하며, 허용되지 않는 값이 존재하면 안된다

4. 정규화

  • 무결성 제약 조건이 깨졌을 때 조건을 유지하기 위해 변경하는 행위

5. 인덱스

  • 데이터베이스에서 테이블의 탐색 속도향상을 위한 자료구조
  • 기본키 설정 > 클러스터 인덱스 (B+Tree)

클러스터 인덱스 예시)

6. 트랜잭션

  • 논리적인 작업 단위 (모두 변경하거나, 모두 취소하거나)
  • 성공은 Commit, 취소를 Rollback

7. 실시간 트랜잭션 처리 (OLTP)

  • 동시적에 실행되는 트랜잭션이 작업을 성공적으로 마칠 수 있도록 실행 순서를 제어하는 기법
  • 동시성 제어는 병행제어라고도 함
  • 트랜잭션의 직렬화 수행 보장
  • 동시성 제어 기법의 종류 : 락(Lock)킹(고립수준), 타임스템프, 적합성 검증

8. 고립수준 종류

  1. READ uncommitted (LEVEL 0)

    • 트랜잭션의 변경 내용이 Commit이나 Rollback여부에 상관없이
      다른 트랜잭션의 값을 읽을 수 있다
    • 업데이트 된 값을 다른 트랜잭션에서 읽을 수 있다
    • 정합성 문제로 인해 사용하지 않는것이 일반적
  2. READ committed (LEVEL 1)

    • 트랜잭션 수행이 완료되고 Commit된 데이터만 다른 트랜잭션에서 READ하도록 허용
    • 일반적으로 DBMS에서 설정
    • Commit이 되기 전 Undo영역에 백업된 레코드에서 값을 가져오고
      Commit이 끝난 후에 Select를 하면 바뀐 값을 가져온다
  3. REPEATABLE READ (LEVEL 2)

    • 특정 트랜잭션에서 읽고 있는 데이터는 다른 트랜잭션에서 수정/삭제가 불가능
    • 삽입(INSERT)은 가능함
    • 자신의 트랜잭션 번호(ID) 보다 낮은 트랜잭션 번호에서 변경된 것만 읽게 되고
      자신의 트랜잭션 번호보다 높은 트랜잭션에서 변경된 것은 Undo 영역에 백업 된 레코드를 읽음
    • Undo 영역에 백업된 레코드가 많아지면 성능이 떨어짐
  4. SERIALIZABLE (LEVEL 3)

    • 가장 단순하고 엄격한 격리
    • 모든 동작이 직렬화
    • 특정 트랜잭션에서 읽고 있는 데이터는 다른 트랜잭션에서 수정/삽입/삭제가 불가능
    • 동시성이 떨어지고 성능이 하락하여 잘 쓰이지 않음

LEVEL이 낮을 수록 동시성은 좋으나 무결성 제약조건이 지켜지지 않음


참조
정형, 비정형, 반정형 데이터 : https://needjarvis.tistory.com/502
ERD : https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81-1N-%EA%B4%80%EA%B3%84-%F0%9F%93%88-ERD-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8
스키마 : https://coding-factory.tistory.com/216
클러스터 인덱스 : https://vaert.tistory.com/110
고립수준 : https://code-lab1.tistory.com/52

profile
잘하는것보다 꾸준히하는게 더 중요하다

0개의 댓글