백엔드 개발 기술면접 정리 (DB 추가중)

희소·2021년 10월 11일
4

기술면접 정리

목록 보기
4/5
post-thumbnail

개발면접 정리

개발질문 LIST - DB

1. PK vs FK vs ER

Primary Key
: 테이블에서 각 Row(행)을 유일하게 구분하는 Column-Key

Foreign Key
: 하나의 테이블에 있는 Column(열)으로는 그 의미를 표현할 수 없는 경우,
다른 테이블의 Primary-Key Column의 값을 반드시 참조해야 하는 Key

ER(Entity-Relation)모델
: 개체-관계 모델, 데이터베이스를 설계할 때 사용하는 모델 중 하나

2. 참조 무결성

: 관계 데이터베이스 관계 모델에서 관련된 테이블 간의 일관성(데이터 무결성)을 말함
: 사용자의 실수로 관련 데이터가 삭제되거나 수정되는 것을 막아줌
: 참조 무결성 제약 조건

  • 기본 테이블에서 일치하는 필드가 기본키(PK)이거나​고유 인덱스를 갖고 있거나 관련 필드의
    데이터 형식이 같아야 함

3. DB Transaction(트랜잭션)

: 데이터의 무결성으로 인하여 데이터 작업시에 문제가 생기면, 데이터 작업을 하기 이전 시점으로 모든 데이터를 원상 복구 하는 것
: 모두 실행되거나 모두 실행되지 않거나를 뜻함

4. ACID 란? (트랜잭션의 성질)

  • Atomicity(원자성) : 모든 작업이 커밋되거나 롤백되는 특성
  • Consistency(일관성) : 데이터는 미리 정해진 특성에 의해서만 저장이 됨. 숫자 형태의 컬럼에 문자열이 들어올 수 없음.
  • Isolation(고립성) : 트랜잭션 수행 중에는 다른 트랜잭션의 영향을 주어서도 받아서도 안됨
  • Durability(지속성) : 트랜잭션 조작을 완료하고 그 조작이 영구적이 되어 결과를 잃어서는 안됨. 정상적인 상태 뿐만 아니라 장애가 난 상태에서도 결과를 잃어서는 안됨
  1. DBMS VS RDBMS

6. Oracle VS MySQL

  • 가장 큰 차이점으로는 비용이 있다. 오라클은 충분히 큰 예산과 복잡한 비즈니스 요구에 맞춰 기업고객들을 위해 설계되었다. MySQL은 가장 일반적으로 데이터베이스 기반 웹 사이트 및 Non-Critical 애플리케이션에 사용되는 저가의 데이터베이스 이다.

  • 오라클은 유료인만큼 유용한 기능이 많다. 내장함수, 성능, 대용량 처리에 좋은 파티션 시스템, 힌트 대신 무겁다.

7. RDBMS VS DBMS

관계형DB

트랜잭션(전부 아니면 무): 전체 트랜잭션이 하나의 단위로 기록. 실패 시 전체 롤백
정규화: DB설계 시 중복을 최소화해서 구조화하는 프로세스

장점
데이터의 성능이 일반적으로 좋아 정렬, 탐색, 분류가 빠름. 신뢰성이 높아 데이터의 무결성을 보장. 정규화에 따른 갱신 비용을 최소화

단점
기존에 작성된 스키마를 수정하기 어려움
데이터베이스의 부하를 분석하기 어려움
빅데이터를 처리하는데 매우 비효율적임

비관계형 DB

거대한 Map으로서 key-value 형식을 지원함. 관계형 db와 달리 PK,FK JOIN등 관계를 정의하지 않음. 스키마에 대한 정의가 없다.

장점
대용량 데이터 처리를 하는데 효율적임. 읽기 작업보다 쓰기 작업이 더 빠르고 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠름. 데이터 모델링이 유연함. 뛰어난 확장성으로 검색에 유리함.
최적화된 키 값 저장 기법을 사용하여 응답속도나 처리효율 등에서 성능이 뛰어남.
복잡한 데이터 구조를 표현할 수 있음.

단점
쿼리 처리시 데이터를 파싱 후 연산을 해야해서 큰 크기의 document를 다룰 때는 성능이 저하됨.

8. Mybatis

객체지향 언어인 자바의 관계형 DB 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크

9. COMMIT vs ROLLBACK

COMMIT
: 작성한 쿼리문에서 UPDATE, DELETE, INSERT를 수행했을 때, 그 쿼리문 수행결과에 대한 확정을 지음
ROLLBACK
: 쿼리문 수행결과에 대한 번복을 함
: 쿼리문 수행 이전으로 원상복귀 하겠다는 뜻

10. DML vs DDL vs DCL

DML
: 데이터베이스에 들어있는 데이터를 조작, 조회, 검색하기 위한 명령어 [ SELECT, DELETE, UPDATE, INSERT ]
DDL
: 테이블 구조를 정의하는데 사용되는 명령어 [CREATE, ALTER, DROP, TRUNCATE(초기화) ]
DCL
: 데이터베이스에 접근하거나 객체에 권한을 주는 등 역할을 하는 언어 [ COMMIT, ROLLBACK, GRANT, REVOKE ]

11. 트리거

: DML(데이터 조작어)가 수행됐을때 데이터베이스에서 자동으로 동작하도록 작성된 프로그램.

12.JOIN( 2개 이상의 테이블에서 조건에 맞는 데이터를 추출하기 위하여 사용)

INNER JOIN
: 2개 이상의 테이블에서 교집합만을 추출
LEFT JOIN
: 2개 이상의 테이블에서 FROM에 해당하는 부분을 추출
RIGHT JOIN
: 2개 이상의 테이블에서 FROM과 JOIN하는 테이블에 해당하는 부분을 추출
OUTER JOIN
: 아웃터 조인 or 풀조인이라고 불림
: 2개 이상의 테이블에서 모든 테이블 해당하는 부분을 추출

13. 데이터베이스 장애

: 트랜잭션 장애 - 트랜잭션을 정상적으로 완료하지 못함
: 시스템 장애 - 하드웨어, 소프트웨어 고장으로 인한 장애
: 디스크 장애 - 디스크 스토리지 일부 or 전체 붕괴로 인한 장애

14.이상현상

  • 삽입이상 : 새 데이터 삽입을 위해 불필요한 데이터도 함께 삽입
  • 갱신이상 : 일부 튜플만 변경
  • 삭제이상 : 필요한 데이터까지 삭제되어 데이터 손실

15.INDEX

: 검색 속도를 높이기 위한 기술
: 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데 빠름.
: DML ( 데이터 조작어 ) 하는 경우에는 쿼리문 실행 속도가 느려짐.
즉, 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능.

사용하기 좋은 예) WHERE절에서 자주 사용되는 Column, 외래키가 자주 사용되는 Column,
JOIN에 자주 사용되는 Column,

피해야 하는 경우) Data중복도가 높은 Column,
DML이 자주 일어나는 Column.

냥냥 냥냥 냥냥 냥냥

profile
안녕하세융 🧸

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

좋은 내용 감사합니다 멋지네요! 저도 개발 공부하는 중인데, https://quantpro.co.kr/ 해당 사이트 퀀트 내용 어떤지 의견주시면 감사하겠습니다!

답글 달기