[Database] SQL, ACID

Steve·2021년 6월 17일
0

웹개발 코스

목록 보기
44/59

Database 가 필요한 이유

파일을 저장하는 방법:

1. In-Memory

프로그램이 실행될 때만 존재하는 데이터가 있다. 이 데이터들은 예를 들어 브라우저 환경에서 변수나 배열같은 데이터를 만들면 브라우저가 종료되는 순간 static memory 나 heap memory 를 해제하기 때문에 데이터의 수명이 프로그램의 수명에 의존하게 된다.

2. File I/O

컴퓨터의 파일을 읽어오는 방식.

원하는 데이터만 가져올 수 없고 항상 모든 데이터를 가져온 뒤 서버에서 필터링 필요

3. Database

필터링 외에도 File I/O 로 구현이 힘든 관리르 위한 여러 기능들을 가지고 있는 데이터에 특화된 서버.

SQL

Structured Query Language.

Query 란?
질의문. 저장된 정보를 필터하기 위한 질문.

SQL 은 구조화된 쿼리 언어로써 데이터베이스에 쿼리를 보내 원하는 데이터만을 가져올 수 있게 해준다. 주로 관계형 데이터베이스(MySQL, Oracle, SQLite, PostgreSQL 등) 에 사용된다.

SQL 은 데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용 가능하다.

데이터 구조가 고정되어 있지 않은 데이터베이스 - NoSQL

  • 관계형 데이터베이스와는 달리 테이블을 사용하지 않고 다른 형태로 데이터를 저장한다.
  • MongoDB 와 같은 문서 지향 데이터베이스가 있다.

SQL syntax

SQL query commands, SQL Database commands
https://www.w3schools.com/sql/default.asp

ACID

Atomicity, Consistency, Isolation, Durability

각 특성은 데이터베이스 내에서 일어나는 transaction 의 안전성을 보장하기 위해 필요하다.

Transaction 이란?
여러 개의 작업들을 하나의 실행 유닛으로 묶어준 것이다. 각 트랜잭션은 하나의 특정 작업으로 시작해 묶여 있는 모든 작업을 완료해야 종료된다. 한개라도 실패하면 트랜잭션은 실패한다. 반드시 전부 성공해야 트랜잭션도 성공한다. 트랜잭션은 성공 혹은 실패 두 개의 결과만 존재하며, ACID 특성을 가지고 있다.

Atomicity

원자성

하나의 트랜잭션이 전부 성공하거나 전부 실패해야 한다. 부분적으로 실행되면 안된다.

예를 들어 돈을 송금할 때 내 계좌에서 돈을 뺐는데 상대 계좌에 돈이 추가가 되지 않았다면 계좌 이체를 자체를 실패로 만든다.

Consistency

일관성

하나의 트랜잭션 이전과 이후 데이터베이스의 상태는 이전과 같이 유효해야 한다. 데이터베이스의 제약이나 규칙에 의거한 데이터베이스어야 한다.

예를 들어 각 고객의 이름이 있는 데이터베이스일 경우 이름이 없는 고객을 추가하거나 기존 고객의 이름을 삭제할 수 없다.

Isolation

고립성

하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다. 동시에 여러 개의 트랜잭션이 수행될 때 각 트랜젝션은 고립되어 있어 연속으로 실행된 것과 동일한 결과를 나타내야 한다.

Durability

지속성

하나의 트랜잭션이 성공적으로 수행되었다면 해당 트랜잭션에 대한 로그가 남고 런타임 오류나 시스템 오류가 발생해도 해당 기록은 영구적이어야 한다.

계좌 이체를 성공했는데 이후 오류로 인해 은행 서버가 종류되어도 계좌이체 내역은 남아야 한다.

profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글