데이터베이스 간단 정리

최동혁·2022년 12월 6일
0

데이터베이스

목록 보기
1/18

데이터베이스

관련 질문

  1. Database와 DBMS의 차이에 대해서 설명해 보세요.
    1. 데이터베이스는 데이터가 실제 저장되는 저장소와 데이터를 합친 집합체
    2. 데이터베이스를 효율적으로 관리하기 위한 시스템
  2. 데이터 독립성에 대해서 설명해 보세요.
    1. 외부 스키마와 내부 스키마간 서로의 간섭을 최소화 해서 독립적으로 유지시키기 위한 방법
  3. DML과 DDL에 개념과 예를 들어 설명해 보세요.
    1. DML(Data Manifulation Language) 우리가 흔히 사용하는 SELECT, UPDATE, DELETE 같은 쿼리
    2. DDL(Data Definition Language) CREATE Table, DROP Table 이런 것들을 의미한다.
  4. 트랜잭션의 정의와 ACID에 대해서 설명해 보세요.
    1. 트랜잭션은 매우 중요한 단어임
      1. 일련의 데이터베이스의 작업 단위로서 읽기와 쓰기가 하나로 묶이는 작업 단위
    2. ACID는 트랜잭션의 특징을 설명하는 약자
      1. Atomicity(원자성), Consistency(일관성), Isolation(격리), Durability(영속성)
  5. ACID vs BASE의 차이를 비교 설명해 보세요.
    1. ACID는 RDBMS에서 얘기하는 트랜잭션의 특징을 얘기함
    2. BASE는 NoSQL에서 말하는 성질
      1. Basically Available, Soft state, Eventually Consistence의 약자
  6. DBMS에서 말하는 Join의 개념과 종류에 대해서 설명해 보세요.
    1. JOIN은 엔터티와 엔터티, 테이블과 테이블을 연결하는 방법
    2. 떨어져있는, 분리되어 있는 테이블 간의 JOIN을 통해서 데이터를 합칠 수 있는 방법
    3. 종류로는 nested loop join, hash join, bitmap join, merge join 등이 있음.
  7. DBMS의 동시성 제어 기법에 대해서 알고 있는 것을 설명해 보세요.
    1. 동시성 제어 기법이란 여러 트랜젝션이 동시에 접근을 했을 때, 그 트랜잭션을 관리해서 직렬화시키는 방법
    2. 동시성 제어를 하지 않는 경우는 더티리드, 팬텀리드 같은 현상이 나타날 수 있기 떄문에 동시성 제어를 통해서 그런 문제를 해결하는 것임.
  8. 데이터 무결성의 개념과 실현하기 위한 기법/방법에 대해서 설명해 보세요.
    1. 데이터 무결성이란?
      1. 데이터가 항상 consistency(일관성)을 갖고 정확성을 유지한다는 의미
    2. 실현하기 위한 방법
      1. primary key, foreign key, 속성 제약 등을 통해서 실현시킴.
  9. 정규화(Normalization)란? 무엇일까요? 3차 정규화에 대해서 설명해 보세요.
    1. 데이터 아노말리 현상을 제거하기 위한 기법으로써 무손실의 엔터티를 계속 분리해 가는 것
    2. 그럼으로써 데이터의 consistency와 정확성을 유지시켜감.
    3. 3차 정규화란?
      1. 이행 함수 종속성을 제거해서 정규화를 실현시키는 방법
  10. 반정규화는 왜 할까요? 몇 가지 기법에 대해서 설명해 보세요.
    1. 반정규화는 정규화로 인해서 데이터 정확성은 실현이 되었지만, 속도가 비교적 느려질 수 있기 때문에 다시 역정규화, 반정규화를 적용해서 중복을 허용함으로써 속도 성능향상을 실현시킴
    2. 대표적인 기법으로는 column 중복, table 분할, table 병합, 관계 중복 등이 있음.

데이터 독립성

  • 하위 단계의 데이터의 논리적, 물리적 구조가 변경되어도 상위 단계에 영향을 미치지 않도록 구성하는 데이터베이스 특징

  • 개념 스키마와 내부 스키마의 독립성을 유지하는 것을 물리적 데이터 독립성이라고 한다.
    • 개념 스키마 하나만 만들어도 특정 시스템이 오라클에서 MySQL 로 변경할때 손쉽게 변경 가능

  • 권한별 뷰가 다르게 설정되어 있는 것을 외부 스키마라고 함.
  • 개념 스키마가 변경되더라도, 몇가지 특성이 추가 되더라도 외부 스키마를 수정할 필요 없음.
  • 내부스키마는 오라클이나 mysql같은것.
  • 해당 물리적인 내부 스키마가 변경되더라도, 개념 스키마는 변경할 필요 없이 자동으로 물리적 스키마를 만들어줄 수 있다.

DBMS와 RDBMS의 차이점

DBMS 정의

  • 데이터베이스의 예를 들라고 했을 때?
    • 오라클, 마리아디비 등등 말하면 잘못된 대답.
    • DBMS의 벤더사인 오라클, 마리아디비라고 대답해야함.

  • DBMS 벤더들이 주로 제공하고 있는 공통적인 기능이다.

  1. 일반 사용자들이 터미널을 통해 DBMS에 접속해서 쿼리 입력(질의어 처리기)
  2. 질의어 처리기를 통해 런타입 DB 처리기까지 이동하게 됨
  3. 혹은 응용 어플리케이션에서 JDBC 드라이버 등을 통해 xml로 저장된 쿼리들이 실행될 수 있음.
  4. 컴파일러들을 통해 문법적인 오류가 있는지 체크
  5. 스키마를 변경하는 DataDefiniteLanguage(DDL) 예를 들면 DROP 같은 명령어가 도착하면 컴파일러를 통해 런타임 DB 하위단으로 이동함.
  6. DML의 경우는 커밋이나 롤백이 가능함.
  7. 그래서 문제가 생겼을 때 트랜잭션 관리자를 통해 커밋이나, 롤백을 하는 단계가 있음.
  8. DDL의 경우는 롤백할 수 있는 방법이 없어서 트랜잭션 관리자가 통제하지 않는다.

DBMS 질의어(쿼리)

  • TRUNCATE는 DDL이기 때문에 롤백이나 커밋이 존재하지 않는다.
  • DELETE 쿼리를 실행시켜서 데이터를 삭제했을때는 롤백을 통해 모든 데이터를 복구할 수 있지만, TRUNCATE 명령어를 통해 삭제했을 경우는 복구할 방법이 없다!(백업이 없는 경우에)
  • TRUNCATE는 속도가 매우 빠름.
  • DELETE는 UNDO 영역에 데이터를 적재하면서 하나하나 삭제하기 때문에 시간이 매우 오래 걸리는데 비해, TRUNCATE는 롤백이 존재하지 않게 데이터를 영구히 삭제하기 때문에 0.5초 만에 데이터를 모두 삭제함.

트랜잭션 개념

  • 중간에 장애가 발견되면 모든것이 롤백됨

  • 트랜잭션의 ACID 특징 4가지를

동시성 제어

  • 동시성 제어를 엄격히 할 수록 성능이 안좋아진다.

  • 팬텀 리드를 막고 싶다면 아이솔레이션 레벨을 3으로 설정해서 셀렉트 쿼리에 테이블에 전체 락을 걸어야 함.
  • 성능은 느림.

NoSQL

RDBMS와 NoSQL의 장단점

profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글