2025/06 6

[database] Crash Recovery

본 게시글은서울대학교 데이터사이언스대학원 이상원 교수님의데이터사이언스 응용을 위한 빅데이터 및 지식관리시스템 수업을학습을 목적으로 재구성하였습니다이번 학기 데이터베이스 수업의 마지막인DB crash recovery이다 DB recovery는 전체 아키텍처에서 저 해당 부분을 담당한다transaction이 시작되면 각 transaction마다 ID가 부여되는데모든 작업들은 이 transaction ID를 기준으로 수행된다recovery도 마찬가지로 transaction ID를 기준으로 수행된다 우리가 이전 시간에database의 ACID에 대해서 배웠는데우리가 오늘 배울 recovery manager은atomicity와 durability와 관련되어있다 이전 수업시간부터 계속 봤던 위 예시를 다시 한..

강의/database 2025.06.07

[database] DB Lock 2편 (multi-version CC, MVCC)

본 게시글은서울대학교 데이터사이언스대학원 이상원 교수님의데이터사이언스 응용을 위한 빅데이터 및 지식관리시스템 수업을학습을 목적으로 재구성하였습니다오늘은 DB lock의 두번째 시간인데multi-version concurrency control에 대해서 주로 배운다수업 내용이 저번 시간이랑 겹치는 내용이 많아서그 부분들은 생략하고 MVCC에 대한 내용만 담아서내용이 조금 짧다 우리가 이전 시간까지 수업에서 설명한 내용은single version의 concurrency control이다 lock의 종류는 크게read lock인 shared lock과write lock인 exclusive lock이 있고 이 lock compatibility table을 통해서각각 어떻게 호환되는지를 알아보자 우선 R(S)와..

강의/database 2025.06.06

[database] DB Lock 1편

본 게시글은서울대학교 데이터사이언스대학원 이상원 교수님의데이터사이언스 응용을 위한 빅데이터 및 지식관리시스템 수업을학습을 목적으로 재구성하였습니다 이제 본 수업의 마지막 챕터인16. Transaction Management이다이 챕터는 크게 Lock Manager와 Recovery Manager로 나뉘는데이번 시간에는 lock manager를 위주로 배운다 우리가 transaction을 할 때마다 concurrency control도 해야하고프로그램이 언제 죽을지 모르기 때문에 recovery control도 해야한다그래서 위 ppt에서 양 옆에 lock manager(concurreny control)recovery manager가 각각 존재하고있다 위는 transaction sample이다은행에..

강의/database 2025.06.03

[system programming] Debugging

본 게시글은서울대학교 데이터사이언스대학원 성효진 교수님의데이터사이언스 응용을 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다이번 수업시간에서는 디버깅에 대해서 다룬다시스템 프로그래밍보다는 약간 소프트웨어 엔지니어링 적인 주제인데쉽다고 여길 수도 있기 때문에디버깅할 때 그냥 이렇게 하면 좋구나~하는 정보를 얻는 느낌으로약간 가볍게 들어도 좋다고 한다 디버깅에 대해 알아보자 우선 기본적인 디버깅의 정의에 대해 배우고만약 scientific한 debugging에 대해 배우고 싶다면마지막에 소개된 책을 읽으라고 하셨다이 scientific debugging이란 과학적으로무언가를 검증하는 가설을 세우고 가설을 검증하는과학적인 방식으로 디버깅을 하는 것인데좀 더 체계적인 디버깅 방법이라고 한다 tools..

[system programming] parallel programming

본 게시글은서울대학교 데이터사이언스대학원 성효진 교수님의데이터사이언스 응용을 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다저번시간에 이어서 남은 병렬 프로그래밍 부분을마무리 해보려고 한다 병렬 실행은 잘못 수행하면 더 많은 오버헤드가 발생해서수행 시간이 더 오래 걸릴 수가 있다이러한 부분은 실제로 연구가 많이 진행되고 있는 부분이다 위 ppt에서 T0이 병렬 실행을 해서 생길 수밖에 없는 오버헤드 값인데load imbalance, communication, excess work가 원인이 된다 mapping은 static mapping과 dynamic mapping으로 구분 가능하다 task queue에 있는 데이터를 스케줄 하는 시점에어디에 mapping할지 이런 것들을 동적으로 결정할 수가 ..

[system programming] program optimization & parallel programming

본 게시글은서울대학교 데이터사이언스대학원 성효진 교수님의데이터사이언스 응용을 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다 저번 시간에 이어서compile optimization에 대해서 계속 해보려고한다 타일링도 굉장히 중요한 최적화 기법 중에 하나이다기본적으로 배열을 순차적으로 처음부터 끝까지nesting을 하는 것이 일반적인데타일링은 처음부터 끝까지 도는게 아니고tile이라고 하는 작은 iteration으로 쪼갠다음에하나하나 차근차근 또 도는 방식이다loop을 나누는 개념이라고 생각하면 편하다 타일링의 에씨이다B는 block size인데 타일의 크기이다이러한 타일링을 하는 가장 큰 이유는 바로cache locality 때문이다 만약 내가 코드를 병렬로 실행한다고 하면내가 타일링을 했..