일일 회고
폭풍 피드백을 받았다... 이걸 토대로 프로젝트를 탄탄하게 해보고 최종 발표 떄 남김없이 발표해보자!
오늘의 키워드
- firestore transaction
firestore transaction
오늘은 파이어베이스 트랜잭션에 대해서 알아보자
먼저 파이어 스토어 트랜잭션이란 1개 이상의 문서에 대한 읽기 및 쓰기 작업의 집합이라고 파이어베이스 문서에 나타나있다.
파이어스토어에서 정의하는 트랜잭션의 정의 였고, 데이터베이스에서 다루는 트랜잭션의 개념을 함께 보면 이해가 더 쉬울 것이다.
트랜잭션 - 트랜잭션(Transaction)은 데이터베이스의 상태를 변환 시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.
한꺼번에 모두 수행되어야한다는 키워드가 굉장히 중요하다.
예를 들어 보자.
인스타그램의 좋아요 하트모양 버튼을 누르는 것을 생각해보자
좋아요 하트모양을 만약 동시에 여러 사람이 눌렀을 때 데이터가 손상될 수가 있다. (데이터베이스에 클라이언트가 동시에 액세스하는 경우)
그래서 한 데이터가 먼저 완료되기 전까지 다른 데이터의 입력을 금지하고, 완료가 되면 그 다음 데이터를 입력하는 형식으로 진행되어야한다.
트랜잭션이란 용어는 먼저 데이터를 입력하는 동안에 다른 데이터를 입력하지 못하게 하는 방식이다,
예시로 일정을 삭제하는 로직이다.
runTransaction을 통해 하나의 트랜잭션을 생성하고 그 안에서 데이터베이스의 조작 행위를 수행한다. 이 예시는 삭제만 하는 간단한 예시이지만, 만약 한 트랙잭션 내에서 다양한 조작 행위를 했을 때에는, 트랜잭션의 효과를 잘 볼 수 있을 것이다.
fireStore.runTransaction { transaction ->
val scheduleDocument = fireStore.collection("calendar")
.document(email)
.collection("plans")
.document(id)
transaction.delete(scheduleDocument)
}.await()
'내일배움캠프 7기 > TIL' 카테고리의 다른 글
내일배움캠프 7기 Android TIL 69일차 (2023.11.01) (0) | 2023.11.01 |
---|---|
내일배움캠프 7기 Android TIL 68일차 (2023.10.31) (0) | 2023.10.31 |
내일배움캠프 7기 Android TIL 66일차 (2023.10.27) (0) | 2023.10.27 |
내일배움캠프 7기 Android TIL 65일차 (2023.10.26) (1) | 2023.10.27 |
내일배움캠프 7기 Android TIL 64일차 (2023.10.25) (0) | 2023.10.25 |