본문 바로가기
🤓 면접

[개발자면접] 데이터베이스 (RDBMS, NOSQL 차이점)

by 비타민찌 2022. 11. 28.
728x90

이번 편은 NoSQL DB를 사용하는 분들이 참고하시면 좋습니다.

 

1. RDBMS, NOSQL 차이점

- RDBMS

RDBMS는 관계형 데이터베이스 관리 시스템으로서, 구성된 테이블끼리 관계를 맺고 모여있는 집합체입니다. 테이블 형식으로 속성, 값으로 이루어져 있습니다. 트랜잭션 처리가 가능하고, 스키마를 미리 정의해 줘야해서 테이블 생성문으로 정의해줍니다.

CREATE TABLE member(
	id int not null auto_increment primary key,
    name varchar(10) nut null,
    password varchar(12) not null,
    reg_date datetime not null
 );

 

- NOSQL

NoSQL은 테이블 간의 관계를 정의하지 않고 key-value로 이루어져있습니다. 정해진 스키마가 없고 데이터의 입출이 자유로워서 대용량 데이터를 저장하는데 용이합니다. 몽고디비, 레디스 등이 있습니다.

오토 샤딩 기능이 있어서 대용량 데이터를 자동으로 분산 처리합니다. (RDB도 비슷한 기능인 클러스터링이 있지만 설정이 복잡)

명확한 스키마가 필요하고, 데이터 중복을 허용하지 않는 경우 RDBMS를 사용합니다. 그래서 정확한 데이터 구조가 있지 않고 데이터가 확장이 될 수 있는 경우 NoSql을 사용합니다.

 

 

2. 데이터베이스 언어(DDL, DML, DCL)에 대해 설명해주세요.

DDL / 정의어 : Data Definition Language) :

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

 

DML / 조작어 : Data Manipulation Language) :

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

 

DCL / 제어어 : Data Control Language) :

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

 

 

3. 데이터베이스에서 인덱스를 사용하는 이유

인덱스는 데이터를 논리적으로 정렬해서 검색과 정렬 속도를 높이기 위해 사용합니다. 단, 데이터 삽입, 변경이 수시로 일어나면 매번 인덱스를 변경해야 하므로, '검색속도'를 높이기 위한 인덱스 사용은 신중해야 합니다.

 

 

4. 트랜잭션이란 무엇인지 설명해주세요.

트랜잭션은 작업의 완전성을 보장해줍니다. 즉, 작업들을 모두 처리하거나 처리하지 못할 경우 이전 상태로 복구하여 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능입니다.

하나의 트랜잭션은 Commit(작업완료)되거나 Rollback(취소)됩니다.

 

[개발자면접] 트랜잭션이란?

트랜잭션이란? 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위. 특징으로는 1) 원자성(DB에 모두 반경되거나 반영되지 않거나 2) 일관성 (데이터 타입이 전과 후가 항상 동일해야 한

sudo-minz.tistory.com

 

5. Elastic Search의 키워드 검색과 RDBMS의 LIKE 검색의 차이

RDBMS는 단순 텍스트매칭에 대한 검색만을 제공해 동의어나 유의어 같은 검색은 불가능합니다. (MySQL 최신 버전에서 n-gram 기반의 Full-Text 검색을 지원하긴 하지만, 한글 검색의 경우 아직 많이 빈약한 감이 있습니다.) 하지만 엘라스틱 서치는 동의어나 유의어를 활용한 검색이 가능하며, 비정형 데이터의 색인과 검색이 가능하고, 역색인 지원으로 매우 빠른 검색이 가능합니다.

 

※ Full-Text : 이미지, CSS, 글 등의 복합적으로 이뤄진 컨텐츠에서 순수하게 텍스트만 추출한 데이터를 의미. 이 과정을 보통 크롤링으로 구현함 ( 엘라스틱 서치의 검색엔진엔 크롤러가 빠져있어 별도로 구축해야함)

 

6. SELECT 쿼리의 수행 순서를 알려주세요.

SELECT 쿼리 실행 순서

 

 

참고 : https://dev-coco.tistory.com/158

728x90

댓글