박나겸
데이터 베이스 면접 질문 본문
데이터 베이스 면접 질문
- 데이터베이스란?
구조화된 정보 또는 데이터의 조직화된 모음으로 일반적으로 컴퓨터 시스템에 전자적으로 저장된다. DB는 일반적으로 DBMS에 의해 제어된다. MySQL, Orcale등이 DBMS의 대표적인 예시들이고 DB에서는 보통 SQL을 사용한다.
1-1. 데이터베이스의 장점?
- 데이터는 구조적으로 저장되므로 중복성이 제어됩니다.
- 입력 한 데이터의 유효성을 검사하고 데이터베이스에 대한 무단 액세스에 대한 제한을 제공합니다.
- 필요한 경우 데이터 백업 및 복구를 제공합니다.
- 여러 사용자 인터페이스를 제공합니다.
1-2. 데이터 베이스에서 다양한 유형의 관계?
- 일대일 :
- 일대다:
- 다대다:
- SQL 이 무엇인가요
DDL,DML,DCL 세가지 종류로 나눌수 있으며 각각 데이터 구조 정의 / 데이터베이스의 데이터 조작 / 데이터를 사용하기 위한 권한 부여및 취소 에 사용 됩니다.
- 관계 데이터베이스에서 정규화를 하는 이유에 대해 설명해주세요.
하나의 릴레이션에 하나의 의미만 존재하도록 릴레이션을 분해하는 과정이 정규화이다. 이는 데이터 중복을 최소화하기 위해 사용된다. 정규화 과정을 거치게 되면 특정 조건을 만족하는 릴레이션의 스키마 형태인 정규형을 만족하게 된다. 데이터베이스 변경 시 이상 현상을 제거하고, 구조 확장 시 재 디자인을 최소화할 수 있기도 하다.
<정규화의 단점> 릴레이션의 분해로 인해 JOIN 연산이 많아진다. 이로 인해 질의에 대한 응답 시간이 느려질 수 있다.
- 트랜잭션의 특성 4가지
- Atomicity(원자성)
- 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.
- Consistency(일관성)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
- 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.
- Isolation(독립성,격리성)
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다.
- 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
- Durablility(영속성,지속성)
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
- 인덱스란?
추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색속도를 향상시키기 위한 자료구조로 해시테이블과 Btree가 존재한다.
ㅊHash Table 기반의 DB 인덱스는 (데이터=컬럼의 값, 데이터의 위치)를 (Key, Value)로 사용하여 컬럼의 값으로 생성된 해시를 통해 인덱스를 구현한다.
B+ tree는 B- tree와 달리 오직 leaf node에만 데이터를 저장하고 leaf node가 아닌 node에서는 자식 포인터만 저장한다. leaf node에만 데이터가 저장되기 때문에 찾아가기 위해 중간 node의 key와 leaf node의 date가 중복될 수 있다. 또한 leaf node끼리는 연결 리스트로 연결되어있다.
- 장점
테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다. B+ tree를 사용할 경우 O(logN)
전반적인 시스템의 부하를 줄일 수 있다.
- 단점
인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 필요하다.
인덱스를 관리하기 위해 추가 작업이 필요하다.
인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.
5-1. 인덱스를 사용할 경우는?
- 규모가 작지 않은 테이블
- INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼
- JOIN이나 WHERE 또는 ORDER BY에 자주 사용되는 컬럼
- 데이터의 중복도가 낮은 컬럼
- 이상현상의 종류에 대해 설명해주세요
- 삽입 이상 : 자료를 삽입할 때 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상
- 갱신 이상 : 중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상
- 삭제 이상 : 어떤 정보를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상
- 제 1,2,3 정규화에 대해 설명해주세요
- 제 1정규형 : 테이블의 컬럼이 원자값을 갖도록 분해
- 제 2정규형 : 제 1정규형을 만족하고 완전함수 종속을 만족하도록 분해
- 제 3정규형 : 제 2정규형을 만족하고 이행적 함수 종속을 없애도록 분해
7-1. 완전함수 종속과 이행적 함수 종속에 대해 설명해주세요
- 완전함수종속 : 기본키의 부분집합이 다른 값을 결정하지 않는 것을 의미
- 이행함수종속 : A->B , B->C 가 성립할 때 A-> C가 성립되는 것
- 데이터베이스 무결성이란?
무결성이란 데이터의 정확성, 일관성, 유효성을 유지하는 것을 말한다. 데이터의 무결성을 유지하기 위해 DBMS 에서는 크게 3가지 종류로 구분한다. (개체, 참조, 도메인 무결성 가장 중요)
- 개체 무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않는다. (PK는 NULL이 되면 안된다.)
- 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지한다. (FK의 값은 NULL이거나 참조하고 있는 컬럼에 있는 값이여야 한다.)
- 도메인 무결성 : 테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 올바른 데이터가 입력됬는지를 체크 하는 것이다. (예를 들면 성과 같은 컬럼의 값은 남/여 만 가능)
- 트랜잭션 격리 수준에 대해 설명해주세요
- READ uncommitted (LEVEL 0) => 팬텀리드, 반복 가능하지 않은 조회, 더티 리드 발생
- READ committed (LEVEL 1) => 팬텀 리드, 반복 가능하지 않은 조회 발생
- REPEATABLE READ (LEVEL 2) => 팬텀리드 발생
- SERIALIZABLE (LEVEL 3)
- NOSQL 과 SQL의 차이
SQL : 관계를 맺고 있는 데이터가 자주 변경되는 앱 / nosql에서는 여러 컬랙션을 모두 수정해야 되지에 비효율적 / 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
NOSQL : 정확한 데이터를 알수 없거나 변경/확장 될 수 있는 경우 / 읽기를 자주 하지만, 데이터 변경은 자주 없을 경우 / DB를 수평으로 확장해야 하는 경우 / 막대한 양의 데이터를 다뤄야 하는 경우
10-1.NOSQL 이란?
비관계형 데이터베이스, 기존의 RDBMS와 같은 관계형 데이터 모델을 지양하며 대량의 분산된 비정형 데이터를 저장하고 조회하는데 특화된 데이터베이스로 스키마 없이 사용하거나 느슨한 스키마를 제공하는 저장소이다.
DBMS
장점
- RDBMS는 위에서 설명을 하였듯이 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장하고 있습니다.
- 또한 관계는 각 데이터를 중복없이 한 번만 저장할 수 있습니다.
단점
- 테이블간테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있습니다.
- 성능 향상을 위해서는 서버의 성능을 향상 시켜야하는 Scale-up만을 지원합니다. 이로 인해 비용이 기하급수적으로 늘어날 수 있습니다.
- 스키마로 인해 데이터가 유연하지 못합니다. 나중에 스키마가 변경 될 경우 번거롭고 어렵습니다.
NoSQL
장점
- NoSQL에서는 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있습니다. 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있습니다.
- 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능합니다.
단점
- 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행을 해야 합니다.
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정가 어려울 수 있습니다.
'cs 스터디' 카테고리의 다른 글
운영체제 네트워크 면접 예상 질문 (1) | 2024.05.28 |
---|---|
디자인 패턴(Design Pattern) (0) | 2024.05.05 |
운영체제 cs 면접 예상 질문 10선 (2) | 2024.04.03 |
[웹/SW] CSRF,XSS에 대해 (1) | 2024.03.14 |
[데이터 베이스] 트랜잭션 (0) | 2024.02.22 |