개발 지식 공유, 복습

모각코 Part 5 본문

모각코

모각코 Part 5

like_sonny 2022. 11. 29. 21:48

이번주는 데이터베이스를 주제로 공부했습니다.

 

데이터베이스는 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음이다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(Database Management System)이라 하며 데이터베이스 안에 있는 데이터들은 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행한다.

 

  • 데이터베이스 구성

    1. 엔터티: 사람, 장소, 물건 등 여러 개의 속성을 지닌 명사로, 다른 엔터티에 종속적인 약한 엔터티와 종속적이지 않은         강한 엔터티로 나뉜다.

    2. 릴레이션: 데이터베이스에서 정보를 구분하여 저장하는 기본 단위로, NoSQL에서는 '컬렉션'이라고 한다. MySQL의       구조는 레코드-테이블-데이터베이스, NoSQL은 도큐먼트-컬렉션-데이터베이스로 이루어져 있다.

    3. 속성: 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보이다.

    4. 도메인: 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합이다. ex) 성별은 {남, 여}로 구성

    5. 관계: 여러 테이블이 있을 때 서로의 관계를 정의하는 것으로, 1대1, 1:N, N:M 관계가 있다.

    6. 키: 테이블 간 관계를 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치로, 기본키, 외래키, 후보키, 슈퍼키,      대체키가 있다.

 

  • ERD

    ERD는 시스템의 요구 사항을 기반으로 작성되며 데이터베이스를 구축한 이후에도 디버깅 또는 프로세스 재설계가 필요한 경우에도 설계도 역할을 담당한다. 하지만 비정형 데이터를 표현하는 것엔 단점이 있다.

 

  • 정규화

    정규화 과정은 릴레이션 간 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나 이를 해결하거나, 저장 공간을        효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정이다. 정규형 원칙을 기반으로 만들어가는데 제1정규          형, 제2정규형, 제3정규형, 보이스/코드 정규형, 제4정규형, 제5정규형이 있다.

  • 제1정규형

        릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값으로만 구성되어야 한다. 릴레이션의 속성 값 중 한개의 기          본키에 대해 2개 이상의 값을 가지는 반복 집합이 있으면 안된다.

  • 제2정규형

        릴레이션이 제1정규형이고 부분 함수의 종속성을 제거한 형태로, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종          속적인 것이다.

  • 제3정규형

        제2정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않은 상태이다.

  • 보이스/코드 정규형

        제3정규형이고 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가            후보키인 상태이다.

 

  • 트랜잭션

    트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위로, 원자성, 일관성, 독립성, 지속성 즉,      ACID 특징을 가지고 있다.

  •  원자성

        트랜잭션과 관련된 일을 모두 수행되었거나 되지 않았거나를 보장하는 특징으로, 쿼리가 성공적으로 처리되었다고           확정하는 커밋과 문제가 생겨 모두 수행되지 않음을 보장하는 롤백으로 구성되었다.

  • 일관성

        '허용된 방식'으로만 데이터를 변경해야 하는 것을 의미한다.

  • 독립성

        트랜잭션 수행 시 서로 끼어들지 못하는 것으로, 복수의 병렬 트랜잭션은 서로 격리되어 순차적으로 실행되는 것처럼          작동되야 하고 데이터베이스에는 여러 사용자가 같은 데이터에 접근할 수 있도록 한다.

  • 지속성

        성공적으로 수행된 트랜잭션은 영원히 반영되어야 하는 것으로, 장애가 발생해도 원래 상태로 복구하는 체크섬, 저널          링 등의 회복 기능이 있어야 한다.

 

  • 데이터베이스 종류
  • 관계형 데이터베이스 (RDBMS)

        행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스로, SQL 언어를사용한다. 관계형 데이터베이스의          종류로 MySQL, 오라클 등이 있다.

  • NoSQL

        SQL을 사용하지 않는 데이터베이스로, 대표적으로 MongoDB가 있다.

 

  • 인덱스

    인덱스는 데이터를 빠르게 찾을 수 있는 장치로, 보통 B-트리 자료구조로 이루어져 있다.

 

  • 조인 (Join)

    조인은 2개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것으로, MySQL에서는 JOIN, MongoDB에서는 lookup이        라는 쿼리로 처리한다. 조인은 내부 조인, 왼쪽 조인, 오른쪽 조인, 합집합 조인으로 나뉜다.

  • 내부 조인 (inner join): 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표기
  • 왼쪽 조인 (left outer join): 왼쪽 테이블의 모든 행이 결과 테이블에 표기
  • 오른쪽 조인 (right outer join): 오른쪽 테이블의 모든 행이 결과 테이블에 표기
  • 합집합 조인 (full outer join): 두 개의 테이블을 기반으로 조인 조건에 만족하지 않는 행까지 모두 표기

*** 신한카드 면접 질문 ***

1. 데이터베이스에서의 Dead Lock은?

여러 트랜잭션들이 실행하지 못하고 서로 무한정 기다리는 상태, 이를 해결하기 위한 방법으로 1) 각 트랜잭션이 실행되기 전에 필요한 데이터를 모두 로킹 (Locking)하는 예방 기법과 2) 자원을 할당할 때 시간 스탬프를 사용하여 교착 상태가 일어나지 않도록 회피하는 회피 기법이 존재

 

2. Commit과 Rollback에 대해 설명

커밋: 트랜잭션이 발생할 때 변경되는 내용들이 완료될 때 물리적으로 저장하는 과정

롤백: 임의의 DML 트랜잭션이 실행되고 있다 하더라도 커밋되기 전에는 언제든지 전의 상태로 되돌리는 과정

'모각코' 카테고리의 다른 글

모각코 Part 6  (0) 2022.11.30
모각코 Part 4  (1) 2022.11.13
모각코 Part 3  (0) 2022.11.10
모각코 Part 2  (0) 2022.10.19
모각코 Part 1  (1) 2022.10.03