[나중에 챌린지팀 들어가면 공부해봐야할 내용들 키워드]
Docker
Redis(디자인패턴), ttl , cli
aws, 구글클라우드 차이
로드밸런싱
test code
hot한 기술
쿠버네티스
마이크로서비스아키텍쳐
오늘 공부한 내용 숙련주차 강의 완료
트랜잭션(Transaction)은 작업의 완전성을 보장해주기 위해 사용되는 개념입니다. 특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해주는 기능입니다.
트랜잭션(Transaction)을 사용하는 대표적인 이유는 작업의 단위를 하나의 쿼리에 종속하는 것이 아닌, 여러개의 작업(쿼리)을 묶어 하나의 작업 단위로 그룹화하여 처리하는 작업을 뜻합니다.
대부분의 데이터베이스가 트랜잭션의 특징을 이용하고 있으며, MySQL뿐만 아니라 AWS DynamoDB, MongoDB, CockroachDB 등 다양한 데이터베이스에서도 트랜잭션의 개념을 확인할 수 있습니다.
- 원자성(Atomicity)
- 일관성(Consistency)
- 격리성(Isolation)
- 지속성(Durability)
원자성(Atomicity)은 트랜잭션 내에서 실행되는 명령들을 하나의 묶음으로 처리하여, 내부에서 실행된 명령들이 전부 성공하거나, 아니면 모두 실패**해야한다는 특징입니다.
→ 여기서, “원자성”이란, 나눠질 수 없는 단일 작업이라는 것을 의미합니다.
만약 작업이 성공할 경우 아무런 문제가 발생하지 않고, 실패하더라도 작업을 진행하던 도중 실패한 상태로 데이터를 방치하지 않는 특징
트랜잭션이 완전히 수행되거나 완전히 수행되지 않은 상태를 외부에서 참조할 수는 있지만, 트랜잭션의 중간 과정이나 중간 결과를 볼 수 없도록 하는 특징
→ 트랜잭션이 실행 중인 경우 다른 트랜잭션에 의해 데이터가 변경되는 것을 방지하는 특징
지속성(Durability)은 트랜잭션이 성공적으로 커밋된 후, 해당 트랜잭션에 의해 생성 또는 수정된 데이터가 어떠한 상황에서도 보존되는 특징
→ 다시 말해, 트랜잭션이 완료되면 결과는 데이터베이스에 영구적으로 저장
-- 트랜잭션을 시작합니다.
START TRANSACTION;
-- 성공시 작업 내역을 DB에 반영합니다.
COMMIT;
-- 실패시 START TRANSACTION이 실행되기 전 상태로 작업 내역을 취소합니다.
ROLLBACK;
💡 [게시판 프로젝트] 회원가입 API 비즈니스 로직
1.password
,name
,age
,gender
,profileImage
를 body로 전달받습니다.
2. 동일한
3. Users 테이블에password
를 이용해 사용자를 생성합니다.
4. UserInfos 테이블에name
,age
,gender
,profileImage
를 이용해 사용자 정보를 생성합니다.
5. 회원가입을 완료 처리합니다.
→ 여기서, 3️⃣ 사용자 및 4️⃣ 사용자 정보를 생성하는 과정에서 에러가 발생하게 될 경우 문제가 생길 수 있습니다. 이를 해결하기 위해, 저희는 트랜잭션(Transaction)을 도입할 예정
→ 트랜잭션을 도입하면 여러 개의 쿼리를 하나의 작업으로 묶어, 하나의 쿼리가 실패할 경우 전체 트랜잭션을 취소(ROLLBACK)할 수 있어 데이터의 일관성을 유지