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 서버가 있는 경우 라운드 로빈 방식으로 연결을 분산