코드스테이츠_국비교육/[Section2]

31.01_[DB] 데이터베이스 개요_22.10.05

생각없이 해도 생각보다 좋다. 2022. 10. 5. 21:36

데이터베이스

>의미

: 데이터에 특화된 서버라고 생각

: 엑셀과 상당히 유사하다(사실 엑셀과 비슷한 것은 관계형 데이터베이스이다.)

>필요성

: 아래 두 방법으로도 데이터를 저장할 수 있지만, 한계가 있기때문에 데이터베이스를 사용한다.

  • 1. In-memory

: 클라이언트와 서버는 종료하면 데이터가 없어진다.

  • 2. File I/O

: 서버의 file을 이용을 하더라도, file은 모든 데이터를 가져와야하기 때문에 필요한 데이터만 가져올 수 없다. 때문에 서버

에 부하가 생긴다.

>정보 전달 과정

1. 클라이언트: 요청

2. 서버: Query문을 데이터베이스에 전달

3. 데이터베이스: 필터링 및 데이터 전달

SQL

>의미

: Structured Query Language

: 데이터베이스 용 프로그래밍 언어

: MySQL, Oracle, SQLite, PostgreSQL 등 다양한 데이터베이스에서 사용하는 언어

: 데이터베이스에 query를 보내 원하는 데이터만 뽑아올 수 있음.

/*

Query

: 질의문이라는 의미의 용어로 저장되어있는 데이터를 검색, 삽입 등을 하기 위한 질문.

: 검색창에 적는 검색어도 Query의 일종이다.

*/

 

트랙젝션

: 여러 작업을 하나로 묶은 실행 유닛.

: 트랜젝션의 결과는 성공과 실패, 두 개 뿐이다. (미완료 작업은 없다)

: 트랜젝션으로 묶인 작업들 중 하나라도 실패하면 해당 트랜젝션의 결과는 실패여야한다.

/*

예시) A가 B에게 10만원을 송금한다.

A의 통장에는 10만원이 차감되고,

B의 통장에는 10만원이 증가한다.

이러한 종합적인 처리를 트랜젝션이라고 한다.

 

만약, A가 B에게 10만원을 송금한 상황에서

A의 통장에는 10만원이 차감됐지만,

B의 통장에는 10만원이 들어오지 않았을 경우는 트랜젝션에서 있을 수 없는 일이다.

에러로 인해 B의 통장에 10만원이 들어오지 않았다면,

A의 통장에서도 10만원이 차감되지 않아야만 한다.

*/

 

ACID

>의미

: 데이터베이스 트랜젝션이 발생할 때, 그 안정성을 보장할 수 있는 성질

: 특히 금융 관련된 프로그램에선 데이터베이스를 구현할 때, ACID를 지키는 것을 필수로 한다.

: Atomicity, Consistency, Isolation, Durability; ACID

>Atomicity

: 트랜젝션이 발생할 때, 모든 연산이 성공하거나 아예 모두 실패를 해야한다.

: 부분의 연산만 성공하면 안된다.

: 작업의 가장 작은 단위라는 의미로 Atom을 쓴 듯 하다.

>Consistency

: 트랜젝션 전후에 데이터베이스의 일관된 상태가 유지되어야 한다.

: 예를 들면, 트랜젝션 후에 특정 데이터베이스에 제약을 거는 작업이 이루어진다면, 데이터베이스의 상태가 변경되었기 때문에 다음 트랜젝션에 문제가 발생할 수 있다.

>Isolation

: 각각의 트랜젝션은 독립적이다.

: 다른 트랙젝션끼리 서로의 연산을 확인받거나 영향을 줄 수 없다.

>Durability

: 하나의 성공된 트랜젝션에 대한 로그가 기록되고 영구적으로 남는다.

: 만약 이후에 시스템 문제가 발생했다면, 마지막 성공 로그를 기준으로 되돌릴 수 있다.