본문 바로가기
CS(Computer Science)/데이터베이스

데이터베이스 면접 준비

by whdgus928 2023. 5. 30.

Database는 무엇인가?

- 중복된 데이터를 없애 효율적인 처리를 할 수 있도록 도와주는 시스템

 

DB 언어 종류

1. DDL (정의어 : Data Definition Language)

- 데이터베이스 구조를 정의, 수정, 삭제하는 언어
- ex) alter, create, drop
2. DML (조작어 : Data Manipulation Language)

- 데이터베이스내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어

ex) select, insert, update, delete
3. DCL (제어어 : Data Control Language)

- 데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어

- ex) commit, rollback, grant, revoke

 

View는 무엇인가

- 직접 테이블에 접근하는 것이 아니라 테이블에서 사용자가 필요로 하는 부분만 선택하여 만들어 놓은 데이터 집합
- 사용자의 편의와 데이터베이스의 보안 때문에 사용
- 원본 테이블에 직접 접근하지 않아도 사용자가 임의의 뷰를 구성하여 별도의 이름을 붙이거나 접근 가능한 사람을 지정가능

 

서브쿼리

- sql문 안에 있는 sql문 입니다.
- MySQL 5.5버전 이하에서는 full scan하게 되어 성능이 좋지 않다.
- 5.5 이상 버전에서도 간단한 서브쿼리가 아니면 최적화가 되어 있지 않아 join문이 성능적으로 우수

 

무결성 제약조건

- 무결성 제약조건이란 데이터가 정확성과 일관성을 유지하기 위해 가져야 할 조건들
- 개체 무결성 : 기본키는 null값을 가질 수 없다.
- 참조 무결성 : 외래키는 null값 또는 참조하는 릴레이션의 기본키 값이어야 한다.
- 도메인 무결성 : 속성값이 도메인에 속한 값이어야 함을 의미합니다.
- 키 무결성 : 한 릴레이션에 최소한 하나의 키가 존재해야 합니다.

 

트리거(Trigger)

- 특정 테이블에 대한 이벤트에 반응해 DML(INSERT, DELETE, UPDATE) 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램
- 사용자가 직접 호출하는 것이 아닌, 데이터베이스에서 자동적으로 호출하는 기능

 

트랜잭션

 

키(Key)의 종류

기본키 : 후보키 중 선정된 키
대체키 : 기본키가 아닌 후보키
후보키 : 튜플을 식별할 수 있는 속성의 최소 집합
슈퍼키 : 튜플을 식별할 수 있는 속성의 집합

 

PK와 FK

Primary Key은 테이블에서 각 Row(행)을 유일하게 구분하는 Column-Key입니다.
Foreign Key는 하나의 테이블에 있는 Column(열)으로는 그 의미를 표현할 수 없는 경우, 다른 테이블의 Primary-Key Column의 값을 반드시 참조해야 하는 Key입니다.
 

이상현상

원하지 않는 값이 연쇄적으로 삭제되거나 수정 또는 삽입되는 현상
삽입이상, 삭제이상, 갱신이상
 

트랜잭션의 4가지 특징 ACID

원자성(Automicity) : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다.
일관성(Consistency) : 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
고립성(Isolation) : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
지속성(Durability) : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

 

Locking

트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여하지 못하게 막는 것
교착상태가 발생할 수 있습니다.

 

Index

책의 목차처럼 지정한 칼럼을 정렬하여 쉽게 찾을 수 있도록 만든 테이블
검색과 정렬 작업의 속도를 높이기 위해 사용
Index 자료구조로 해쉬테이블과 B+Tree 구조가 있는데 데이터베이스에서 범위 연산에서 우수한 B+ Tree를 사용
인덱스를 설정하지 않아도 기본적으로 PK값이 인덱스로 설정
인덱스를 사용하면 데이터 조회 성능은 향상되지만 데이터 삽입, 삭제, 갱신은 매번 인덱스가 변경되기 떄문에 성능이 떨어질 수 있다.
 
모든 칼럼에 Index를 사용하면 좋나요?
양이 많은 테이블에서 일부 데이터만 불러 올 때, 풀 스캔 시 처리 성능 떨어지게됩니다.
모든 컬럼에 인덱스를 추가해 준다면 자칫 본체보다 인덱스가 더 큰 용량을 필요로 하게 됩니다.
 
DB 이중화
물리적으로 떨어져 있는 여러 개의 데이터베이스에 대하여 로컬 데이터베이스의 변경된 내용을 원격데이터베이스에 복제하고 관리하는 것
목적
사용자는 하나의 데이터베이스에 대해서만 작업을 수행
데이터베이스 이중화시스템에 연결되어 있는 다른 데이터베이스에도 작업내용이 동일하게 적용
여러개의 데이터베이스를 동시에 관리

 

관계형DB(RDBMS)와 NoSQL의 차이점

RDBMS

정해진 스키마가 있어서 명확한 데이터 구조를 보장하고 성능 향상을 위한 Scale-up만 가능

RDBMS 는 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터 Update가 자주 이루어지는 시스템에 적합


NoSQL

자유로운 데이터 구조로 데이터 분산처리에 용이하며 성능 향상을 위한 Scale-up, Scale-out이 가능
foreign key가 없어서 Join이 불가능합니다. 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 합니다.
Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Database를 Scale-Out 해야 되는 시스템에 적합합니다.

반응형

댓글