Data Base

DB는 여러 사람이 공유하여 사용할 목적으로 체계화 통합, 관리 하는 데이터의 집합 저장되는 대상/저장하는 방법에 따라 웹 서비스의 목적과 성능이 달라짐

Data Base Management System

데이터 베이스를 관리하는 시스템 데이터 베이스를 관리하는 프로그램

DB 종류

RDB

  • Relational Database
    • MS SQL Server
    • MariaDB
    • MySQL
    • PostgreSQL
    • SQLite
    • ORACLE

NoSQL

  • Not only SQL
  • MongoDB

RDB ?

  • 관계형 데이타 모델에 기초를 둔 데이타베이스
  • 데이터를 테이블 형태 ( 열 & 행 ) 로 저장
  • 데이터를 표와 같은 형태로 저장하는 DBMS

SQL

  • Structured Query Language
  • DBMS 에서 데이터를 조작하고 관리하기 위한 언어
    • INSERT
    • SELECT
    • DELETE

SQL의 종류

  • DML
    • Data Manipulation Language
    • 레코드를 조회하거나 수정하거나 삭제하는 등의 역할
    • SELECT : 데이터 조회
    • INSERT : 데이터 삽입
    • UPDATE : 데이터 갱신
    • DELETE : 데이터 삭제
  • DDL
    • Data Definition Language
    • 데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할
    • CREATE : 테이블 생성
    • ALTER : 테이블 변경
    • DROP : 테이블 삭제
    • RENAME : 테이블 이름 변경
    • TRUNCATE : 테이블 초기화
  • DCL
    • Data Control Language
    • 접근하거나 객체에 권한을 주는 등의 역할
    • GRANT : 유저 권한 부여
    • REVOKE : 권환 회수
    • COMMIT : 데이터베이스에 작업 반영
    • ROLLBACK : 작업 이전의 상태로 되돌림
    • SAVEPOINT : 롤백의 기준점

NoSQL

  • 비관계형 데이터 베이스

구조를 정의할 필요 없이 데이터를 저장 및 검색 확장성 , 가용성이 장점 ( 실시간 웹 어플리케이션 & 빅데이터 )

트랜잭션

  • Transaction
  • 데이터베이스의 상호작용 단위
  • 논리적 작업 단위
    • 돈을 계좌에서 인출 하는 작업
    • 학생을 테이블에서 삭제하는 작업

트랜 잭션의 4대 성질

  • ACID
  • 원자성
    • Atomicity
    • 트랜젝션은 분해가 불가능한 최소의 단위인 하나의 원자처럼 동작한다는 의미
    • 트랜젝션 내의 모든 연산들은 반드시 한꺼번에 완전하게 전체가 정상적으로 수행이 완료되거나 아니면 어떠한 연산도 수행되지 않은 all or noting.
  • 일관성
    • Consistency
    • 트랜잭션 작업이 시작되지 전에 데이터베이스 상태가 일관된 상태였다면 트랜잭션 작업이 종료된 후에도 일관성 있는 데이터 베이스 상태를 유지해아한다.
  • 격리
    • Isolation
    • 트랜잭션 작업 수행 중에는 다른 트랜잭션에 영향을 주어서도 안되고, 다른 트랜잭션들에 의해 간섭을 받아서도 안 된다는 것을 의미
    • 다수의 트랜잭션이 동시에 수행중인 상황에서 하나의 트랜잭션이 완료될 때까지는 현재 실행 중인 트랜잭션의 중간 수행결과를 다른 트랜잭션에서 보거나 참조 할 수 없다.
  • 영속성
    • Durability
    • 일련의 데이터 조작(트렌젝션 조작)을 완료 하고 완료 통지를 사용자가 받는 시점에서 그 조작이 영구적이 되어 그 결과를 잃지 않는 것을 나타낸다.
    • 스템이 정상일 때 뿐 아니라 데이터베이스나 OS의 이상 종료, 즉 시스템 장애도 견딜 수 있다는 것을 말한다. MySQL을 포함해 많은 데이터베이스의 구현에서는 트랜젝션 조작을 하드 디스크에 로그로 기록하고 시스템에 이상이 발생하면 그 로그를 사용해 이상 발생 전까지 복원하는 것으로 지속성을 실현하고 있다.

mysql router

  • MySQL Router는 애플리케이션과 모든 백엔드 MySQL 서버 간에 투명한 라우팅을 제공하는 가벼운 미들웨어
  • 장애 조치

  • 로드 밸런싱
    • 복제된 MySQL 서버가 있는 경우 라운드 로빈 방식으로 연결을 분산