백엔드 멘토링

2023-08-29 DB 관련 질문 정리

piedra_de_flor 2023. 8. 30. 00:13

- RDBMS는 무엇일까?

= RDBMS는 관계형 데이터 베이스를 관리하는 소프트웨어를 뜻하며, 모든 데이터를 2차원 테이블로 표현한다.

    - 장, 단점은 무엇인가?

    장점

  • 데이터의 일관성과 무결성은 유지할 수 있다.
  • SQL을 통하여 데이터를 조작 및 조회가 가능하다
  • 테이블 간의 관계를 통하여 복잡한 데이터 모델의 구축이 가능하다.
  • 보안 및 복구와 백업을 지원한다

    단점

  • 대규모의 DB를 설계하고 관리 할 경우 높은 복잡성을 요구할 수 있고, 모델링이 잘못 구성될 경우 성능 및 유지보수에 문제가 발생한다
  • 테이블 간의 조인등 복잡한 쿼리를 실행시 성능 이슈가 발생할 수 있다.
  • 상용 RDBMS를 사용함에 있어 비용이 부담될 수 있다.

- NoSQL이란?

= Not Only SQL의 약어로 비관계형 데이터베이스이다.

관계형 데이터베이스의 한계를 극복하기 위해 스키마 없이 사용되거나 느슨한 스키마를 제공하는 저장소이다.

데이터 간의 관계를 정의하지 않기 때문에 JOIN연산이 불가능하며, 빅데이터 처리에 효과적이다.

 

    장점

  • RDBMS에 비해 저렴한 비용으로 분산 및 병렬처리가 가능
  • 데이터 구조 설계 비용 감소
  • 빅데이터 처리에 효과적
  • 스키마가 정의되지 않았기에 가변적인 데이터 구조 저장 가능

     단점

  • 데이터 업데이트 중 장애가 발생하면 데이터의 손실 가능
  • 많은 인덱스를 사용하려면 충분한 메모리가 필요
  • 데이터의 일관성이 항상 보장되지 않음


- SQL은 무엇인가?

= 구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다.

    - SQL 정의 언어는 무엇이 있을까?

  • DDL : 데이터 정의 언어 - 데이터베이스의 구조를 정의하고 관리하는데 사용
    • CREATE TABLE: 테이블 생성
    • ALTER TABLE: 테이블 변경
    • DROP TABLE: 테이블 삭제
    • CREATE INDEX: 인덱스 생성
    • ALTER INDEX: 인덱스 변경
    • DROP INDEX: 인덱스 삭제
  • DML : 데이터 조작 언어 - 데이터를 조회, 삽입, 갱신, 삭제하는데 사용
    • SELECT: 데이터 조회
    • INSERT: 데이터 삽입
    • UPDATE: 데이터 갱신
    • DELETE: 데이터 삭제
  • DCL : 데이터 제어 언어 - 데이터베이스의 보안과 권한을 관리하는데 사용
    • GRANT: 권한 부여
    • REVOKE: 권한 회수


- 조인은 무엇인가?

= 조인이란 데이터베이스에서 여러 개의 테이블에 저장된 데이터들을 연결하여 하나의 결과집합으로 만드는 작업을 의미한다, 데이터의 중복을 피하거나 데이터의 관계를 표현하기 위한 목적으로 사용된다.


- 조인을 하면 좋지 않은 이유?

= JOIN연산 또한 테이블을 조회해서 알맞은 데이터를 꺼낸 후 합병하여 새로운 결과 집합을 만드는 과정이므로 JOIN이 복잡하고 많이 사용될 수 록 성능은 저하가 된다.


- 조인의 종류는 무엇이 있을까

  • INNER JOIN : 두 테이블 간의 교집합을 반환한다.
  • LEFT JOIN (LEFT OUTER JOIN): 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 일치하는 데이터를 가져옵니다.
  • RIGHT JOIN (RIGHT OUTER JOIN): 왼쪽 JOIN의 반대로, 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 일치하는 데이터를 가져옵니다.
  • FULL JOIN (FULL OUTER JOIN): 두 테이블의 모든 데이터를 가져오며, 조인 조건을 만족하는 데이터는 중복 없이 출력됩니다.


- 정규화란 무엇인가?

= 정규화란 테이블 간에 중복된 데이터를 허용하지 않음으로써, 데이터의 무결성을 유지하고 용량을 줄이는 방법이다.


    - 장, 단점

    장점

  • 데이터베이스 변경 시 이상현상 제거
  • 효과적인 검색 알고리즘 생성
  • 데이터 구조의 안정성

    단점

  • JOIN연산의 증가로 성능의 저하


- 반정규화는 무엇인가?

= 정규화의 반대대는 의미로 의도적으로 정규화 원칙을 위배하는 행위이다.


- 데이터베이스 뷰란?

= 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위한 가상 테이블이다.

    - 장, 단점

    장점

  • 논리적 데이터 독립성을 제공한다
  • 사용자의 데이터관리를 간단하게 해준다
  • 접근 제어를 통한 자동 보안이 제공된다

    단점

  • 독립적인 인덱스를 가질 수 없다
  • 뷰의 정의를 변경할 수 없다
  • 뷰로 구성된 내용에 대한 CUD연산에 제약이 따른다


- ER 모델은 무엇인가?

= ER 모델 (Entity-Relationship model) 은 데이터베이스를 디자인하기 위해 이용되는 모델링 기법으로데이터베이스에 대한 요구 사항을 그래픽적으로 표현하는 방법이다요구사항으로부터 얻어낸 정보들을 개체(Entity), 애트리뷰트(Attribute), 관계성(Relation)으로 기술하는 데이터 모델을 말한다.


- 인덱스란 무엇인가?

= 인덱스란 책의 목차와 비슷한 기능으로 검색 속도를 향상시키기 위한 자료구조이다


    - 인덱스는 언제 사용해야하나?

  • 규모가 작지 않은 테이블
  • 변경이 자주 발생하지 않는 칼럼
  • JOIN이나 WHERE, ORDER BY에 자주 사용되는 칼럼
  • 데이터의 중복도가 낮은 칼럼


    - 인덱스의 종류

  • 클러스터형 인덱스
  • 비클러스터형 인덱스 ( 보조 인덱스 )
  • 단일 인덱스
  • 복합 인덱스
  • 커버드 인덱스
  • 해시 인덱스
  • .....etc

'백엔드 멘토링' 카테고리의 다른 글

자바의 신 - 복습 정리(2)  (0) 2023.09.23
Transaction이란?  (0) 2023.09.23
객체지향의 사실과 오해 후기  (0) 2023.08.27
자바의 신 - 복습 정리(1)  (0) 2023.08.27
RestTemplate vs webClient vs openFeign 차이  (0) 2023.08.27