본문 바로가기

CS/데이터베이스27

데이터 정합성 보장을 위한 트랜잭션 이해하기 - 04. 트랜잭션 격리레벨 Isolation - 트랜잭션은 서로 간섭하지 않고 독립적으로 동작한다. READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE READ 위의 4가지는 Dirty Read Non Repeatable Read Phantom READ 이 3가지 중 몇가지를 방지하는가 혹은 허용하는가로 격리레벨이 결정된다. Dirty Read 예제) 홍길동이 김국밥에게 900원을 송금하는 상황 트랜잭션 격리레벨은 여러 트랜잭션들이 존재할 때 서로 간섭하지 않는가이다. 트랜잭션 2개가 거의 비슷한 시간에 진입했다고 가정해보자. 첫번째 트랜잭션 : 900원을 출금시키기 위해 홍길동의 잔고(1000원)를 가져옴 그리고 곧바로 900원을 이체시키기 위해 김국밥 잔액에 900원을 .. 2023. 6. 7.
데이터 정합성 보장을 위한 트랜잭션 이해하기 - 02. 트랜잭션 A, C, I, D 트랜잭션 ACID ACID의 사전적 정의보다는 ACID가 어떤 이유에서 나왔고 어떤 기술들이 ACID를 가능하게 하는지가 중요 사전적 정의 : 데이터베이스 트랜잭션(데이터에 대한 하나의 논리적 실행단계)이 안전하게 수행된다는 것을 보장하기 위한 성질을 가지키는 약어 Atomicity(원자성) : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력 원자적 연산을 보장해야 함 → All or Nothing (중간에 연산이 수행하다가 멈추지 않음) 어떻게 보장? MVCC를 통해 UPDATE가 일어나면 기존의 데이터에 900원을 더해주고 UPDATE 전의 데이터는 사라지는 것이 아닌 Undo Log에 저장 만약 트랜잭션이 실패하게 되면 Undo Log에 있는 데이터로 복원 Undo.. 2023. 6. 7.
데이터 정합성 보장을 위한 트랜잭션 이해하기 - 01. 트랜잭션이 없는 세상은 트랜잭션이 필요한 이유 상황 : 홍길동이 김국밥에게 900원을 송금 READ (홍길동 잔고) UPDATE (김국밥 잔액) = 김국밥 잔액 + 900 3. UPDATE(홍길동 잔액) = 홍길동 잔액 - 900 문제1. 만약 3번 과정(UPDATE(홍길동 잔액) = 홍길동 잔액 - 900)에서 실패를 한다면? 따라서 SQL문을 마치 하나의 오퍼레이션으로 묶을 수 있어야 함 : 트랜잭션 → 1~3번 과정을 하나의 오퍼레이션으로 묶을 수 있어야 함 문제2. 2번 과정후 3번 과정 전 사이에 김국밥이 1400원을 출금해버린다면? → 3번 과정은 실패를 할 것임 따라서, 처리 중인 데이터를 다른 곳에서 조회하게 되면 문제가 발생 → 트랜잭션 격리레벨을 따로 지정할 수 있어야 함 2023 KAKAO Tech Camp.. 2023. 6. 6.
타임라인 최적화 - 06. 타임라인에서 배우는 트레이드 오프 Push Model은 공간 복잡도를 희생, Pull Model은 시간 복잡도를 희생 정합성과 성능 Push Model vs Pull Model 중 어떤 것이 정합성을 보장하기 쉬울까? Pull Model : 원본 데이터를 직접 참조하므로, 정합성 보장에 유리 반면, Follow가 많은 회원일수록 처리 속도가 느리다. Pull Model의 예시) Facebook Push Model의 예시) Twitter Facebook : 5000명이 되었을 때는 내가 친구를 끊어야 다른 사람을 친구로 등록 가능 Twitter : 5000명이 최대여도 나를 팔로우한 사람이 더 늘어난다면, 다른 사람 팔로우 가능 Push Model에서는 게시물 작성과 타임라인 배달의 정합성 보장에 대한 고민이 필요하다. 모든 회원의 타임라.. 2023. 6. 6.