[database] Session / Transaction

김기용·2020년 12월 21일
0
post-thumbnail

⚡️ Database Session

데이터베이스 접속을 시작으로, 여러 작업을 수행한 후 접속 종료까지의 전체 기간을 의미한다.

🕹 세션 안에는 여러개의 트랜잭션이 존재할수 있으며(하나 이상의), 일반적으로 데이터베이스는 여러 곳에서 동시에 접근이 가능하기 때문에 많은 세션이 동시에 연결될수 있다.

🕹 세션은 데이터가 변경, 삭제가 확정될때까지 해당 데이터 조작을 분리처리함으로써 데이터와 테이블과의 관계를 보존하는 역할을 한다.

🕹 특정 세션에서 조작중인 데이터는 Transaction이 ⚡️commit 되기 전까지 다른 세션에서 조작할 수 없다.


⚡️ Transaction

A transaction is a sequence of one or more SQL operations that are treated as a unit.

어떠한 하나의 기능을 수행하는 SQL문이라고 생각하면쉽다. 각 트랜젝션은 외부와 고립된 상태로 수행되며, 만약 시스템 실패시 각 트랜젝션은 성공실패 값만 가지게 된다.

트랜젝션의 개념은 크게 2가지의 근심에서부터 정의되었다.
🤔첫번째, 여러 클라이언트들이 데이터베이스에 동시에 접속을 한다면?
🤔두번째, 만약 데이터 입출력과정에서 시스템이 실패한다면?

이러한 두가지 상황에서부터 데이터를 보존하기위해 위해 ⚡️ACID 라는 특성을 가지고 있다.

A: Atomicity (원자성)
C: Consistency (일관성)
I: Isolation (고립성)
D: Durability (내구성)


⚡️ Atomicity(원자성)

최소단위의 하나의 작업이 수행되어야한다. 절대로 반쪽 자리 작업은 허용치 않는다.🤘


⚡️Consistency(일관성)

오직 시스템에서 허용된 값만 받아 드린다. 만약 허용되지않은 데이터 조작을 시도한다면 시스템이 거절함으로써 데이터의 일관성을 지킨다.😎


⚡️Isolation(고립성)

트랜젝션이 커밋되기전까지 아무도 데이터의 변경사항을 확인할 수 없다. 데이터 조작은 고립된 상태에서만 진행한다.🥺


⚡️Durability(내구성)

한번 커밋된 데이터는 변경되지 않는다.😚


reference

https://developer.jboss.org/docs/DOC-13951

https://stackoverflow.com/questions/10521947/what-is-a-database-session

profile
매일 새로운 배움을 통해 꾸준히 성장하는 것을 목표를 두고 있습니다. 논리적인 사고로 문제해결 하는것에 희열을 느끼고 언젠가 제가 만든 결과물들이 사람들에게 편이를 제공하며 사용되는 날을 간절히 소망하고 있습니다. 🙏

0개의 댓글