데이터베이스 (1) 구성

InSeok·2023년 1월 17일
0

CS

목록 보기
1/11

데이터베이스(DB)

정의

  • 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음

특징

  1. 실시간 접근성(Real-Time Accessibility) : 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야합니다.
  2. 지속적인 변화(Continuous Evloution) : 데이터베이스의 상태는 동적이며, 항상 최신의 데이터를 유지해야 합니다.
  3. 동시 공용(Concurrent Sharing) : 데이터베이스는 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 합니다.
  4. 내용에 의한 참조(Content Reference) : 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 찾습니다.

DBMS(DatabaseManagement System)

  • 데이터베이스를 제어, 관리하는 통합 시스템
  • 쿼리언어를 통해 삽입 삭제 수정 조회 수행

데이터베이스 언어

  • DDL (정의어 : Data Definition Language) : 데이터베이스 구조를 정의, 수정, 삭제하는 언어 ( alter, create, drop )
  • DML (조작어 : Data Manipulation Language) : 데이터베이스내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어 ( select, insert, update, delete )
  • DCL (제어어 : Data Control Language) : 데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어 ( commit, rollback, grant, revoke )

무결성 : 데이터의 정확성과 일관성을 유지하고 보증하는 것

엔티티

  • 사람, 장소 , 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사

릴레이션

  • 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
  • RDB - 테이블
    • 구조 : 레코드 -테이블 - 데이터베이스
  • NoSQL - 컬렉션
    • 구조: 도큐먼트 - 컬렉션 -데이터베이스
  • Relation의 제약 조건
    • table의 cell은 단일값을 갖는다.
    • 어떤 2개의 row도 동일하지 않는다.

속성(Attribute)

  • 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보

도메인(domain)

  • 릴레이션에 포함되는 각각의 속성들이 가질 수 있는 값의 집합
    • ex - 성별 : {남,여}

필드 == Column(열) == 속성

  • 타입
    • 시간
      • DATE
      • DATETIME: 날짜 및 시간 부분을 모두 포함하는 값 8바이트
      • TIMESTAMP : 날짜 및 시간 부분을 모두 포함하는 값 4바이트
    • 문자
      • CHAR : 테이블을 생성할 때 선언한 길이로 고정됨
      • VARCHAR: 가변길이 문자열
      • TEXT : 큰 문자열 저장
      • BLOB: 이미지, 동영상 등 큰 데이터 저장
    • 문자열 열거
      • ENUM : 단일선택만 가능
      • SET : 여러개의 데이터를 선택 가능, 비트단위 연산 가능

레코드 == Row(행) == 튜플

트리거(Trigger)

  • 특정 테이블에 대한 이벤트에 반응해 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램

DB Connection Pool

  • 웹 컨테이너(WAS)가 실행되면서 DB와 미리 연결해놓은 객체들을 Pool에 저장해두었다가 클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식

NOSQL vs RDB

RDB

  • 관계형 데이터베이스(RDB)는 사전에 엄격하게 정의된 DB schema를 요구하는 table 기반 데이터 구조를 갖습니다.
  • RDB는 엄격한 schema로 인해 데이터 중복이 없기 때문에 데이터 update가 많을 때 유리합니다.

NOSQL

  • NoSQL(비관계형 데이터베이스)은 table 형식이 아닌 비정형 데이터를 저장할 수 있도록 지원합니다.
  • NoSQL의 경우 데이터 중복으로 인해 데이터 update 시 모든 컬렉션에서 수정이 필요하기 때문에 update가 적고 조회가 많을 때 유리합니다
RDB (SQL)NoSQL
데이터 저장 모델tablejson document / key-value / 그래프 등
개발 목적데이터 중복 감소애자일 / 확장가능성 / 유연성
예시Oracle, MySQL, PostgreSQL 등MongoDB, DynamoDB 등
Schema엄격한 데이터 구조유연한 데이터 구조
장점- 명확한 데이터구조 보장
  • 데이터 중복 없이 한 번만 저장 (무결성)
    update 용이 | - 유연하고 자유로운 데이터 구조
  • 새로운 필드 추가 자유로움
  • 데이터 분산이 용이하여 수평적 확장(scale out) 하기 쉽다. |
    | 단점 | - 시스템이 커지면 Join문이 많은 복잡한 query가 필요
  • 수평적 확장이 까다로워 비용이 큰 수직적 확장(Scale up)이 주로 사용됨.
  • 데이터 구조가 유연하지 못함 | - 데이터 중복 발생 가능, 데이터 변경 시 모든 컬렉션에서 수정이 필요함
    |
    | 사용 | - 데이터 구조가 변경될 여지가 없이 명확한 경우
  • 데이터 update가 잦은 시스템 (중복 데이터가 없으므로 변경에 유리) | - 정확한 데이터 구조가 정해지지 않은 경우
  • 조회가 많고,
  • 데이터 양이 매우 많은 경우 (scale out 가능) |
profile
백엔드 개발자

0개의 댓글