[CS면접 및 자바 면접 준비] DB 데이터 베이스 면접 정리 - DB의 기

2024. 3. 28. 01:06·면접 준비
728x90
반응형
SMALL

DB의 기본

용어정리

  • DB(DataBase)

    • 통합하여 관리되는 데이터의 집합체
  • DBMS(DataBase Management System)

    • DB를 관리하고 운영하는 소프트웨어
    • 계층형, 망형, 관계형 DBMS 중 대부분의 DBMS가 테이블로 구성된 관계형 DBMS(RDBMS)
    • 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야함

  • SQL(Structured Query Language)

    • 구조화된 질의 언어라는 뜻
    • 표준 SQL을 배우면 대부분의 DBMS사용 가능

DBMS의 종류

  • 계층형(현재 사용x)
    • 구성 후 변경하기가 매우 까다로움

  • 망형(현재 사용x)

    • 모든 구조를 파악해야 프로그램 작성 가능
  • 관계형 DBMS

    • 테이블안에 행과 열로 이루어져 있음

✨DB의 특징

  • 독립성
    • DB는 데이터를 사용하는 응용 프로그램과 독립적으로 데이터를 저장
    • 물립적 독립성 :
      • DB의 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 새롭게 추가하더라도 관련 응용프로그램을 수정할 필요가 없다.
    • 논리적 독립성
      • 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족
  • 무결성
    • 다양한 제약조건 및 기능을 통해 무결성 유지
  • 보안성
    • 계정 및 권한 관리를 통해 데이터 보안 유지
  • 일관성
    • 다양한 제약조건을 통해 일관된 유지
    • 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성 배제
    • 작업 중 일부의 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수 배제
  • 중복 최소화
    • 데이터를 통합해서 관리하여 중복 최소화

SQL이란?

SQL은 DDL(Data Definition Language), DML(Data Manipulation Language), DCL(Data Control Language)와 같이 세가지로 나눌 수 있습니다.

  • DDL(데이터 정의어)

    입력/수정/삭제/조회

  • DML(데이터 조작어)

    DB 및 테이블 생성/ 구조 변경/ 삭제/ 이름 변경

  • DCL(데이터 제어어)

    DB에 접근하고 객체들을 사용하도록 권한을 주고 회수

  • TCL(트랙잭션 제어어)

    실행 여부를 결정

✨키(Key)란?

  • 검색, 정렬 시 튜플(레코드,행)을 구분할 수 있는 기준이 되는 속성
    • 후보키(Candidate Key)
      • 기본키로 사용할 수 있는 속성들(유일성,최소성)
      • 후보키 중 기본키를 제외한 나머지는 모두 보조키
      • 유일성 O, 최소성 X ⇒ 슈퍼키
    • 기본키(Primary Key)
      • 하나의 테이블에서 특정 튜플을 구별할 수 있는 속성
      • 개체 무결성에 의해 기본키에는 null값과 중복된 값이 저장되어질 수 없다
      • 엔티티를 식별하는 대표 키
      • table당 1개
    • 외래키(Foreign Key)
      • 중복되지 않는 유일한 값
      • 기본키와 다르게 Null허용
      • 신입사원이 해당 부서가 정해지지 않은 경우
    • 대체 키(보조키)
      • 후보키 중에서 기본키(Primary Key)로 선택되지 않고 남은 키(Key)를 의미한다. 보

✨여러 후보키 중 기본키 선정 조건

  • Null값을 가질 수 있는 속성이 포함된 후보키는 부적합 ⇒ 다른 튜플과 구분이 어려움
  • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합 ⇒ 다른 튜플과 구별되는 값인지 매번 확인해야 함
  • 정수, 단순 문자열로 처리 및 이해가 쉬운 값

✨외래키는 Null이 허용되는가?

  • 허용된다.
  • 예시 : 사원은 하나의 부서를 가진다. 신입사원은 부서가 미정될 수 있다.
    • 외래키 값은 Null이거나 부모 테이블의 기본키 값과 동일해야 한다.(참조 무결성 제약 조건)
    • 부모 테이블의 기본키, 고유키를 외래키로 지정가능하다.
    • 데이터 타입은 같아야 한다.
    • 기본키, 고유키가 여러 개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정 가능

✨RDBMS 와 NoSQL은 무엇인가?

  • RDBMS
    • DB를 이루는 객체들의 릴레이션을 통해서 데이터를 저장
    • SQL을 사용해 CRUD 가능
    • 중복을 피하고 명확한 데이터 구조를 보장
    • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우 사용된다.
    • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우 사용된다.
  • NoSQL
    • 전통적인 관계형 모델에서 벗어나 다양한 데이터 모델을 사용하여 데이터의 관리와 접근을 지원하는 DB
    • 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우 사용
    • 일기를 자주 하지만 변경은 자주 없는 경우 사용
    • DB를 수평으로 확장해야 하는 경우(막대한 양의 DB처리)
    • DB마다 사용하는 데이터의 모델이 다르기 때문에 해당 DB를 잘 이해하고 있어야 함
    • 엄격한 제한 조건이 없기 때문에 수정,삭제를 수행하는 경우 모든 컬렉션에 거쳐서 이를 반영해야 한다.
    • 종류
      • Key-Value Data Model: 하나의 키에 하나의 데이터 저장 -> ex. Redis, Memcached, Redis, DynamoDB
      • Document Data Model: Key-Value 모델을 개념적으로 확장해서 하나의 키에 하나의 구조화된 문서를 저장 -> ex. MongoDB
      • Column-Family: Cassandra
      • Graph Model

❓ RDBMS의 한계와 NoSQL을 사용하는 이유 - CAP, PACELC 이론

https://user-images.githubusercontent.com/58318786/209629669-ff673105-f4e5-4203-96fa-74112f9f84a5.png

  • CAP 이론: 분산 환경에서 모두를 만족하는 시스템은 없다는 이론입니다.
  • Consistency(일관성)
    • 모든 노드들이 동일 시간에 동일 데이터를 사용자에게 보여줘야 하는 것을 의미합니다.
    • ACID Consistency와는 조금 다릅니다. (데이터는 항상 일관성 있는 상태를 유지, 데이터 조작 후에도 헤치지 말아야 한다는 속성)
    • 쓰기 동작 완료 후 발생하는 읽기 동작은 마지막으로 쓰여진 데이터를 리턴합니다.
    • 동시성, 동일성이라고도 하며 다중 클라이언트 환경에서 같은 시간에 조회하는 데이터는 항상 동일해야 한다는 보증을 하는 것입니다.
    • RDBMS가 지원하는 가장 기본적인 기능입니다.
    • NoSQL은 데이터의 일관성이 느슨하게 처리(데이터의 변경이 시간에 흐름에 따라 여러 노드에 전파)되어 동일한 데이터가 나타나지 않을 수 있습니다.
  • Availability(가용성)
    • 특정 노드에 장애가 발생해도 성공적으로 서비스를 지속하는 것을 의미합니다.
    • 모든 동작에 대한 응답이 리턴되어야 합니다.
  • Partition Tolerance(분할 내성)
    • 시스템 일부가 네트워크에서 연결이 끊기더라도 동작해야 하는 것을 의미합니다.
    • 파티션 허용, 분산화 가능 물리적인 네트워크 분산 환경에서도 시스템이 잘 동작해야 하는 것을 의미합니다.
  • 분산 시스템에서 2가지만 만족할 수 있는데 단순히 특정 데이터베이스가 CA, CP, AP라고 확정지을 수는 없습니다. => 어떻게 클러스터링 하느냐에 따라 달라질 수 있음
  • RDBMS는 일반적으로 CA를 만족하는데 분산화보다는 데이터의 일관성과 가용성에 중점을 주기 때문, 시스템의 신뢰성이 높습니다.
  • NoSQL은 일반적으로 CP(MongoDB, Redis)나 AP(DynamoDB, cassandra, CouchDB)형태를 선호하는데 데이터의 신뢰성보다는 분산에 중점을 둔 방식이기 때문입니다.
  • ⚠️ 한계
    • 완벽한 AP, CP 시스템은 사용할 수 없고 대부분의 분산 시스템은 CP와 AP의 중간이 됩니다.
    • 모든 분산 시스템이 파티션을 사용하지는 않습니다.

https://user-images.githubusercontent.com/58318786/220240334-aa2aa1eb-168f-451c-b5b2-4354eefed030.png

  • PACELC 이론: CAP로 부족한 부분을 보완하기 위해 네트워크 장애 상황(Partition)과 정상 상황(Else)을 나눠서 설명하는 이론입니다.
  • 네트워크 장애 상황 시 분산시스템은 가용성(A;Availability)과 일관성(C;Consistency)이 상충됩니다.
  • 정상 상황 시 지연 시간(L; Latency)과 일관성(C; Consistency)이 상충됩니다.
  • cf.) Eventual Consistency: Consistency를 보장해주지 못하기 때문에 나온 개념으로, Consistency를 완전히 보장하지는 않지만, 결과적으로 언젠가는 Conssistency가 보장됨을 의미합니다.
728x90
반응형
SMALL

'면접 준비' 카테고리의 다른 글

백엔드 자바 CS 면접 빈출 질문 대비하기 - Security  (0) 2024.08.01
백엔드 자바 면접 빈출 질문 대비하기 - 리스트 업  (0) 2024.08.01
[CS면접 및 자바 면접 준비] Generic 및 쓰레드 면접 질문 정리  (0) 2024.03.27
[CS면접 및 자바 면접 준비] Network  (2) 2024.03.26
[CS면접 및 자바 면접 준비] 컬렉션 프레임워크  (4) 2024.03.23
'면접 준비' 카테고리의 다른 글
  • 백엔드 자바 CS 면접 빈출 질문 대비하기 - Security
  • 백엔드 자바 면접 빈출 질문 대비하기 - 리스트 업
  • [CS면접 및 자바 면접 준비] Generic 및 쓰레드 면접 질문 정리
  • [CS면접 및 자바 면접 준비] Network
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (329)
      • 면접 준비 (45)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (5)
      • Kafka (5)
      • Spring (60)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (39)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      redis 채팅
      리눅스마스터2급정리
      JavaScript
      스프링프레임워크
      springsecurity
      프로그래머스
      jsp request
      spring redis
      java
      Spring Data Redis
      백준
      자바 반복문
      HTML
      jsp기초
      Til
      자바 면접질문
      Spring
      CSS
      Springframework
      리눅스
      자바 알고리즘
      레디스
      자바기초
      자바
      JSP
      redis
      자바스크립트
      자바 면접
      리눅스마스터2급
      JS
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [CS면접 및 자바 면접 준비] DB 데이터 베이스 면접 정리 - DB의 기
    상단으로

    티스토리툴바