[ TIL - CS ] 면접을 위한 CS 공부 5편 - 데이터베이스 -
🚌 2024년 11월 11일~ 2024년 11월 18일까지의 주제는 데이터베이스이다.
💡 공통으로 준비한 질문
1️⃣ 첫번째 접은 글은 내 말로 풀어쓴 정답
2️⃣ 두번째 접은 글은 해석 또는 공부한 내용 또는 추가적으로 궁금한 내용
1. DB에서 사용하는 '키'와 키의 종류
- DB에서 '키'란?
- 검색, 정렬 시 튜플(tuple)을 구분할 수 있는 기준이 되는 속성입니다.
- 키는 후보키, 기본키, 대체키, 슈퍼키, 외래키가 있습니다.
- 후보키란?
- 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합입니다.
- 2가지를 만족해야 합니다.
- 유일성 : 키로 하나의 튜플을 유일하게 식별할 수 있다.
- 최소성 : 꼭 필요한 속성으로만 구성된다.
- 기본키란?
- 후보키 중 선택한 메인 키입니다.
- 특징은 null 값을 가질 수 없고, 동일한 값이 중복될 수 없습니다.
- 대체키란?
- 후보키 중 기본키를 제외한 나머지 키, 즉 보조키를 뜻합니다.
- 슈퍼키란?
- 유일성은 만족하지만, 최소성은 만족하지 못하는 키입니다.
- 외래키란?
- 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합입니다.
2. 트랜잭션과 그 특징 (ACID 원칙)
- 트랜잭션이란?
- 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위입니다.
- 트랜잭션의 특징은?
- 원자성(Atomicity)
- 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다.
- 일관성(Consistency)
- 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다.
- 독립성(Isolation)
- 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.
- 지속성(Durability)
- 트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 한다.
- 원자성(Atomicity)
DB 트랜잭션(Transaction) | 👨🏻💻 Tech Interview
DB 트랜잭션(Transaction) 트렌잭션이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 작업 단위 → 많은 SQL 명령문들
gyoogle.dev
tech-interview/contents/db.md at master · WeareSoft/tech-interview
:loudspeaker:🙍 tech interview. Contribute to WeareSoft/tech-interview development by creating an account on GitHub.
github.com
3. 트랜잭션의 격리 수준과 동시성 문제 해결 방법
- 트랜잭션 격리 수준이란?
- 트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준입니다.
- 효율적인 Locking 방법을 정한 레벨
- 종류는?
- Read Uncommitted(lv. 0) : select 문장이 수행되는 동안 해당 데이터에 shared lock이 걸리지 않은 계층
- Read Committed(lv. 1) : select 문장이 수행되는 동안 해당 데이터에 shared lock이 걸리는 계층
- Repeatable Read(lv. 2) : 트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸리는 계층
- Serializable(lv. 3) : 트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸리는 계층
- 단, 동시성 문제를 해결하기 위해 Lock을 걸 때 낮은 레벨에서 Dirty Read, Non-Repeatable Read, Phantom Read 등의 문제가 생길 수 있음을 고려해서 짜야 한다.
트랜잭션 격리 수준(Transaction Isolation Level) | 👨🏻💻 Tech Interview
트랜잭션 격리 수준(Transaction Isolation Level) Isolation level 트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준 Isolation level의 필요성 데이터베이스는 ACID 특징과 같이 트랜잭션이 독립적인 수
gyoogle.dev
내가 선택한 DB 동시성 해결방법
내가 선택한 DB 동시성 해결방법 서론 오랜만에 블로그 포스팅이다. 포스팅 아이템들은 넘처나는데, 시간이 없어서(핑계) 작성할 시간은 없었던 것 같다. 마침 진행하던 프로젝트에서 동시성 이
catch-me-java.tistory.com
데이터베이스 | 동시성 제어 - 트랜잭션 격리 수준
DB Concurrency 문제는 DB에 두 명 이상의 유저가 동시에 접근할 때 발생할 수 있는 문제이다. 즉, Concurrency는 transaction이 순차적으로 실행되는 것이 아니라 순서에 상관없이 동시에 실행되는 것을 말
velog.io
4. 정규화와 역정규화
- 정규화란?
- 가장 큰 목표는 테이블 간 중복된 데이터를 허용하지 않는 것이다.
- 정규화의 목적은?
- 데이터의 중복을 없애면서 불필요한 데이터를 최소화 시킨다.
- 무결성을 지키고, 이상 현상을 방지한다.
- 테이블 구성을 논리적이고 직관적으로 할 수 있다.
- 데이터베이스 구조의 확장에 용이해진다.
- 정규화는 최대 1~6까지의 정규화를 가진다. 대표적으론 3단계까지의 과정을 거친다.
- 제 1 정규화(1NF)
- 테이블 컬럼이 원자 값(하나)를 갖도록 테이블을 분리시키는 것이다.
- 아래의 조건을 만족해야 한다.
- 어떤 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있어야 한다.
- 모든 속성에 반복되는 그룹이 나타나지 않아야 한다.
- 기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다.
- 제 2정규화(2NF)
- 테이블의 모든 컬럼이 완전 함수적 종속을 만족해야 한다. 기본키의 부분집합 키가 결정자가 되어선 안된다.
- 제 3정규화(3NF)
- 2NF가 진행된 테이블에서 이행적 종속을 없애기 위해 테이블을 분리하는 것이다.
- 아래 두 가지 조건을 만족시켜야 한다.
- 릴레이션이 2NF에 만족한다.
- 기본키가 아닌 속성들은 기본키에 의존한다.
- 역정규화란?
- 정규화의 단점으로 릴레이션 간의 JOIN 연산이 늘어나 질의 성능이 저하될 우려가 있기에, 읽기 작업이 많이 필요한 DB의 전반적인 성능을 향상시키는 것이다.
정규화(Normalization) | 👨🏻💻 Tech Interview
정규화(Normalization) Normalization 가장 큰 목표는 테이블 간 중복된 데이터를 허용하지 않는 것이다. 중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할
gyoogle.dev
데이터베이스 정규화(Normalization), 역정규화(DeNormalization)
데이터베이스 정규화(Normalization) 란?관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다.정규화의 기본 목표는 관련이 없는 함수 종속성은
sh970901.tistory.com
[DB] 정규화, 역정규화
관계형 DB 설계에서 중복을 최소화하고 데이터 일관성을 유지하기 위해 데이터의 구조를 조직화하는 프로세스이다. 주로 테이블을 작은 단위로 분리하여 중복을 제거하고, 이상 현상(anomalies)을
velog.io
📋 제 1-2-3 정규화 & 역정규화 기법 💯 정리
정규화란? ERD내에서 중복요소를 찾아 제거해 나가는 과정 - 중복된 데이터는 많은 문제를 일으킨다. 3차 정규화 정도만 알면 설계하는데 무리가 없다. - 중복을 최소화 -> 완전히 없애는게 아
inpa.tistory.com
역정규화 무엇이 문제인가?
아래의 글은 모델러에 따라 생각이 다를 수 있음을 밝혀둔다. 모델링에는 정답이 없다. 하지만 모범답안을 찾기 위해 노력해야 한다. 역정규화는 정합성과 확장성을 방해한다. 많은 종류의 모델
scidb.tistory.com
5. RDB와 NoSQL의 차이점
- 관계형 데이터 베이스(RDB 또는 SQL이라 표현)란?
- RDBMS에서 데이터를 저장, 수정, 삭제 및 검색을 할 수 있게 해준다.
- 두 가지 특징이 있다.
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.
- 데이터는 관계를 통해 여러 테이블에 분산된다.
- 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다.
- 비관계형 데이터 베이스(NoSQL)란?
- 스키마도 없고, 관계도 없다.
❔ 개인으로 준비한 질문
1. Join의 모든 종류에 대해 설명해 주세요.
2. Index에 대해 설명해 주세요.
3. 이상에 대해 설명해 주세요.
4. 트랜잭션에 대해 설명해 주세요.