DBMS (DataBase Management System)

  • 데이터베이스 내 데이터에 접근하도록 도와주는 시스템




DDL, DML, DCL, TCL

1) DDL (Data Definition Language)

  • 데이터 정의 언어

  • DB 구조 or 스키마(Schema)에 관한 명령어

  • CREATE(생성),  ALTER(수정),  DROP(삭제),  TRUNCATE(초기화),  RENAME


2) DML (Data Manipulation Language)

  • 데이터 조작 언어

  • DB에 저장된 데이터를 조작하는 명령어

  • SELECT: 데이터 조회

  • INSERT , DELETE, UPDATE: 데이터 변형 (삽입, 삭제, 수정)


3) DCL (Data Control Language)

  • 데이터 제어 언어

  • DB에 접근할 수 있는 권한에 대한 명령어

  • GRANT(권한 부여),  REVOKE(권한 회수)


4) TCL (Transaction Control Language)

  • 트랜잭션 제어 언어

  • 논리적인 작업 단위인 트랜잭션 별로 제어하는 명령어

  • 데이터의 보안, 무결성, 회복 제어 등을 위해 사용

  • COMMIT: 트랜잭션 작업 결과 반영

  • ROLLBACK: DB를 마지막 COMMIT 시점으로 복원

  • SAVE POINT: ROLLBACK 지점 정의


Question) "DDL, DML, DCL, TCL에 대해 설명 해주세요."

  • DDL은 데이터 정의 언어로서, DB 구조 또는 스키마에 관한 명령어 입니다.
    테이블 생성 CREATE, 수정 ALTER, 삭제 DROP, 초기화 TRUNCATE 등이 있습니다.

  • DML은 데이터 조작 언어로서, DB에 저장된 데이터를 조작하는 명령어 입니다.
    데이터 조회 SELECT, 삽입 INSERT, 삭제 DELETE, 수정 UPDATE 등이 있습니다.

  • DCL은 데이터 제어 언어로서, DB에 접근할 수 있는 권한에 대한 명령어 입니다.
    권한 부여 GRANT, 권한 회수 REVOKE 가 있습니다.

  • TCL은 트랜잭션 제어 언어로서, 논리적인 작업 단위인 트랜잭션 별로 제어하는 명령어 입니다.
    데이터의 보안, 무결성, 회복 제어 등을 위해 사용 합니다.
    트랜잭션 작업 결과를 반영하는 COMMIT,
    DB를 마지막 커밋 시점으로 복원하는 ROLLBACK,
    롤백 지점을 정의하는 SAVE POINT 등이 있습니다.




트랜잭션 (Transaction)

  • DB의 상태를 변화 시키기 위해 수행하는 작업의 단위

  • 논리적인 작업 단위

  • 한번에 모두 처리되거나 or 처리되지 않아야 하는 작업들의 모임
    ex) 은행 시스템에서 계좌이체




트랜잭션의 특징 - ACID

1) Atomicity (원자성)

  • 트랜잭션의 작업이 부분적으로 일부만 실행되거나, 중단되지 않는 것을 보장하는 것

  • 작업 단위를 일부분만 실행하지 않는 것
    => All or Nothing : 모두 수행되거나, 모두 수행되지 않도록 함


2) Consistency (일관성)

  • 트랜잭션이 성공적으로 완료되면, DB 상태를 일관되게 유지하는 것
    ex) 계좌 송금 전후 금액의 데이터 타입이 integer로 일관

3) Isolation (격리성)

  • 트랜잭션 수행시, 다른 트랜잭션의 작업이 간섭하지 못하도록 보장함
    => 트랜잭션끼리는 서로를 간섭할 수 없음

4) Durability (지속성)

  • 성공적으로 수행된 트랜잭션은 영원히 반영되는 것

  • Commit을 하면, 현재 상태는 영원히 보장됨


Question) "트랜잭션의 특징 4가지 설명 해주세요."

데이터베이스의 무결성과 일관성을 위해서, 트랜잭션은 4가지 특징을 만족해야 합니다.

  • 원자성은 한 트랜잭션 내 실행한 작업은 모두 성공하거나 실패 해야하는 것 입니다.
  • 일관성은 일관성 있는 데이터베이스의 상태를 유지시키는 것 입니다.
  • 격리성은 동시에 실행된 트랜잭션은 서로에게 영향을 미치지 않아야 되는 것 입니다.
  • 지속성은 트랜잭션 완료시, 결과가 영구적으로 반영 되어야 하는 것 입니다.




NOSQL (= Not Only SQL)

  • SQL을 보완한다는 의미

  • SQL은 보통 RDBMS (관계형 데이터베이스 시스템) 의미

  • SQL과 NOSQL의 가장 큰 차이점
    => Schema (스키마) 존재 여부
    => SQL은 스키마가 있고, NOSQL은 스키마가 없음

  • 조회, 삽입 속도가 SQL에 비해 빠름

  • 대량의 데이터를 저장하기에 더 용이


Question) "NOSQL에 대해 설명 해주세요."

  • NOSQL은 Not Only SQL의 약자로, SQL을 보완 한다는 의미를 가지고 있습니다.
  • NOSQL은 스키마가 없어서 데이터를 조회하고, 삽입하는 속도가 빠릅니다.
  • 또한 대량의 분산 데이터를 저장하는 데 특화 되어있습니다.




파티셔닝 (Partitioning / Vertical Partitioning)

  • 테이블을 Column 단위로 나누어 저장하는 기법

  • 테이블이 너무 커서, 작업 시 성능이 떨어지는 경우 사용


Question) "파티셔닝에 대해 설명 해주세요."

파티셔닝은 테이블을 칼럼 단위로 나누어 저장하는 기법 입니다.

  • 장점은 updateinsert 같은 작업이 분산되어서 성능이 향상 됩니다.
  • 단점은 테이블 간 join 비용이 증가하게 되고,
    index를 별도로 파티셔닝 할 수 없다는 점이 있습니다.




샤딩 (Sharding / Horizontal Partitioning)

  • 테이블을 Row 단위로 나누어 저장하는 기법

Question) "샤딩에 대해 설명 해주세요."

샤딩은 테이블을 Row 단위로 나누어 저장하는 기법 입니다.

  • 샤드 Key를 정하는 방법에 따라서 샤딩 종류가 결정되는데,
    크게 Hash ShardingDynamic Sharding이 있습니다.




profile
Silver Star

0개의 댓글