일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드스튜디오
- 기술면접
- 프로그래머스
- Til
- 스터디
- 혼공단
- CS
- SQL
- join
- Android
- 알고리즘
- 자바
- java
- 티스토리챌린지
- 안드로이드
- select
- 인프런
- 카카오코테
- 혼공챌린지
- 정보처리기사
- MySQL
- Kotlin
- groupby
- 정처기
- 자료구조
- 오블완
- 혼공파
- 코틀린
- 코테
- doitandroid
- Today
- Total
Welcome! Everything is fine.
[DB] 7월 2주차 기술면접 질문 정리 본문
기술면접 스터디에서 받은 질문을 복습하기 위한 용도로 정리한 내용입니다.
인덱스(Index)란 무엇이고 인덱스를 사용하는 자료구조는 어떤 것이 있나요?
인덱스란 데이터베이스에서 튜플의 검색 속도를 높이기 위해 속성 값과 튜플이 저장된 주소를 저장하는 것을 말합니다. 인덱스를 사용하면 데이터가 정렬되어 있기 때문에 검색 속도가 빠르다는 장점이 있습니다. 인덱스를 사용하는 자료구조는 배열, 리스트, 해시 테이블, 트리 등이 있습니다.
클러스터링(Clustering)과 리플리케이션(Replication)의 차이는 무엇인가요?
클러스터링이란 동일한 데이터베이스를 여러 대의 서버가 관리하도록 하는 것을 말합니다. 여러 대의 서버를 이용하기 때문에 서버 한 대에 문제가 생기더라도 또 다른 서버가 동작하고 있어서 서비스에 큰 문제가 발생하지 않습니다. 그러나 여러 대의 서버가 하나의 데이터베이스를 공유함으로써 병목현상이 생길 수 있다는 단점이 있습니다. 반면 리플리케이션이란 여러 개의 데이터베이스를 권한에 따라 수직적인 구조로 구축하는 방식을 말합니다. 리플리케이션은 서버만 확장한 클러스터링과 달리 서버와 스토리지 모두를 확장합니다. 메인으로 사용할 Master 서버와 이를 복제한 Slave 서버로 구성되는데 Master에서 Slave로 비동기 방식을 사용해 데이터를 동기화하기 때문에 일관성 있는 데이터를 얻지 못할 수 있다는 단점이 있습니다.
정규화란 무엇인가요?
정규화란 데이터를 분해하는 과정을 의미합니다. 즉 하나의 릴레이션에 하나의 의미만 존재하도록 하기위한 과정으로, 데이터의 일관성과 유연성을 확보하기 위해 사용합니다. 정규화를 하면 데이터베이스 변경 시 이상현상을 해결할 수 있다는 장점이 있지만, 릴레이션을 분해하기 때문에 릴레이션 간의 조인 연산이 많아집니다. 만약 조인이 많이 발생하여 성능 저하가 나타날 경우 반정규화를 적용할 수 있습니다.
- 제1정규화 : 테이블의 컬럼이 원자값(=하나의 값)을 갖도록 분해
- 제2정규화 : 제1정규형 만족 + 모든 컬럼이 부분적 종속이 없도록 분해
- 제3정규화 : 제2정규형 만족 + 이행적 함수 종속이 없도록 분해
- BCNF : 제3정규형 만족 + 함수 종속성 X -> Y가 성립할 때 모든 결정자 X가 후보키가 되도록 분해
'CS 스터디' 카테고리의 다른 글
#17. HTTPS란? (0) | 2024.03.19 |
---|---|
#16. 인덱스(Index)란? 인덱스의 목적, 장단점 (0) | 2024.03.12 |
#15. 멀티 프로세스와 멀티 스레드 (0) | 2024.03.07 |
#14. 힙(Heap) (0) | 2024.02.27 |
#13. 트리(Tree) (1) | 2024.02.27 |