분류 전체보기210 데이터 정합성 보장을 위한 트랜잭션 이해하기 - 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. 타임라인 최적화 - 04. 팬아웃 타임라인 이론 Fan Out On Read Pull Model 이다. 조회 시점에 부하가 있음 Fan Out On Write (Push Model) write 시점에 fan out을 한다. 핵심 개념 : 게시물 작성시, 해당 회원을 팔로우하는 회원들에게 데이터를 배달한다. 3번 유저가 게시물을 작성 **Fan Out On Write (Push Model)**에서는 Timeline이라는 별도의 테이블이 생기게 됨 유저가 게시물을 작성하는 시점에 해당 유저의 follow을 찾게 된다. 1번 유저(해당 유저의 follow)에게 해당 유저의 게시물을 배달해줌 → Timeline table에 게시물을 insert 해주는 것(게시물이 작성되는 시점에) 1번 유저가 게시물을 작성 follow 테이블에서 1번 유저의 follow하고.. 2023. 6. 6. 타임라인 최적화 - 03. 서비스가 커질수록 느려지는 타임라인 실습 - 타임라인 구현 흐름 회원의 팔로우 목록 조회 1번의 팔로우 회원 id로 게시물 조회 시간 복잡도 계산해보기 Follow 테이블과 Post 테이블이 있음 1번 id를 가진 타임라인 요청을 처리하는 과정을 살펴보자 from이 1번인 개체를 조회 해당 개체의 to 개체를 뽑아서 to의 id들로 게시물을 조회 시간복잡도 인덱스가 있다는 가정하에 (Follow, Post 둘다) log(Follow 전체 레코드) + 해당 회원의 Following * log(Post 전체 레코드) to 가 OR이기 때문에 해당 회원의 Following 수만큼을 곱하게 된다. Fan Out On Read (Pull Model) 읽는 시점에 Fan Out을 시킨다. 사용자가 매번 홈에 접속할 때마다 부하가 발생 따라서 팔로워수.. 2023. 6. 6. 이전 1 ··· 39 40 41 42 43 44 45 ··· 53 다음