병행 제어 (Concurrency Control) : 여러 트랜잭션을 병행 수행할 때 데이터베이스의 일관성을 파괴하지 않게 제어함 병행의 문제점 - 갱신 분실 (Lost Update): 두 개의 트랜잭션이 같은 데이터를 갱신할 때, 하나의 갱신 작업이 분실됨 - 비완료 의존성 (Uncommited Dependency): 트랜잭션 수행이 실패 후 회복되기 전, 다른 트랜잭션이 실패한 결과를 참조함 - 모순성 (Inconsistency): 두 개의 트랜잭션이 같은 데이터에 접근하여 일관성을 해치는 경우 - 연쇄 복귀 (Cascading Rollback): 병행 수행되던 트랜잭션 중 하나가 롤백하는 경우 다른 트랜잭션도 함께 롤백되는 현상 병행 제어 목적 - 데이터베이스의 공유 최대화 - 시스템 활용도 최대화..
데이터베이스 읽기 이상 현상 (Read Phenomena) Dirty Read: 아직 commit되지 않은 트랜잭션의 변경사항을 다른 트랜잭션이 조회하는 경우 Non-repeatable Read: 같은 쿼리를 두 번 실행하는 트랜잭션에서 그 사이 다른 트랜잭션이 변경하여 다른 결과값이 나오는 경우 Phantom Read: 같은 쿼리를 두 번 실행하는 트랜잭션에서 그 사이 없던 데이터가 추가되는 경우 트랜잭션 고립 수준 (Isolation Level) 레벨이 오를수록 격리 수준/데이터 정합성 증가, 성능 감소 Level 0 - Read Uncommited 트랜잭션 수행중이거나 아직 commit되지 않은 데이터를 다른 트랜잭션에서 read 허용 Dirty Read, Non-repeatable Read, Ph..
회복 (Recovery) : 트랜잭션 처리를 수행하는 도중 장애 발생으로 데이터베이스 손상시 이전 상태로 복구 장애 유형 실행 장애: 무결성 규정 위반 등 연산이 실패 트랜잭션 장애: 트랜잭션 내부의 비정상적인 상황으로 프로그램 실행이 중지 시스템 장애: 하드웨어 오동작 미디어 장애: 저장장치인 디스크 손상으로 데이터베이스의 물리적 손상 Redo, Undo Redo 장애 발생 시점 기준 이미 완료된 트랜잭션에 대해서 로그 파일을 읽어서 복구 변경되는 내용은 로그 파일에 기록 로그 레코드 순차적 실행 Undo 장애 발생 시 진행중이던 트랜잭션은 수행 이전 상태로 복구 장애가 발생하면 변경된 모든 내용 취소 로그 레코드 역순 실행 회복 기법 1. 로그 기반 회복 기법 - 지연 갱신 (Deferred Upda..
트랜잭션(Transaction) : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 (작업 단위: 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것) 트랜잭션의 특징 - 복구 및 병행 수행 시 처리되는 작업의 논리적 단위 - 하나의 트랜잭션은 COMMIT 되거나 ROLLBACK 됨 - 일반적으로 회복의 단위임 트랜잭션의 성질 (ACID) 원자성 (Atomicity): 트랜잭션은 모두 DB에 반영이 되거나 모두 반영되지 않음 일관성 (Consistency): 트랜잭션이 완료되면 DB는 일관성 있는 상태를 유지함 격리성 (Isolation): 트랜잭션 수행 중 다른 트랜잭션이 끼어들 수 없음 영속성/지속성 (Durability): 트랜잭션의 결과는 영구적으로 반영됨 트랜잭션의 연산과 상태..
ARP 프로토콜 (Address Resolution Protocol) : 통신과정중 사용자는 목적지의 IP주소를 입력함, 해당 IP주소에 맞는 MAC주소를 가지고 오는 프로토콜 IP 주소 → MAC 주소 RARP (Reverse Address Resolution Protocol) MAC 주소 → IP 주소 IP주소 (Internet Protocol Address) 네트워크 계층(L3)에서 사용하는 인터넷에 연결되어 있는 모든 호스트나 라우터 장비의 인터페이스에 할당된 논리 주소 MAC주소 (Media Access Control Address) 데이터링크 계층(L2)에서 사용하는 네트워크 하드웨어에 할당된 물리 주소 ARP 동작 과정 1. 송신자는 목적지의 IP주소를 지정하여 패킷을 보냄 2. IP 프로토..
뷰 (View) : 사용자에게 자료를 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블 (테이블은 디스크 공간이 할당되어 데이터를 저장함 / 뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의만 저장) 물리적으로 존재하지 않고 논리적 데이터 독립성을 가짐 정의된 뷰를 다른 뷰의 정의의 베이스가 될 수 있음 뷰를 삭제하면 그 뷰를 베이스로 정의된 뷰도 자동 삭제됨 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능 DML 구문 적용 시 기본 테이블 데이터도 변경됨 변경 연산(삽입, 삭제, 갱신) 불가능한 경우 - 뷰의 열이 산술식(상수, 연산자, 함수) - 집단함수, distinct, group by 등이 사용되어 정의된 뷰 - 두 개 이상의 테이블과 관련되어..
반정규화 : 정규화로 데이터 조회 비용이 늘어남, SELECT 속도 향상을 위해 중복을 허용하여 DB 구조 재조정 반정규화 방법 테이블 병합 두 테이블이 조인되어 사용하는 경우가 많으면, 성능 향상을 위해 하나의 테이블로 병합하여 사용 고려사항 조회가 간편하지만 레코드(row) 증가로 데이터 처리량 증가 입력, 수정, 삭제 규칙이 복잡해질 수 있음 NOT NULL, DEFAULT, CHECK 등 constraint 설계가 어려움 테이블 분할 수직 분할 테이블에 속성이 너무 많을 경우, 칼럼을 분할하여 새로운 테이블을 만드는 것 UPDATE/SELECT 자주 되는 속성 / 크기가 큰 속성 / 보안 적용이 필요한 특정 속성을 분할 수평 분할 레코드별 사용 빈도에 따라 레코드를 기준으로 테이블 분할 고려사항 ..
정규화 이상현상이 있는 릴레이션을 다수의 릴레이션으로 분리하는 과정 무결성 유지, 데이터 일관성🔼, 모델의 응집도🔼 제 1 정규화 (1NF) 모든 속성이 원자값으로 이루어짐 여러개의 주문상품이 하나의 칼럼에 들어가있어 제 1 정규형을 만족시키지 못함 제 1 정규화하여 분리 가능 제 2 정규화 (2NF) 모든 속성이 기본키에 대해 완전 함수 종속을 만족함 기본키 = (고객ID, 상품ID) (주문 상품), (가격) 속성은 기본키의 부분집합인 (상품ID)만 알아도 식별가능하므로 기본키에 부분 함수 종속 상품 테이블을 별도로 분리하여 제 2 정규화 가능함 제 3 정규화 (3NF) 모든 속성이 기본키에 대해 이행 함수 종속이 되지 않음 종속성: 고객ID -> 등급, 등급 -> 할인율 일 때, 고객ID -> 할인율..