스터디

데이터베이스 기술 면접 대비

혜유우 2024. 6. 8. 15:33

데이터베이스의 특징

실시간 접근성, 지속적인 변화, 동시 공용, 내용에 대한 참조

 

데이터베이스 언어에 대해 설명해주세요

DDL(Data Definition Language)는 데이터베이스 구조를 정의, 수정, 삭제하는 언어(create, alter, drop)

DML(Data Manipulation Language)는 데이터베이스 내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어(select, insert, update, delete)

DCL(Data control Language)는 데이터에 대한 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어(commit, rollback, grant, revoke)

 

SELECT 쿼리의 수행 순서

FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

 

트리거(Trigger)

트리거는 특정 테이블에 대한 이벤트에 반응해 insert, delete, update 같은 DML 문이 수행되었을 때

데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다.

사용자가 직접 호출하는 것이 아닌 데이터베이스에서 자동으로 호출한다는 것이 가장 큰 특징이다.

 

Index의 장/단점

인덱스란 검색하여 해당 자료의 테이블을 액세스 하는 방법이다.

인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 검색하는데 빠르지만

새로운 값을 추가하거나 삭제, 수정하는 경우에는 실행 속도가 느려집니다.

 

DBMS에서 Index를 관리하는 법?

1. B+Tree 인덱스 자료구조

자식 노드가 2개 이상인 B-Tree를 개선시킨 자료구조

LinkedList로 연결하여 순차 검색을 용이하게 한다.

해시 테이블보다는 나쁜 시간복잡도를 갖지만 일반적으로 많이 사용

2. 해시 테이블

컬럼의 값으로 생성된 해시를 기반으로 인덱스를 구현

시간복잡도가 O(1)이라 검색이 매우 빠르다

연속적인 데이터를 위한 순차 검색은 불가능

 

정규화

하나의 릴레이션에 하나의 의미만 존재하도록 릴레이션을 분해하는 과정이다.

데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법

제 1정규화=테이블의 컬럼이 원자 값을 갖도록 분해

제 2정규화=제 1정규화를 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속되도록 분해

제 3정규화=제 2정규화를 만족하고, 이행적 함수 종속을 없애도록 분해

(이행적 함수 종속이란 A->B, B->C가 성립할 때 A->C가 성립)

 

 

BCNF=제 3정규형을 만족하고, 함수 종속성 X->Y가 성립할 때 모든 결정자 X가 후보키가 되도록 분해

 

정규화의 장/단점

장점은 데이터베이스 변경 시 이상현상이 발생하는 문제점을 해결할 수 있고 확장 시 구조를 변경하지 않아도 되거나

일부만 변경해도 된다.

단점은 join 연산이 많아져서 응답 시간이 느려질 수 있다.

 

 

역정규화를 하는 이유

정규화를 거치면 릴레이션 간의 join 연산이 많아져 성능이 저하될 수 있다.

역정규화를 하는 가장 큰 이유는 DB의 성능을 향상시키기 위함이다.

 

이상 현상의 종류

삽입 이상, 갱신 이상, 삭제 이상이 있다.

1. 삽입이상-자료를 삽입할 때 특정 속성에 해당하는 값이 없어서

NULL을 입력해야 하는 현상

2. 갱신 이상-중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상

3. 삭제 이상-어떤 정보를 삭제하면 의도하지 않은 다른 정보까지 삭제되어버리는 현상

 

 

SQL injection이란?

SQL injection이란 공격자가 악의적인 의도를 갖는 SQL 구문을 삽입해

데이터베이스를 비정상적으로 조작하는 코드 인젝션 공격 기법이다.

 

SQL Injection을 방어하기 위한 방법?

1. 입력값이 개발자가 의도한 값인지 검증한다.

2. 저장 프로시저를 사용한다.

 

RDBMS와 NoSQL의 차이

RDBMS모든 데이터를 2차원 테이블 형태로 표현

장점-스키마에 맞춰 데이터를 관리하기 때문에 데이터의 정합성이 보장

단점-시스템이 커질수록 쿼리가 복잡해지고 성능이 저하되며 스케일아웃이 어렵다

NoSQL은 RDBMS와 반대로 데이터간의 관계와 스키마가 없어 자유롭게 데이터를 관리할 수 있다.

장점-스키마 없이 key-value로 데이터를 관리해 자유롭고 스케일업 뿐만 아니라 스케일아웃도 가능

단점- 데이터 중복이 발생할 수 있고 중복된 데이터가 변경될 경우 모든 컬렉션에 수행해야 한다.

 

RDBMS는 데이터 구조가 명확하고 변경 될 여지가 없으며 스키마가 중요한 경우에 사용

NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장 되는 경우 사용

 

 

트랜잭션이란?

데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위로

원자성/일관성/독립성/영속성의 특징이 있다.

원자성은 작업이 모두 반영되던지 아니면 전혀 반영되지 않아야 한다

일관성은 실행이 완료되면 언제나 일관성 있는 상태를 유지해야 한다

독립성은 둘 이상 트랜잭션이 동시에 실행될 경우 서로의 연상에 끼어들 수 없다

영속성은 완료된 결과는 영구적으로 반영되어야 한다

 

 

DB락에 대해 설명해주세요

DB Lock은 트랜잭션 처리의 순차성을 보장하기 위한 방법

공유락은 Read Lock이라고도 하는데 트랜잭션 읽기를 할 때 사용하는 락이며

데이터를 읽기만하기 때문에 같은 공유락 끼리는 동시에 접근이 가능하다.

베타락은 Write Lock이라고도 하며 데이터를 변경할 때 사용하는 락이다.

트랜잭션이 완료될 때까지 유지되며 베타락이 끝나기 전까지 어떠한 접근도 허용하지 않는다.

 

 

Elastic Search의 키워드 검색과 RDBMS의 LIKE 검색의 차이에 대해 설명해주세요

RDBMS는 단순 택스트매칭에 대한 검색만을 제공해 동의어나 유의어 같은 검색은 불가능하다

반면 엘라스틱 서치는 동의어나 유의어를 활용한 검색이 가능하며 비정형 데이터의 색인과 검색이 가능하고

역색인 지원으로 매우 빠른 검색이 가능하다.

 

 

옵티마이저(Optimizer)

옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해주는

DBMS 내부의 핵심 엔진이다.

 

DB 튜닝이 무엇인지 그리고 튜닝의 3단계

DB튜닝이란 DB의 구조나 DB 자체, 운영체제 등을 조정하여 DB 시스템의 전체적인 성능을 개선하는 작업이다.

튜닝은 DB 설계 튜닝->DBMS 튜닝->SQL 튜닝 단계로 진행

1단계 DB 설계 튜닝(모델링 관점) 사례=반정규화, 분산파일배치

2단계 DBMS 튜닝(환경 관점) 사례=Buffer 크기, Cache 크기

3단계 SQL 튜닝(App 관점) 사례=Hash/Join

 

inner join과 outer join의 차이

inner join은 서로 연관된 내용만 검색하는 조인 방법이고

outer join은 한 쪽에는 데이터가 있고 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽의 내용을 전부 출력하는 방법

 

 

group by의 역할

group by 명령어를 통해 특정 컬럼을 기준으로 연산한 결과를 집계 키로 정의하여 그룹을 짓는 역할을 한다.

집합 연산자는 count, sum, avg, max, min 등이 있고 distinct와 같이 중복 데이터를 제거하는 특징이 있다.

 

delete, truncate, drop

delete는 데이터는 지우지만 테이블 용량은 줄어들지 않고 원하는 데이터만 골라서 지우며 삭제 후 되돌릴 수 없다.

truncate는 전체 데이터를 한번에 삭제하는 방식으로 데이블 용량은 줄어들고 인덱스 등도 삭제되지만 테이블은 삭제할 수 없고 삭제 후 되돌릴 수 없다.

drop은 테이블 자체를 완전히 삭제하는 방식으로 공간, 인덱스, 객체 모두 삭제된다. 삭제 후 되돌릴 수 없다.

 

 

데이터베이스 클러스터링과 리플리케이션의 차이

클러스터링이란 여러 개의 DB를 수평적인 구조로 구축하는 방식이며 동기 방식으로 사용됩니다.

장점은 DB 간의 데이터를 동기화하여 항상 일관성있는 데이터를 얻을 수 있고

높은 가용성(1개의 DB가 죽어도 다른 DB가 살아 있어 시스템을 장애없이 운영할 수 있다)과

로드밸런싱(기존에 하나의 DB서버에 몰리던 부하를 여러 곳으로 분산시킬 수 있다) 이다.

단점은 저장소 하나를 공유하면 병목현상이 발생할 수 있고 서버를 동시에 운영하기 위한 비용이 많이 든다.

cf. 병목현상-전체 시스템의 성능이나 용량이 하나의 구성요소로 인해 제한을 받는 현상

 

 

리플리케이션은 여러 개의 DB를 권한에 따라 수직적인 구조로 구축하는 방식으로 비동기 방식입니다.

장점은 DB 요청의 60~80% 정도가 읽기 작업이기 때문에 충분히 성능을 높일 수 있고

비동기 방식으로 운영되어 지연 시간이 거의 없습니다.

반대로 단점은 데이터 동기화가 보장되지 않아 일관성있는 데이터를 얻지 못할 수 있습니다.

또한 Master DB가 다운되면 복구 및 대처가 까다롭습니다.

 

 

HAVING과 WHERE의 차이

having은 그룹을 필터링 하는데 사용되고 where은 개별 행을 필터링하는데 사용됩니다.

집계함수(count, sum, avg, max, min 등)는 having절과 함께 사용할 수 있지만

where절은 사용할 수 없습니다.

 

 

JOIN에서 ON과 WHERE의 차이

ON이 WHERE보다 먼저 실행되어 JOIN을 하기 전에 필터링을 하고

WHERE은 JOIN을 한 후에 필터링을 합니다.

'스터디' 카테고리의 다른 글

운영체제 기술 면접 대비  (0) 2024.06.08
네트워크 기술 면접 대비  (1) 2024.06.08
백엔드(Web, Spring) 기술 면접 대비  (2) 2024.06.07