전체 글(133)
-
[DB] 트랜잭션 고립 수준
트랜잭션 동시 실행 문제 지금까지 설명한 락은 두 트랜잭션이 (쓰기, 쓰기)인 상황을 해결하기 위한 것이다. 두 개의 트랜잭션에서 트랜잭션 1은 읽기 작업을 하고 트랜잭션 2는 쓰기 작업을 한다. 락을 사용하여 두 트랜잭션을 동시에 실행시킬 수 있다. 그렇게 되면 두 트랜잭션의 동시 진행 정도를 과도하게 막기 때문이다. 동시성을 높이기 위해서는 좀 더 완화된 방법을 사용할 필요가 있다. 트랜잭션 동시 실행 문제 트랜잭션은 1은 읽기만 하기 때문에 갱신손실 같은 심각한 문제가 발생하지 않는다. 그러나 트랜잭션 1에서 오손 읽기(dirty read) 문제, 반복불가능 읽기 문제, 유령 데이터 읽기 문제 등이 발생할 수 있다. 읽기만 하는 트랜잭션이 쓰기 트랜잭션에서 작업한 중간 데이터를 읽기 때문에 발생하는..
2023.12.21 -
[DB] 동시성 제어
자동차 전용도로에 시간차를 충분히 두고 차를 진입시키면 충돌 사고가 발생하지 않는다. 그러나 차를 제어하지 않고 임의로 진입시키면 충돌 사고가 발생할 수 있다. 트랜잭션도 마찬가지이다. 한 개의 트랜잭션이 끝나고 다음 트랜잭션을 수행시키면 데이터베이스의 일관성에 문제가 없다. 그러나 데이터베이스는 공유를 목적으로 하기 때문에 가능한 많은 트랜잭션을 동시에 수행시켜야 한다. 동시에 수행되는 트랜잭션은 다른 트랜잭션이 같은 데이터를 공유하고 있다는 사실을 모를 수 있기 때문에 일관성이 훼손될 수 있다. 트랜잭션이 동시에 수행될 때, 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS의 기능을 동시성 제어라고 한다. 두 개의 트랜잭션이 한 개의 데이터에 동시 접근할 때 발생할 수 있는 상황을 정..
2023.12.20 -
[DB] 트랜잭션
트랜잭션은 DBMS가 데이터베이스를 다룰 때 사용하는 작업 단위이다. 트랜잭션은 데이터베이스의 무결성을 유지하기 위해 원자성, 일관성, 고립성, 지속성의 성질을 갖는다. DBMS는 트랜잭션이 이러한 성질을 유지할 수 있도록 지원한다. 각 개념에 대해 하나씩 살펴보자. 트랜잭션의 개념 트랜잭션은 DBMS에서 데이터를 다루는 논리적인 작업의 단위이다. 보통 단일 SQL문을 사용하여 다루기도 하지만 여러 개의 SQL문을 순차적으로 수행하여 다루기도 한다. 데이터베이스에서 트랜잭션을 정의하는 이유는 다음과 같다. 데이터베이스에서 데이터를 다룰 때 장애가 일어나는 경우가 있다. 트랜잭션은 장애 발생 시 데이터를 복구하는 작업의 단위가 된다. 데이터베이스에서 여러 작업이 동시에 같은 데이터를 다룰 때가 있다. 트랜..
2023.12.20 -
[프로그래머스 - JAVA] 요격 시스템
문제 설명 A 나라가 B 나라를 침공하였습니다. B 나라의 대부분의 전략 자원은 아이기스 군사 기지에 집중되어 있기 때문에 A 나라는 B 나라의 아이기스 군사 기지에 융단폭격을 가했습니다. A 나라의 공격에 대항하여 아이기스 군사 기지에서는 무수히 쏟아지는 폭격 미사일들을 요격하려고 합니다. 이곳에는 백발백중을 자랑하는 요격 시스템이 있지만 운용 비용이 상당하기 때문에 미사일을 최소로 사용해서 모든 폭격 미사일을 요격하려 합니다. A 나라와 B 나라가 싸우고 있는 이 세계는 2 차원 공간으로 이루어져 있습니다. A 나라가 발사한 폭격 미사일은 x 축에 평행한 직선 형태의 모양이며 개구간을 나타내는 정수 쌍 (s, e) 형태로 표현됩니다. B 나라는 특정 x 좌표에서 y 축에 수평이 되도록 미사일을 발사하..
2023.12.20 -
[DB] 정규화
이상현상 잘못 설계된 테이블로 삽입, 삭제, 수정 같은 데이터 조작을 하면 이상현상이 일어난다. 이상현상이란 테이블에 튜플을 삽입할 때 부득이하게 NULL 값이 입력되거나, 삭제 시 연쇄삭제 현상이 발생하거나, 수정 시 데이터의 일관성이 훼손되는 현상을 말한다. 이상현상 개념 건물을 지을 때 설계가 잘못되면 건물에 균열이 생겨 이용이 불편하거나 심지어 건물이 붕괴될 수 있다. 그렇다면 데이터베이스의 설계가 잘못되면 어떤 문제가 발생할까? 데이터베이스 설계가 잘못되면 이상현상, 즉 SQL 문의 결과가 틀리거나 원하는 결과가 나오지 않는 등의 문제가 발생한다. 학생번호 학생이름 학과 주소 강좌이름 강의실 501 박지성 컴퓨터과 영국 맨체스타 데이터베이스 공학관 110 401 김연아 체육학과 대한민국 서울 데..
2023.12.19 -
[DB] 데이터 모델링
데이터 모델링 개념 데이터 모델링을 건축에 비유하면 지반 설계를 하는 것과 같다. 지반 설계가 잘못되면 건물을 아무리 튼튼하게 짓는다 해도 오래갈 수 없다. 소프트웨어 개발 또한 다 끝나갈 때쯤 데이터 모델링이 잘못됐다는 것을 발견하면 처음부터 다시 진행해야 한다. 발견하지 못하더라도 나중에 오류를 발견하게 되면 이것을 수습하는 비용 또한 많이 들 것이다. 잘못된 설계로 잦은 오류가 발생하는 프로그램은 사용자에게 신뢰를 잃고 있으나 마나 한 생각을 가지게 만들 것이다. 데이터 모델링은 현실 세계의 복잡한 개념을 단순화하고 추상화시켜 데이터베이스화하는 과정이다. 최종적으로 구축된 데이터베이스는 현실 세계의 대상이 되었던 개념과 일치한다. 데이터베이스 생명주기 데이터베이스는 최초 사용자의 요구에 의해 구축되..
2023.12.18