개인공부

[저장용] DB 관련 면접 질문 정리

양을 좋아하는 문씨 2025. 2. 9. 01:11

아래 질문들은 흔하게 나오는 질문들인데, 얼마나 알고 있는지 문항을 보고 답변해봅시다.


1. RDBMS가 무엇인가요?

더보기

1. RDBMS는 실제 세계의 정보를 관계라는 개념으로 표현한 데이터베이스 관리 시스템입니다.

2. 2차원 구조로 구성되며 가로 방향을 행 및 레코드라 부르고, 세로 방향을 열 및 컬럼이라 부릅니다. 2차원 시트를 테이블이라 부르고, 테이블들이 관계에 따라 서로 이어져있으며 그것들을 SQL을 통해 다양한 조작이 가능합니다.


1-1. SQL이 무엇인가요?

더보기

Structured Query Language의 약자로 RDBMS에서 원하는 데이터를 추출하고 분석하는 데 사용하는 언어입니다.


1-2. RDBMS와 NoSQL의 차이에 대해 아는 만큼 설명해보세요.

더보기

RDBMS의 경우 정해진 스키마가 있기 때문에 데이터를 그 규칙에 맞추어 넣어야 합니다. 따라서 데이터의 정합성과 무결성이 보장됩니다. 대신 데이터 구조를 변경해야되는 상황이나 스케일 아웃 방식의 업그레이드가 필요할 때 NoSQL에 비해 상대적으로 어렵습니다.

NoSQL의 경우 일정한 스키마가 없기 때문에 새로운 필드 추가 상황 등에 대응하기가 RDBMS에 비해 유연합니다. 스케일 아웃 방식의 확장에도 유리하지만, 데이터의 일관성을 유지하거나 중복 방지가 어려울 수 있습니다.


1-3. Redis와 MongoDB의 차이에 대해 아시나요?

더보기

레디스는 key-value 쌍으로 데이터를 저장하는 방식입니다. 이 때 key 값은 모든 타입이 가능하고, 유니크한 값으로 구성됩니다. 인메모리 DB입니다.

몽고DB는 key-document 쌍으로 데이터를 저장합니다. 이 때 document는 계층적인 데이터 타입으로, JSON이나 XML 형태로 저장됩니다. JSON 타입으로 저장될 수 있기 때문에 웹에서 사용하기가 편합니다. 어쨌든 Document를 사용하기 때문에 인메모리 DB가 아닙니다.


2. DB 인덱스는 왜 만드는건가요?

더보기

1. 우선 인덱스는 key-pointer 구조로 이루어져 있습니다. 여기서 key는 pk 값이고 pointer에는 pk값에 해당하는 레코드의 주소입니다. 즉, DB 테이블에서 데이터가 많을 때 검색 속도를 향상시켜주기 위해 사용하는 객체입니다. 만약 인덱스가 설정되어있지 않다면 테이블 full scan으로 인해 성능 저하가 발생할 것입니다.

2. 인덱스를 만들게 되면 추가적인 디스크 공간을 사용하게 되고, 데이터 변경 시 인덱스도 갱신되어야 합니다. 따라서 마구잡이로 인덱스를 만들면 성능 저하가 발생합니다.

3. 수정이나 삭제가 많이 일어나는 테이블에 인덱스를 새로 만드는 것은 적절하지 않습니다. 인덱스는 단순 조회 성능을 향상시키지만, DML 작업의 경우에는 갱신된 데이터에 인덱스를 맞춰야 하므로 성능의 저하가 발생합니다.


2-1. 인덱스 알고리즘에는 어떤 것이 사용되나요?

더보기

대표적으로 B-Tree, B+Tree, 해시 알고리즘이 쓰입니다.

1. B-Tree는 이진 탐색 트리의 일반화된 형태입니다. 이진 탐색 트리가 자식 노드 2개 이하의 트리라면, B-Tree는 자식 노드가 2개 이상인 트리입니다. 즉 노드의 개수를 늘리고 트리 높이를 줄여서 빠르게 탐색할 수 있습니다. M개의 자식을 가진 B-Tree를 M차 B-Tree라고 합니다.

2. B+Tree는 B-Tree를 개선시킨 트리입니다. B+Tree는 B-Tree와 다르게, 오직 리프 노드의 키만 데이터 포인터를 가지고 있습니다. 그리고 B+Tree에서는 리프 노드들이 연결리스트로 연결되어 있어서 순차 검색에 유리합니다.


3. 트랜잭션이 무엇인가요?

더보기

데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위를 의미합니다. 즉, 여러 개의 데이터 변경 작업을 하나로 묶어 처리하여 모두 성공하거나, 하나라도 실패하면 전부 취소하는 방식입니다.

3-1. ACID 원칙에 대해 설명해보세요.

더보기

트랜잭션이 성립하려면 ACID 원칙을 따라야 합니다. ACID는 각각 원자성, 일관성, 격리성, 지속성을 의미합니다.

1. 원자성은 트랜잭션을 구성하는 연산이 수행되고, 도중에 하나라도 실패하면 전부 취소되어야 한다는 원칙입니다.

2. 일관성은 트랜잭션이 실행되기 전과 후에 데이터 무결성이 유지되어야 한다는 원칙입니다.

3. 격리성은 동시성 문제를 방지하기 위해, 여러 트랜잭션이 동시에 수행될 때 서로 간섭하지 않아야 한다는 원칙입니다.

4. 지속성은 트랜잭션이 성공하면 그 결과는 영구히 보존되어야 한다는 윈칙입니다.

4. DB 정규화에 대해 아는 만큼 설명해보세요.

5. 반정규화에 대해 아는 만큼 설명해보세요.

6. DB에서 JOIN 하는 이유에 대해 설명해보세요.

7. DB Replication에 대해 아는 만큼 설명해보세요.

8. ORM의 장점과 단점에 대해 설명해보세요.

9. 옵티마이저에 대해 아는 만큼 설명해보세요.

10. DML, DDL, DCL, TCL에 대해 아는 만큼 설명해보세요.