일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준
- 오픈챌린지
- 오블완
- 객체지향
- UXUI기초정복
- 디자인챌린지
- 디자인강의
- OPENPATH
- 백엔드 부트캠프
- 패스트캠퍼스
- 오픈패스
- UXUI챌린지
- 부트캠프
- 국비지원교육
- Be
- 국비지원취업
- 백엔드개발자
- 환급챌린지
- baekjoon
- 백엔드
- 내일배움캠프
- UXUIPrimary
- 티스토리챌린지
- KDT
- 국비지원
- Spring
- 내일배움카드
- mysql
- 디자인교육
- Java
- Today
- Total
군만두의 IT 공부 일지
신입 개발자 기술면접 예상 질문 정리 - 데이터베이스(1) 본문
1. RDB와 NoSQL의 차이에 대해 설명해 보세요.
RDB(Relational Database)는 테이블 간의 관계를 바탕으로 데이터를 저장하며, SQL을 사용하여 데이터를 조회합니다. 대표적인 RDB는 MySQL, PostgreSQL입니다.
NoSQL은 비정형 데이터를 저장하기에 적합하며, 스키마가 없거나 유연한 구조를 가집니다. 대표적인 NoSQL 데이터베이스는 MongoDB입니다.
RDB는 데이터 무결성 보장이 강점이고, NoSQL은 확장성과 대용량 데이터 처리에 유리합니다. RDB는 트랜잭션 처리에 강점을 가지며, NoSQL은 읽기와 쓰기 성능을 높이기 위해 설계되었습니다.
RDBMS는 정해진 스키마가 존재하고, NoSQL는 정해진 스키마가 없다는 것이 가장 큰 차이입니다. NoSQL은 정해진 스키마가 없을 때 데이터 구조 변화가 자유롭고 데이터 분산이 용이하다는 장점이 있지만, 데이터 중복이 발생하거나 데이터 변경 시에 연산이 오래 걸린다는 단점이 있습니다.
2. DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요?
인덱스를 사용하면 데이터베이스에서 특정 데이터를 검색하는 속도를 대폭 향상시킬 수 있습니다. 예를 들어, 수백만 개의 레코드 중 특정 값을 찾을 때 전체 테이블을 조회하는 것이 아닌, 인덱스를 통해 빠르게 접근할 수 있습니다.
하지만 너무 많은 인덱스를 사용하면 삽입, 삭제, 업데이트 시 인덱스도 함께 수정되어야 하므로 성능 저하가 발생할 수 있습니다. 따라서 인덱스는 조회가 빈번한 컬럼에 적절히 사용하는 것이 중요합니다.
DB의 인덱스를 잘 사용하는 것은 데이터를 검색하는 시점에 성능 차이에 큰 영향을 미칩니다. 대용량 데이터를 담고 있는 DB 테이블에서 필요한 데이터를 빨리 찾기 위해 인덱스가 필요합니다. 인덱스가 없거나 적절한 인덱스를 찾지 못할 경우 데이터가 담겨있는 테이블 전체를 읽어야 하기에 데이터 조회 시간이 오래 걸립니다. 인덱스는 DB 데이터의 주소를 갖고 있는 것을 의미하며, 원하는 데이터를 빠르게 찾을 수 있다는 장점을 가지고 있습니다.
3. Primary Key, Foreign Key에 대해 설명해 보세요.
Primary Key는 테이블에서 각 행을 고유하게 식별하는 컬럼 또는 컬럼들의 조합입니다. Primary Key는 중복된 값을 가질 수 없으며, Null 값을 허용하지 않습니다. 테이블에서 유일한 식별자를 제공함으로써 데이터의 무결성을 보장합니다.
Foreign Key는 한 테이블의 컬럼이 다른 테이블의 Primary Key를 참조하는 키로, 두 테이블 간의 관계를 정의합니다. Foreign Key를 통해 데이터의 일관성을 유지하고, 참조 무결성을 보장할 수 있습니다. 예를 들어, 주문 테이블에서 고객 정보를 참조할 때 Foreign Key를 사용하여 고객 테이블의 Primary Key와 연결합니다.
*Primary Key, Foreign Key에 대한 자세한 내용은 https://inpa.tistory.com/entry/DB-📚-키KEY-종류-🕵%EF%B8%8F-정리 참고
Primary Key(기본 키)와 Foreign Key(외래 키)는 서로 다른 개념입니다.
Primary Key(기본 키)는 한 개체(entity)를 고유하게 식별하는 것을 목표로 합니다. 각 열을 unique로 다루며 Not null 속성을 가집니다. Foreign Key(외래 키)는 다른 개체와의 관계 형성을 하기 위해 사용하는 것으로, 다른 테이블의 Primary Key(기본 키) 값을 참조합니다.
두 가지에 대해 좀 더 자세히 말씀드려 보겠습니다.
Primary Key(기본 키)는 데이터베이스 테이블에서 각 행(row)을 고유하게 식별하는 열(column) 또는 열의 조합을 말합니다. 키가 소속된 테이블에서 중복되지 않아야 하며, 모든 행은 기본 키 값을 가집니다. 주로 이 키가 식별자(identifier)로 사용됩니다. 각 행을 고유하게 식별하기 때문에 검색, 수정, 삭제, 구분 등의 작업에서 유용하게 사용됩니다.
Foreign Key(외래 키)는 한 테이블의 열(column)이 다른 테이블의 기본 키(primary key)를 참조하는 역할을 합니다. 다른 테이블과의 관계를 형성하여 데이터간의 일관성과 무결성(Integrity)을 유지하는 것에 사용합니다.
외래 키 제약 조건은 데이터베이스 시스템에서 외래 키 값을 검증하고 관리하는 것에 사용합니다. 조건은 부모 테이블(참조 테이블)의 값과 일치하지 않거나 해당 값이 null 상태일 때도 똑같이 적용됩니다.
4. SQL과 NoSQL 데이터베이스의 차이점은 무엇인가요?
SQL 데이터베이스는 관계형 데이터베이스로, 데이터를 정해진 스키마에 따라 테이블 형식으로 저장합니다. 이를 통해 데이터의 무결성을 보장하고, 복잡한 쿼리를 통해 데이터를 조회할 수 있습니다. 대표적인 SQL 데이터베이스로는 MySQL, PostgreSQL 등이 있습니다.
NoSQL 데이터베이스는 비관계형 데이터베이스로, 데이터를 유연하게 저장할 수 있어 스키마가 고정되지 않습니다. 주로 대규모 데이터를 처리하고, 수평적 확장이 필요한 경우 사용됩니다. 대표적인 NoSQL 데이터베이스로는 MongoDB, Cassandra 등이 있습니다.
SQL은 트랜잭션 처리와 데이터 일관성에 강점이 있으며, NoSQL은 유연한 데이터 구조와 확장성에 유리합니다.
SQL(Structured Query Language)은 관계형 데이터베이스로, 데이터가 테이블 형식으로 저장됩니다. SQL을 사용하여 데이터를 쿼리하고 조작합니다. 트랜잭션 처리의 유연성과 데이터 무결성이 강점입니다.
NoSQL은 비관계형 데이터베이스입니다. 데이터가 JSON, BSON, XML 등 비정형 형식으로 저장됩니다. 확장성과 유연성이 뛰어나며, 문서, 그래프, 열 기반 등의 다양한 데이터 모델을 지원합니다.
⭐참고자료
1) 한빛출판네트워크, "백엔드 기술 면접 TIP: 자바 기본 문법 예상 질문 5가지와 해설", 2024.02.08, https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1626582373&cate_cd=
2) 제로베이스, "현직자가 말하는 신입 백엔드 개발 면접 질문 | 백엔드 스쿨", https://zero-base.co.kr/event/media_BE_school_qna
3) 스파르타코딩클럽, "2024 백엔드 면접 질문 문제은행 - 개발자 면접 준비 101", 2024.08.22, https://spartacodingclub.kr/blog/2024-backend-jobinterview-question
이 글은 참고자료를 바탕으로 각 질문에 대한 답변을 정리한 것으로, 틀린 부분이 있을 수도 있습니다.
'기타 > 기술면접' 카테고리의 다른 글
신입 개발자 기술면접 예상 질문 정리 - 네트워크(1) (0) | 2024.11.10 |
---|---|
신입 개발자 기술면접 예상 질문 정리 - 자바(2) (2) | 2024.11.08 |
신입 개발자 기술면접 예상 질문 정리 - 백엔드(2) (0) | 2024.11.07 |
신입 개발자 기술면접 예상 질문 정리 - 자바(1) (1) | 2024.11.05 |
신입 개발자 기술면접 예상 질문 정리 - 백엔드(1) (0) | 2024.11.05 |