Q. ACID 속성이란 무엇이며, 각 속성이 의미하는 바는?
- Atomicity(원자성) : 트랜잭션 내의 모든 작업이 전부 실행되거나 전혀 실행되지 않아야 함
- Consistency(일관성) : 트랜잭션 수행 전후에 데이터베이스의 무결성이 유지되어야 함
- Isolation(격리성) : 동시에 실행되는 트랜잭션들은 서로 간섭하지 않아야 함
- Durability(지속성) : 트랜잭션이 성공하면, 시스템 장애가 발생해도 그 결과는 영구적으로 반영되어야 함
Q. 정규화(Normalization)의 개념과 왜 필요한지 설명해라
- 데이터 중복을 줄이고 데이터 무결성을 유지하기 위해서 테이블을 구조화하는 과정
Q. 인덱스를 사용하는 이유는?
- 데이터 조회 성능을 높이기 위해서
- 장점 : 쿼리 성능 향상, 검색 속도 증가
- 단점 : 인덱스 생성 및 유지비용, 데이터 삽입/업데이트 시 성능 저하 가능성
Q. 인덱스가 사용되는 조건은?
- Where 조건이 왼쪽부터 일치하는 경우(=, BETWEEN, IN 조건)
- Like검색에서 앞 부분 일치(%)
- Order By, Group By
- Join 조건으로 쓰이는 컬럼
- 연상자나 함수로 감싸지지 않을 때 인덱스 사용 가능
Q. SQL JOIN 종류와 각각의 특성에 대해 설명해보세요.
JOIN은 여러 테이블의 데이터를 결합하는 방법
- INNER JOIN : 두 테이블에서 매칭되는 행만 반환
- LEFT (OUTER) JOIN : 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 매칭되는 행을 반환
- RIGHT (OUTER) JOIN : 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 매칭되는 행을 반환
- FULL (OUTER) JOIN : 양쪽 테이블의 모든 행을 반환하며, 매칭되지 않는 경우 NULL을 채움
Q. 트랜잭션이란 무엇이며, 왜 필요한가?
데이터베이스에서 하나의 논리적 작업 단위로 처리되어야 하는 여러 작업을 묶은 것
- 트랜잭션을 사용하면 작업 도중 오류가 발생했을 때 전체를 롤백할 수 있어 데이터의 일관성과 무결성을 유지할 수 있음
Q. 데이터베이스에서 Locking 매커니즘과 Deadlock에 대해 설명해라
- Locking : 동시에 실행되는 트랜잭션들이 서로의 데이터에 접근할 때 발생하는 문제를 방지하기 위한 매커니즘
- Deadlock : 두 개 이상의 트랜잭션이 서로가 소유한 리소스를 기다리면서 영원히 진행되지 못하는 상황
Q. NoSQL과 관계형 데이터베이스의 차이점 및 각각의 사용 사례에 대해 설명해주세요.
- 관계형DB : 데이터가 구조화되어 있으며 SQL을 사용함, 데이터 무결성과 ACID를 보장하는 경우 적합
- No SQL : 스키마가 없거나 유연한 구조를 가지며, 대용량의 분산 데이터를 처리하는 데 적합
Q. 쿼리 최적화(Query Optimization)에 대해 설명하고, 실행 계획(Explain Plan)의 역할은 무엇인가?
- 쿼리 최적화 : 데이터베이스에서 쿼리의 성능을 개선하기 위한 방법론
- 실행 계획 : 쿼리가 실제 실행될 때의 계획을 보여주어, 인덱스 사용 여부, 조인 순서, 스캔 방식 등을 파악할 수 있음
Q. 데이터베이스 파티셔닝과 갸딩의 차이점은?
- 파티셔닝 : 하나의 데이터베이스 내에서 데이터를 물리적 또는 논리적으로 분할하는 방식, 관리와 성능 형상을 목적
- 샤딩 : 데이터를 여러 데이터베이스 서버에 분산시키는 방식으로, 대규모 데이터와 트래픽을 분산 처리 할 대 사용
Q. ORM(Object-Relational Mapping)의 장단점은?
ORM은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터 변환을 자동화하는 도구
- 장점 : 코드의 생산성 향상, 유지보수 용이
- 단점 : 복잡한 쿼리의 경우 성능 최적화가 어렵다
'백엔드 면접준비 > DB' 카테고리의 다른 글
1. 데이터 모델링 (1) | 2025.03.12 |
---|