🚌 2024년 11월 11일~ 2024년 11월 18일까지의 주제는 데이터베이스이다.
💡 공통으로 준비한 질문
1️⃣ 첫번째 접은 글은 내 말로 풀어쓴 정답
2️⃣ 두번째 접은 글은 해석 또는 공부한 내용 또는 추가적으로 궁금한 내용
1. DB 인덱스와 B+ 트리 인덱스의 구조 및 장단점에 대해 설명해주세요.
- DB 인덱스란?
- 목적 : RDBMS에서 검색 속도를 높이기 위한 기술
- Table의 Column을 색인화 함(따로 파일 저장)
- 장점
- Table의 Record를 Full Scan하지 않고, 색인화 된(B+ Tree 구조로) Index 파일 검색으로 검색 속도 향상
- 단점
- Index 생성시 .mdb 파일 크기 증가
- 한 페이지를 동시에 수정할 수 있는 병행성이 줄어듬
- 인덱스 된 field에서 data를 업데이트하거나, Record를 추가 또는 삭제 시 성능이 떨어짐
- 데이터 변경 작업이 자주 일어나는 경우, Index를 재작성해야 하므로, 성능에 영향을 미침
- B+ 트리 인덱스란?
- 효율적인 검색과 정렬을 위해 사용된다.
- 다분기 트리의 일종으로 각 노드에는 여러 개의 키 값이 저장된다.
- 장점
- 어떤 값에 대해서도 같은 시간에 결과를 얻을 수 있다.
- 트리의 높이를 줄이기 위해 많은 수의 키 값을 가진 노드를 사용한다.
- 단점
- 정렬된 상태를 유지하기 위해서는 삽입과 삭제시 정렬이 발생
Index | 👨🏻💻 Tech Interview
Index DB Index 목적 : RDBMS에서 검색 속도를 높이기 위한 기술 Table의 Column을 색인화 함 (따로 파일로 저장) → 해당 Table의 Record를 Full scan 하지 않음. → 색인화 된 (B+ Tree 구조로) Index 파일 검색으로
gyoogle.dev
[Database] 인덱스(index)란?
1. 인덱스(Index)란? [ 인덱스(index)란? ] 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 만약 우리가 책에서 원하는 내
mangkyu.tistory.com
Database System Concepts - B+ tree Index
B+ Tree Index, B+ Tree Index File 구조, B Tree index
velog.io
[MySQL] B-tree, B+tree란? (인덱스와 연관지어서)
B-tree는 인덱스를 이루고 있는 자료구조의 일종이다. B-tree에서 'B'는 정확히 어떤 의미라고 밝혀진 바는 없다. 아마 'Balanced'를 의미하는 'B'가 아닐까라는 추측만 있다. MySQL의 DB engine인 InnoDB는 B+tr
zorba91.tistory.com
2. SQL Injection 방어 기법에 대해 설명해주세요.
- SQL Injection이란?
- 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법
- 방어 방법
- Input 값을 받을 때, 특수문자 여부 검사하기(로그인 전 검증 로직 추가)
- SQL 서버 오류 발생 시, 해당하는 에러 메시지 감추기(view 사용)
- preparestatement 사용하기(preparestatement를 사용하면, 특수 문자를 escaping 해줌)
3. JOIN과 Inner Join, Outer Join의 차이에 대해 설명해주세요.
- Join이란?
- 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
- Inner Join이란?
- 교집합으로, 기존 테이블과 Join 테이블의 중복된 값을 보여준다.
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
- Outer 조인은 기존 테이블값과 조인 테이블의 중복된 값을 보여준다.
- 종류는 3가지가 있다.
- Left Outer Join
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
LEFT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
- Right Outer Join
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
RIGHT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
- Full Outer Join(합집합 : 모든 데이터 출력)
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
FULL OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
4. DB 인덱스에 대해 설명해주세요.
- 위에서 설명했으므로 생략..
5. 해시 인덱스 방식과 B+ 트리 인덱스 방식의 차이에 대해 설명해주세요.
- 해시 인덱스
- 정렬되어 있지 않다.
- 해싱된 데이터 값에 따라 저장될 버킷 위치를 정하기 때문에 빠른 속도로 검색영역을 제한할 수 있다.
- 동등 비교에서 효과적이다.
- 정렬할 필요가 없으니 삽입/삭제가 빠를 수 있다.
- B+ 트리 인덱스
- 항상 정렬되어 있다.
- 정렬된 상태로 검색 범위를 제한시킨다.
인덱스 (B-Tree/Hash Index, 다중컬럼인덱스)
인덱스가 무엇인지, B-Tree Index, Hash Index 등에 대해 알고있다는 가정하에 작성 인덱스는 왜 쓰는가? 인덱스는 '인덱스가 검색 범위를 제한시켜주기 때문에' 빠르게 데이터를 검색할 수 있게 해준
velog.io
[MySQL] B트리 인덱스와 Hash 인덱스
인덱스는 데이터를 보다 효율적으로 검색할 수 있도록 테이블에서 관리되는 자료구조입니다. 해당 글에서는 MySQL에서 제공되는 B 트리 기반 인덱스와 Hash 인덱스의 특징과 주의사항에 대해 가볍
bugoverdose.github.io
❔ 개인으로 준비한 질문
1. 레디스에 대해 설명해 주세요.
- Redis란?
- 빠른 오픈 소스인 메모리 키 값 데이터 구조 스토어이다.
- 보통 데이터베이스는 하드 디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠르다는 장점이 있다.
- 캐싱도 가능해 실시간 채팅에 적합하며 세션 공유를 위해 세션 클러스터링에도 활용된다.
- RAM의 휘발성을 막기 위해 snapshot(특정 지점을 설정하고 디스크 백업)과 AOF(쿼리들을 저장해두고, 서버가 셧다운 되면 재실행해서 다시 만들어놓는것)의 과정이 있다.
- Value 5가지
- String(text, binary data) - 512MB까지 저장이 가능함
- set(String 집합)
- sorted set(set을 정렬해둔 상태)
- Hash
- List(양방향 연결리스트도 가능_
2. 저장 프로시저에 대해 설명해 주세요.
3. 옵티마이저에 대해 아는 대로 설명해 주세요.
4. DB 클러스터링에 대해 설명해 주세요.
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - 면접 ] 자소서 질문 대비 공부 4편 - JWT 편 - (0) | 2024.11.20 |
---|---|
[ TIL - CS ] 면접을 위한 CS 공부 7편 - 네트워크 - (0) | 2024.11.18 |
[ TIL - 면접 ] 자소서 면접 대비 공부 3편 - JPA - (0) | 2024.11.13 |
[ TIL - CS ] 면접을 위한 CS 공부 5편 - 데이터베이스 - (0) | 2024.11.11 |
[TIL - CS ] 면접을 위한 CS 공부 4편 - 자료구조와 알고리즘 - (0) | 2024.11.08 |