Apple is Apple
article thumbnail

일일 회고

 

폭풍 피드백을 받았다... 이걸 토대로 프로젝트를 탄탄하게 해보고 최종 발표 떄 남김없이 발표해보자!


오늘의 키워드

  • 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()
profile

Apple is Apple

@mjjjjjj