원티드 프리온보딩 2월 사전과제

2023. 2. 1. 19:31카테고리 없음

원티드 12월 AWS 기초 프리온보딩에 이어 MySQL '잘' 사용하기 챌린지에 신청했습니다.

사전 과제로 DB에 관련된 문제가 주어졌는데, 검색을 최소화하고 머릿속에서 끄집어낸 지식들로 답해보았습니다. DB를 잘 다룬다는 건 백엔드 개발자로서 가져야할 필수 아이템이라고 생각합니다. 하지만 동작하는 서비스를 만드는 데에 여념하다보면 제대로 공부하기 힘든 분야이기도 합니다. 챌린지는 총 4회로 구성되어 있는데, 각 강의를 블로그에 정리하는 것을 목표로 해보겠습니다.

1. 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)의 장단점 비교

  • 관계형 데이터베이스는 연관관계를 DB에서 지정해, FK에 따른 변경/삭제에 대한 제약을 줄 수 있습니다. 따라서 형식이 중요한 경우 관계형 데이터베이스가 적합합니다.
  • 반면 비관계형 DB는 관계를 DB가 가지고 있지 않기 때문에, 형식의 변경이 자유롭습니다. 제약이 없다는 것은 변경에 열려있다는 것이기 때문에 변경이 예상되는 아키텍처의 경우 적합합니다.

2. 트랜잭션(transaction)이란 무엇인가요?

  • 트랜잭션이란 DB에 요청한 하나의 통신입니다. 데이터를 조회, 변경, 삭제할 때 DB에 트랜잭션을 요청하게 됩니다.

3. MySQL에서 조인(join)의 역할은 무엇인가요? 다양한 join의 방식에 대해 설명해주세요.

  • 조인이란 관계형 DB에서 연관된 테이블들을 FK로 연결해 필요한 데이터 집합을 가져올 수 있는 쿼리입니다.
  • INNER JOIN : 두 테이블 중 일치하는 데이터만 리턴합니다.
  • LEFT JOIN : 왼쪽 테이블의 모든 데이터들과 오른쪽 테이블과 일치한 데이터를 리턴합니다.
  • RIGHT JOIN : 오른쪽 테이블의 모든 데이터와 왼쪽 테이블과 일치한 데이터를 리턴합니다.
  • CROSS JOIN : 모든 데이터를 리턴합니다.

4. MySQL에서 인덱스(index)란 무엇인가요?

  • 인덱스란 책의 목차처럼, DB의 목차를 만들어 DB 조회 시 처음부터 검색하지 않고, index를 찾아 검색 성능을 줄여줄 수 있는 기능입니다.

원티드 2월 백엔드 챌린지 - MySQL "잘" 사용하기