Skip to content

kimjisub/mem-wal-db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Memory WAL DB

202000981 김지섭

제출 내용

코드리뷰 및 수행 영상:

프로젝트 개요

Redis 와 같이 저지연 In-Memory Key-Value 데이터베이스 시스템을 구축하고자 합니다. Write 에 대해서는 Append Only 파일 시스템에 먼저 작성되고, 메모리에 적용하는 방식인 write ahead log 시스템을 적용할 것이며, read 에 대해서는 memory 에서 빠르게 읽어오게 됩니다. 프로그램 시작 시 .wal 파일을 지정해주어, 트랜잭션을 기록할 대상을 지정할 수 있으며, 프로그램이 다시 시작되면, wal 을 replay 해서 메모리 상태를 다시 복구하게 됩니다.

이 프로젝트는 간단한 데이터베이스 시스템을 구축하는 것입니다. 시스템은 모든 트랜잭션을 디스크에 로그로 기록하고, 시스템이 시작될 때 이 로그를 메모리에 재구성하는 기능을 포함합니다. 디스크 파일은 append-only 모드로 작성됩니다. 이 시스템은 두 개의 내부 프로세스로 구성됩니다: 하나는 파일 입출력과 트랜잭션을 처리하는 코어 프로세스, 다른 하나는 사용자와 상호작용하는 프론트엔드 프로세스입니다.

과제 요구사항 적용 계획

  • 파일 입출력: wal 파일 read / append
  • 시스템/파일 정보: wal 파일 크기 확인을 위해 stat 명령어 사용
  • 프로세스 생성/exec 함수군: 코어 프로세스 생성을 위해 사용
  • IPC/시스템 V 통신: 프론트엔드와 코어 프로세스간 통신을 위해 사용

평가기준 관련하여 코드를 찾으실 때에 !평가기준을 검색하시면 됩니다.

주요 구성 요소

  1. 코어 프로세스

    • 트랜잭션을 처리하고 디스크에 로그를 기록하는 역할.
    • 트랜잭션 로그 파일을 관리하고, 시스템 시작 시 로그 파일을 재생하여 메모리에 데이터베이스 상태를 재구성.
  2. 프론트엔드 프로세스

    • 사용자로부터 트랜잭션을 입력받아 코어 프로세스에 전달하는 역할.
    • 코어 프로세스로부터 응답을 받아 사용자에게 출력.

트랜잭션 종류

명령줄 설명 구분 (Command or Query)
SET <key> <value> keyvalue 를 저장 Command
GET <key> key 에 저장된 va 가져오기 Query
DEL <key> key 삭제 Command
EXIST <key> key 가 존재하는지 확인 (T | F) Query
FLUSHALL 모든 key 제거 Command

wal 은 command 에 대해서만 작성됩니다.

프로그램 동작 흐름

  1. 시스템 시작

    • 코어 프로세스가 시작되면, 로그 파일을 열고 모든 트랜잭션을 메모리에 재생하여 데이터베이스 상태를 재구성.
    • 프론트엔드 프로세스가 시작되면, 사용자로부터 트랜잭션을 입력받을 준비를 함.
  2. 트랜잭션 처리

    • 프론트엔드 프로세스는 사용자로부터 트랜잭션을 입력받아 파이프를 통해 코어 프로세스에 전달.
    • 코어 프로세스는 트랜잭션을 처리하고 그 결과를 로그 파일에 기록.
    • 코어 프로세스는 처리 결과를 프론트엔드 프로세스에 전달하여 사용자에게 출력.
  3. 시스템 종료 및 재시작

    • 시스템 종료 시, 모든 로그 파일을 유지.
    • 시스템 재시작 시, 로그 파일을 읽어 모든 트랜잭션을 메모리에 재생하여 데이터베이스 상태를 복원.

실행 방법

프로그램을 컴파일하고 실행하려면 아래 명령어를 사용합니다.

make
./memwaldb --disk-io-latency <ms> <db.wal>

이 시스템은 트랜잭션 로그를 WAL 파일에 기록하고, 프로그램 재시작 시 로그를 재생하여 메모리 상태를 복구합니다. 사용자 입력을 통해 트랜잭션을 처리하고 결과를 반환합니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published