목록CS/DB (25)
공부기록
데이터베이스 DB의 개요 데이터베이스가 제공하는 기능 데이터베이스의 이점 데이터 추상화와 데이터 모델 스키마와 인스턴스 데이터 추상화 레벨 데이터 독립성 트랜잭션 관리 관계형 데이터 모델 관계형 데이터베이스의 표현 방법 속성이 원자값? 관계 스키마, 관계 인스턴스 key 참조무결성 관계 대수 종류, 문법 추가 관계 대수 종류, 문법 SQL 기능적 관념의 분류 각 분류별로 하는 기능과 어떤 예약어가 있는지? 표현되는 방식에서의 분류 DDL DDL의 기능 Drop vs Delete DML DML의 기능 SQL Execution Model? View view? view 정의하는 방법 view가 항상 최신 데이터를 보유하는 이유? view가 다른 view를 사용할 수 있는지? view를 통한 질의 과정 view..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Y8lLz/btq6seFdfCT/6qjW2rGBhZAGp2STgSvMK0/img.png)
Basic Concepts Basic Concepts 인덱스는 원하는 데이터에 빠르게 접근하기 위해 사용된다. 인덱스 파일은 형태의 기록으로 구성된다. search-key는 레코드를 찾기위해 사용되는 속성들의 집합니다. 인덱스 파일은 보통 원래 파일보다 훨씬 작다. 두 종류의 인덱스가 있다. 정렬 색인 (ordered index) : 색인 레코드가 탐색키 기준으로 정렬되어 있다. 해쉬 색인 (hash index) : 색인 레코드가 탐색키 기준으로 정렬되어 있지 않다. Index Evaluation Metrics 색인을 평가하는 요소를 말하며 이중 색인이 제공하는 질의 타입이 중요하다. 질의타입에는 다음 2가지의 경우가 있다. 일치 질의 형태 (Exact Matc..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bAkymU/btq6u2cWGC0/FeYY4kanv4KzQzYiElOLu1/img.png)
Failure and Recovery Failure Classification 트랜잭션 장애 트랜잭션의 내부 논리 오류, 사용자의 명시적인 요구, 또는 시스템 내부 결정에 의해 발생 교착 상태에 있는 트랜잭션중 하나의 트랜잭션은 철회되어야 하며, 철회되는 트랜잭션에게 장애가 발생 시스템 장애 주기억 장치 메모리에 문제가 발생하여 메모리 내용이 사라지는 경우. 정전, OS 오류, 하드웨어 결함이 원인이 될 수 있다. 디스크장애 하드웨어, 소프트웨어 결함으로 인해 디스크내용이 사라지는 현상 시스템이 트랜잭션의 원자성, 일치성, 지속성 (Atomicity, Consistency, Durability)를 지원하기 위하여 회복 기법이 필요하다. Recovery Algorithm 회복기법은 시스템이 오류에 대응하여..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cFJFS9/btq6pVfS6sD/p3JHx3IOCoQwAd83FIkeC1/img.png)
록기반 규약 Lock-based Protocols lock은 데이터에 대한 동시적인 접근을 제한하는 방식이다. 록 규약은 트랜잭션의 동시성 제어를 위해 개발되었으며, 트랜잭션의 스케줄을 제한하여 원하는 트랜잭션이 생성되도록 한다. 데이터 아이템들은 2가지 lock 모드를 가진다. exclusive (X) mode : read와 write 권한을 가질 수 있으면 흔히 Write lock이라고도 한다. shared (S) mode : read만 할 수 있으며 read lock이라고도 한다. lock 호환성 은 아래의 표와 같다. true이면 다른 트랜잭션도 쓸 수 있고 false는 그렇지 못하다. S X S true false X false false 트랜잭션은 적절한 락을 보유한 이후에 진행될 수 있으며 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bDIrxu/btq6udTxoJG/JauuEkrLTzqFnTl1PuBU61/img.png)
트랜잭션 개념 트랜잭션의 성질 ACID 트랜젝션은 데이터베이스 무결성을 유지하기 위해 ACID 성질을 가져야한다. 데이터의 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 말한다. 즉 현실세계의 데이터와 같아야함을 말한다. Atomicity (원자성) 트랜잭션의 모든 연산은 데이터베이스에 올바르게 반영되거나, 하나도 반영되지 말아야 한다. Consistency (일관성) 단일 트랜젝션의 수행은 데이터베이스의 데이터 무결성을 유지해야 한다. Isolation (고립성) 여러 개의 트랜잭션이 동시에 수행되더라도, 각 트랜잭션은 다른 수행되는 트랜잭션의 존재를 몰라야 한다. 트랜잭션 수행과정의 중간값은 다른 트랜잭션으로부터 숨겨져야 한다. Durability (지속성) 데이터베이스에 성공적으로 반영..
Transaction Concurrency Anomaly 트랜젝션이 번갈아 가면서 수행되지 않고, 요청한 순서대로 수행되는 것을 serializable 스케줄이라고 한다. 트랜젝션이 번갈아 가면서 수행되면 unserializable해질 수 있는데 이 때문에 4가지 (3+1) 동시성 문제가 생길 수 있다. 1~3 번 문제는 트랜잭션이 Read, Write연산만 있다고 가정했을때 생길 수 있는 문제이고, 4번 문제는 Update, Delete 연산까지 있다고 생각했을 때 생길 수 있는 문제이다. 1. Dirty Read 위 스케줄에서 T1이 R(A)를 하고, T1이 W(A)를 한 뒤, T2가 R(A)를 하게 되는데, T2, T1이 직렬적으로 수행되는 스케줄과 비교하면 이는 틀린 결과를 가지게 된다. 즉 co..
locking 프로토콜은 가능한 스케줄을 제한한다. exclusive-lock은 쓰기/읽기, shared-lock은 읽기이다. write lock을 할경우 나만 접근하고 다른 트랜잭션은 접근할 수 없다. read lock을 할 경우 다른 read lock은 접근 가능하다. 즉 호환 가능한 lock을 얻을 경우에만 공유 데이터에 접근 가능하다. 락을 얻지 못하면 다른 트랜잭션이 unlock 할 때 까지 기다려야 한다. 근데 스케줄이 serializable하려면 그냥 lock unlock만 하면 안된다. 2-phase locking, tree-based locking이 있다. 2-phase locking growing-phase와 shrinking-phase로 구분된다. growing-phase에서는 락이 ..
트랜잭션의 Isolation 속성은 트랜잭션 연산들을 수행할 때 자기 자신만 하는 것 처럼 보여야 한다는 것이다. 트랜잭션이 들어온 대로 동기화되어 실행되는 것을 serializable이라고 하는데 실제 DBMS는 여러가지 트랜잭션을 동시에 처리해야하기 때문에 실제로 serialize하게 트랜잭션들을 수행하지는 않는다. 트랜잭션들은 active, partially commit, commit, abort가 있다. 오류가 생기면 abort, 그렇지 않으면 commit한다. 동시에 트랜잭션을 수행하기 때문에 발생하는 오류들이 있다. 실제 없는 값을 읽는 dirty read, 내가 update한 값이 사라지는 lost update, 같아야 하는 값을 다르게 읽어버리는 unrepeatable read가 있다. 트..