상세 컨텐츠

본문 제목

DB

Interview/Tech

by 카페코더 2021. 3. 23. 02:16

본문

반응형

1. 정규화의 목적

하나의 테이블에서 변경된 데이터를 관계를 통해 나머지 부분들로 전파되게 하는것 입니다. 주로 중복을 제거하는 방식으로 정규화를 진행합니다.

2. 역 정규화의 이유

정규화의 장점은 이상 발생의 가능성을 낮추는 것 입니다. 반면 단점은 연산 시간이 증가한다는 점이 있습니다. 이 때 과도한 연산 시간 증가를 해소하기 위해 역 정규화를 실행합니다.

3. 함수적 종속이란?

X와 Y를 속성으로 갖는 어떤 릴레이션이 존재할 때, X값을 알면 Y값을 알 수 있고, X값에 따라 Y값이 변하는 경우를 Y는 X에 함수적 종속이라고 합니다. 이 경우 X를 결정자, Y를 종속자 라고 합니다. 함수적 종속에는 완전 함수적 종속, 부분 함수적 종속, 이행적 함수적 종속이 있습니다.

완전 함수적 종속은 종속자가 기본키에만 종속되거나, 기본키가 여러 속성인 경우 기본키에 해당하는 모든 속성의 부분집합에 종속된 경우를 말합니다.

부분 함수적 종속은 기본키가 아닌 다른 속성에 종속되어 있거나, 기본키가 여러 속성인 경우 기본키에 해당하는 속성 중 일부만 종속되는 경우를 말합니다.

이행적 함수 종속은 한 릴레이션에 X, Y, Z 속성이 존재하고, Z는 Y에 종속이고, Y는 X에 종속일 때 Z는 X에 종속이 성립하는 경우를 말합니다. 즉 Z를 알면 Y를 알고, Y를 알면 X를 알 수 있는 경우를 말합니다.

4. 이상

데이터베이스 장애를 의미합니다. 갱신, 삽입, 삭제 이상이 있습니다.

갱신 이상은 반복된 데이터 중 일부를 갱신할 때 데이터의 불일치가 발생하는 경우를 말합니다.

삽입 이상은 데이터 삽입시 불필요한 정보를 함께 저장해야 필요한 정보를 저장할 수 있는 경우를 말합니다.

삭제 이상은 데이터 삭제시 필요한 정보를 삭제해야 불필요한 정보를 삭제할 수 있는 경우를 말합니다.

5. 무결성 이란?

데이터의 정확성과 일관성을 유지하고 보증하는 것을 말합니다. 개체, 참조, 범위 무결성이 있습니다.

개체 무결성은 모든 테이블은 기본키를 가지며, 기본키로 선택 된 열은 고유해야 하고, 널값을 허용하지 않음을 의미합니다.

참조 무결성은 외래키는 특정 테이블의 기본키 값을 참조해야 하는것을 의미합니다.

범위 무결성은 정의된 범위에서 관계형 데이터베이스의 모든 열이 선언되도록 규정하는것을 의미합니다.

6. 무결성을 유지해야 하는 이유는?

데이터의 입력, 수정, 삭제등의 트랜잭션이 발생할 때 당장은 큰 위험이 없어 보이지만, 누적될 시 데이터가 잘못된 곳에 위치하는 등 큰 문제를 초래해 데이터베이스 유지보수에 어려움이 생기기 때문입니다.

7. 관계형 DB와 비 관계형 DB의 차이점

RDB는 데이터 무결성을 보장하는 장점이 있고, NoSQL은 유연성이 높은 장점이 있습니다. 

RDB는 데이터 저장시 명확하게 정의된 스키마에 저장하지만, NoSQL은 스키마가 없으므로 다양한 종류의 데이터를 저장할 수 있습니다.

RDB는 수평 확장이 어렵고, 수직 확장이 쉬운 특징이 있지만, NoSQL은 데이터가 변경되면 여러 콜렉션과 문서를 수정해야 하는 특징이 있습니다.

8. 트랜잭션 이란?

트랜잭션을 데이터베이스의 상태를 변화시키는 논리적 기능을 수행하기 위한 작업의 단위를 말합니다.

9. 트랜잭션의 성질

  1. 원자성 - 트랜잭션은 모두 성공하거나 모두 실패하는 경우만 존재하는 성질을 말합니다.
  2. 일관성 - 트랜잭션이 성공적으로 마무리 되면, 일관성 있는 데이터베이스 상태로 유지하는것을 의미합니다.
  3. 독립성 - 트랜잭션을 수행할 때 다른 트랜잭션이 개입하지 못하도록 보장하는것을 의미합니다.
  4. 지속성 - 트랜잭션이 성공적으로 마무리 되면, 수행된 트랜잭션은 영원히 반영되어야 함을 의미합니다. 모든 트랜잭션은 로그가 존재하며, 로그에 모든것이 저장된 후에만 commit상태로 간주될 수 있는것을 의미합니다.

10. 트랜잭션 병행 처리시 발생할 수 있는 문제점은?

  1. 갱신 분실 - 갱신 결과의 일부가 없어질 수 있습니다.
  2. 비완료 의존성 - 하나의 트랜잭션 수행이 실패하기 전 다른 트랜잭션이 참조해 이상이 발생할 수 있습니다.
  3. 모순성 - DB가 일관성 없는 상태로 남는 문제가 발생할 수 있습니다.
  4. 연쇄복귀 - 다중 트랜잭션이 데이터 공유시 특정 트랜잭션이 작업을 취소할 경우 다른 트랜잭션이 처리한 과정까지 취소하지 못합니다.

11. 로킹 기법이란?

하나의 트랜잭션이 데이터를 액세스 하는 동안 다른 트랜잭션이 해당 데이터에 접근하지 못하도록 하는 트랜잭션 병행 처리 기법을 말합니다. 이 때 사용하는 데이터는 로크라 부릅니다.

12. 로킹 단위란?

로킹 기법이 적용 될 단위를 말합니다.

13. 로킹 단위에 따른 변화

로킹 단위가 커지면 로크의 수가 적어지고, 제어기법이 간단해집니다. 하지만 병행성이 감소합니다.
로킹 단위가 작아지면 로크의 수가 많아지고, 제어하기 까다롭지만, 병행성이 증가합니다.

14. 로킹이 일으키는 문제점은?

  1. 블로킹 - 로킹으로 인해 특정 세션이 작업을 진행하지 못하는 상태를 말합니다.
    해결 방법으로 로킹중인 트랜잭션을 커밋하거나 롤백해 해제합니다.
    방지하기 위한 방안으로 트랜잭션을 최대한 짧게 설계하는 방법이 있습니다.
  2. 데드락 - 두 세션이 각각 로크를 설정한 리소스를 기다리고 있는 상태를 말합니다.
    해결은 DBMS가 둘 중 한 세션을 종료시켜야 해제가 가능합니다.

15. 커밋과 롤백이란?

커밋은 한 트랜잭션이 성공적으로 종료되었을 때, 작업 결과를 SQL 명령어를 통해 실제 물리적 디스크에 저장하는 것을 말합니다.

롤백은 한 트랜잭션이 실패로 종료되었을 때, 진행된 모든것을 작업을 실행하기 전 상태로 돌리는것을 말합니다.

16. 세이브 포인트란?

현재 트랜잭션이 진행되는 과정에서 저장점을 만들어 트랜잭션이 실패하거나 트랜잭션 완료 후 특정 시점으로 돌아가기 위한 지점을 말합니다.

17. 데이터베이스 언어 3가지는 무엇인가?

  1. 데이터 정의 언어(DDL) - DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어를 말합니다. CREATE, ALTER, DROP이 있습니다.
  2. 데이터 조작 언어(DML) - 사용자로 하여금 데이터를 처리할 수 있게 하는 도구를 말하며, 사용자 혹은 응용프로그램과 DBMS간의 인터페이스를 제공합니다. INSERT, UPDATE, SELECT, DELETE가 있습니다.
  3. 데이터 제어 언어(DCL) - 데이터의 무결성, 보안 및 권한 제어, 회복 등을 하기 위한 언어를 말합니다. COMMIT, ROLLBACK, GRANT, REVOKE가 있습니다.
반응형

'Interview > Tech' 카테고리의 다른 글

기술 면접시 요구된 질문을 정리합니다.  (0) 2021.03.23
ORM  (0) 2021.03.23
Spring  (0) 2021.03.23
JAVA  (0) 2021.03.22

관련글 더보기

GitHub 댓글

댓글 영역