ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터베이스 관련 정리
    Computer Science 2023. 11. 5. 21:45
    728x90

    제 1 정규화 : Table 칼럼이 Atomic Value가 되도록 테이블을 분해

    1. 각 칼럼이 하나의 속성만 가져야 한다
    2. 하나의 칼럼은 같은 종류/type의 값을 가져야 한다
    3. 각 컬럼이 유일한 이름을 가져야 한다
    4. 칼럼의 순서가 상관이 없어야 한다

     

    제 2 정규화 : 제 1 정규화에 대해 완전 함수 종속

     

    제 3 정규화 : 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해

     

    BCNF 정규화 : 제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해

     

    제 4 정규화 :  BCNF 정규화를 진행한 테이블에 대해 다중값 종속이 없도록 분해

    • 다중값 종속 : 같은 테이블 내 독립적인 두 개 이상의 칼럼이 또 다른 컬럼에 종속되는 것

     

    제 5 정규화 : 제 4 정규화를 만족한 테이블에 대해 비손실 분해를 더이상 할 수 없게끔 분해

    • 조인 종속 : 하나의 릴레이션을 여러 개의 릴레이션으로 분해하였다가, 다시 조인했을 때 데이터 손실이 없고 필요없는 데이터가 생기는 것

     

    *단점

    릴레이션의 분해로 인해 릴레이션 간 JOIN 연산이 많아져, 응답 시간이 느려질 수 있다.

     

    OLTP 데이터베이스 : CRUD가 많이 일어나므로 정규화되는 것이 좋다

    OLAP 데이터베이스 : 분석과 리포팅을 위해 사용되기 때문에 연산의 속도를 위해 반정규화의 대상이 된다.

     

    반정규화

    정규화된 시스템을 성능 향상 및 개발과 운영의 단순화를 위해 역으로 정규화를 수행하는 것. 일반적으로 JOIN을 많이 사용해야 할 경우, 대량의 범위를 자주 처리하는 경우 등 조회에 대한 처리가 중요하다고 판단될 때 부분적으로 반정규화 실행

     

     

    데이터베이스 분할

     

    • 전체 데이터베이스에 모든 데이터를 한 테이블 혹은 데이터베이스에서 관리하기가 어려움
    • 데이터베이스 볼륨이 커지면 커질수록 데이터베이스 읽기/쓰기 성능 감소 -> 데이터베이스  = 병목지점 
    • Sharding / Partitioning

     

    파티셔닝

    • 매우 큰 테이블을 여러 개의 테이블로 분할하는 작업
    • 큰 데이터를 여러 테이블로 나누어 저장하기 때문에 쿼리 성능이 개선될 수 있다.

     

    1. List Partitioning
    2. Range Partitioning
    3. Hash Partitioning
    4. Composite Partitioning

     

    *단점

    테이블간 JOIN에 대한 비용이 증가

    테이블과 인덱스를 따로 파티셔닝할 수 없음

    데이터를 입력 받았을 때 어디에 넣어야 하는지에 대한 연산 오버헤드 발생 가능

    인덱스만으로 해결되는 부분 파티셔닝 적용 시 성능 악화

     

    샤딩

    • 동일한 스키마를 가지고 있는 여러 대의 데이터베이스 서버들에 데이터를 작은 단위로 나누어 분산 저장하는 기법
    • 작은 단위 = 샤드

     

    샤딩 :  수평 파티셔닝의 일종

    파티셔닝은 모든 데이터를 동일한 컴퓨터에 저장하지만, 샤딩은 물리적으로 서로 다른 컴퓨터에 데이터를 분산

    • 서로 다른 컴퓨터에 데이터를 저장하므로, 쿼리 성능 향상과 더불어 부하가 분산되는 효과까지 얻을 수 있다.
    • 샤딩 = 데이터베이스 차원의 수평 확장
    • 샤딩: 데이터베이스 차원이 아닌 애플리케이션 레벨에서 구현하는 것이 일반적

     

    • 플랫폼 차원에서 제공하는 시도가 많음

     

    데이터를 물리적으로 독립된 데이터베이스에 각각 분할하여 저장하므로 여러 샤드에 걸친 데이터를 조인하는 것이 어렵다

    한 데이터베이스에 집중적으로 데이터가 몰리면 Hotspot이 되어 성능이 느려진다

     

    1. Hash Sharding
    2. Range Sharding

     

     

    데이터베이스_공통코드

     

     

    코드와 코드 값으로 구성된 다양한 코드들을 모아서 하나의 테이블에서 관리하는 것

    1. 컬럼이 추가될 일이 없어야 한다
    2. 코드의 이름이 달라야 등록할 있게
    3. 서로 다른 여러 업무에서 코드를 모아놓을 것이기 때문에
    728x90

    'Computer Science' 카테고리의 다른 글

    SettingWithCopyWarning  (1) 2023.11.24
    방화벽  (0) 2023.11.05
    Git  (1) 2023.10.30
    Transaction  (0) 2023.09.06
    [OS] File System에서의 레코드와 필드  (0) 2023.06.22
Designed by Tistory.