db 9

[DB System 이론] Validation-based protocol(Optimistic Concurrency Control, OCC)

concurrency control을 위한 마지막 방법을 알아보자. Validation-based protocol(Optimistic Concurrency Control, OCC)이전까지는 한번에 올바른 스케줄을 생성하는 방식이다.하지만 이 방식은 일단 만들고 유효한지 확인해본다.기본적으로 잘 만들어졌을 거야 라는 낙관적인 생각을 기반으로 한다.그래서 이름에 optimistic이 들어가는 것이다. 이 방법은 read가 많을 때 많이 사용한다.read가 많으면 아무렇게나 스케줄을 만들어도 conflict가 적게 발생할 것이기 때문이다.이렇게 read가 많은 기능의 예시로는 현재 데이터를 읽어 통계 처리하는 OLAP(Online Analytical Processing)같은 것이 있다. 그러나 write가 약..

[DB System 이론] Multiple Granularity Locking Protocol, Timestamp-Ordering Protocol(TSO), Thomas’ Write Rule

이전글을 보고 오면 더 쉽게 글을 읽을 수 있다. [DB System] Two-Phase Locking(2PL) Protocol, Lock table이전 글에서 이어지는 내용이다.2025.11.21 - [데이터베이스 시스템] - [DB System 이론] Concurrency Control [DB System 이론] Concurrency Control이전 글을 보고 오면 아래 내용을 더 편하게 읽을 수 있다.2025.11.18 -april2901.tistory.com이전 글은 locking을 사용한 concurrency control 기법에 대해 알아봤었다.이번 글은 locking을 사용하는 방법을 조금 더 알아보고,locking을 사용하지 않는 방법도 알아보자.graph-based protocol역시 ..

[DB System 이론] Two-Phase Locking(2PL) Protocol, Lock table

이전 글에서 이어지는 내용이다.2025.11.21 - [데이터베이스 시스템] - [DB System 이론] Concurrency Control [DB System 이론] Concurrency Control이전 글을 보고 오면 아래 내용을 더 편하게 읽을 수 있다.2025.11.18 - [데이터베이스 시스템] - [DB System 이론] Transaction & Conflict Serializability [DB System 이론] Transaction & Conflict Serializabilitytransaction은 기april2901.tistory.com concurrent한 schedule이 좋다고는 했지만 serial schedule와 비교했을 때 명령어의 개수가 줄어들지 않는다.실제로 sch..

[DB System 이론] Concurrency Control

이전 글을 보고 오면 아래 내용을 더 편하게 읽을 수 있다.2025.11.18 - [데이터베이스 시스템] - [DB System 이론] Transaction & Conflict Serializability [DB System 이론] Transaction & Conflict Serializabilitytransaction은 기본적인 하나의 실행 단위이다.DB에서는 SQL문 하나라고 생각할 수 있다. 트랜잭션의 4가지 속성(ACID)아래의 예시를 생각해보자. 1.DB에서 A계좌 정보를 읽어온다.2.A잔액을 50달러를 뺀april2901.tistory.comTesting for Conflict Serializability어떤 schedule이 conflict serializable, 즉 안전한지 아닌지 알아보..

[DB System 이론] Transaction & Conflict Serializability

transaction은 기본적인 하나의 실행 단위이다.DB에서는 SQL문 하나라고 생각할 수 있다. 트랜잭션의 4가지 속성(ACID)아래의 예시를 생각해보자. 1.DB에서 A계좌 정보를 읽어온다.2.A잔액을 50달러를 뺀다.3.A계좌 정보를 DB에 업데이트한다.4.DB에서 B계좌 정보를 읽어온다.5.B잔액을 50달러 늘린다.6.B계좌 정보를 DB에 업데이트한다. atomicity만약 3번이후, 6번 이전과정 중에 시스템이 죽었다고 생각하면 DB의 상태는 데이터 무결성이 깨진(inconsistent)상태가 되버린다.시스템이 다시 재부팅 되더라도 A의 돈만 없어지고 B는 그대로가 된다.따라서 이런 경우에 아예 트랜잭션 이전 상태로 되돌리던지 다 실행된 상태로 만들던지 해야한다.다른말로 all or nothi..

[도서관 관리 사이트] 6. 마이페이지, 모든서적 페이지, 인기차트 페이지

1. 마이페이지이전 글에서 만들었던 관리자 페이지보다 요구되는 기능이 적기에 쉽게 만들 수 있다.1-1. templates/mypage/mypage.html이 페이지에서는 관리자페이지에서 처럼 table을 사용했다.하지만 관리자 페이지는 옆으로 테이블 두 개를 배치했고, 이 페이지는 위 아래로 배치했다.대여기록 부분은 대여일을 기준으로 정렬해 보여주게끔 했고, 따라서 연체 등의 특별한 경우가 아니라면 일반적으로 아직 대여중인 책이 위에 있게 된다.그래서 반납할 때 밑으로 스크롤을 할 필요 없게 편의성을 고려했다. 1-2. mypage/routes.py이 페이지는 routes.py에서 크게 추가로 해야하는 동작은 없다. 간단히 쿼리 함수를 호출해주기만 하면 된다.@mypage_bp.route('/', me..

[도서관 관리 사이트] 3. DB 입력, 메인페이지, 로그인 페이지

1. DB구성1-1. sql파일 작성첫번째 글에서 구상했던 아래 사진의 DB의 구조에 따라 sql코드를 작성했다. 1-2. DB구조 수정다만 위 사진의 내용에서 몇가지를 수정했다. 1) user_name 이라는 속성 추가user_id는 DB에서 이용자를 관리하는 목적으로만 사용하기로 했고,로그인 등에서 실제로 이용자가 사용할 user_name 속성을 만들었다. 2) 예약 관련 속성 추가reservation 테이블에서 book_code와 user_id만 있었지만,reservation_id, reservation_date를 추가해 내부적으로 관리가 편해지고 예약의 우선순위를 따질 수 있게 바꾸었다.drop database if exists library_db;create database library_db;..

[도서관 관리 사이트] 2. 웹페이지 설계, 프로젝트 폴더 구성

이전 글에서 이 프로젝트가 어떤 내용인지 간단히 설명했었다. [Flask + mySQL] 도서관 관리 사이트 만들기 1학교 데이터베이스 수업의 과제로 '도서관 관리 사이트 만들기'를 하게 되었다. 1. 기능과제에서 요구한 필수 기능은 아래와 같다.로그인기능 • ID와 비밀번호를 이용해 로그인이 가능해야 한다april2901.tistory.com 대략적인 table 구조는 이전 글에서 정했으니 웹페이지를 어떻게 구성할지, 대략적인 디자인은 어떻게 할지를 그려보았다. 이제 이번 글부터는 실제로 개발을 시작한다.0. 필수 패키지 설치먼저 프로젝트에 쓰일 모듈들을 프로젝트 폴더의 가장 상위 경로에서 pip를 사용해 다운받아야 한다.pip3 install flask pip3 install mysql-conne..

[도서관 관리 사이트] 1. 기능 확인, DB구조 설계, 프레임워크 선택

학교 데이터베이스 수업의 과제로 '도서관 관리 사이트 만들기'를 하게 되었다. 1. 기능과제에서 요구한 필수 기능은 아래와 같다.로그인기능 • ID와 비밀번호를 이용해 로그인이 가능해야 한다. • 계정은 사용자계정과 관리자계정으로 구분할 수 있다. • 관리자계정으로 로그인할 경우 더 많은기능을 사용할 수 있다. • 사용자가 직접 회원가입을 할 수 있어야한다. • 관리자계정으로 가입시 아무나 가입할 수 없도록 추가코드를 요구해야한다. • 추가코드는 자신의 10자리 학번으로 한다. 서적검색 및 열람서비스 • 모든 서적목록을 확인할 수 있는 페이지가 있다. • 서적목록 페이지에서는 • 책제목,저자,카테고리,수량,대출가능 여부 등의 정보를 확인할 수 있다. • 책제목, 저자, 카테고리등으로 ..