썸네일 백만 개 row를 수정하다가 트랜잭션을 롤백한다면? 요새 Hussein Nasser이라는 유쾌한 개발자 아조시의 Fundamentals of Database Engineering이라는 강의를 듣고 있는데, (엄청 재밌다!) 인덱스/트랜잭션 파트에서 꽤 재미있는 질문을 던지는 아티클을 읽었다. 아래는 아티클과 비슷한 내용을 담고 있는 이 아조시의 유튜브 비디오. 아조시 사는 데 어딘지 모르겠지만... 좋아 보이시네요 요약하자면, 엄청 많은 개수의 row를 수정하는 트랜잭션을 돌리다가 에러가 나서 해당 변경사항을 롤백하려면 시간이 많이 걸릴 텐데, 과연 DB는 어떻게 이 작업을 수행할까? 하는 질문이었다. 바로(Eagerly) 롤백하기 Lazy하게 롤백하기 DBMS마다 접근 방식이 다른데, 우선 해당 강의에서 주로 예시로 들고 있는 PostgreSQL에서는 ..
관계형 모델은 DB를 어떻게 바꾸었을까? MIT OpenCourseWare의 강의 자료와 과제를 수행하면서 공부하고 고민한 내용들을 정리합니다. 우선은 제가 이해한 만큼 정리하고 공부를 계속해 나가면서 수정할 예정입니다. 읽으시면서 잘못된 부분들은 언제든지 지적해 주세요! 관계형 모델 이전의 데이터베이스 관계형 모델이 등장하기 전의 데이터베이스는 계층형(hierachical) 모델을 기반으로 했다. IMS는 계층형 모델의 대표주자로, 트리 구조로 데이터를 저장한다. 이 과정에서 필연적으로 데이터의 중복이 발생하게 된다. 예를 들어서 사육사 | 우리(Cage) | 동물 와 같은 구조의 데이터베이스가 있다면 같은 우리를 공유하지만 사육사가 다른 동물의 경우에는 우리에 관한 데이터는 사실상 중복되게 된다. 또한 IMS의 트리 구조로는 Parent를 ..