* 본 내용은 Tmax AI & Big Data Academy 나연묵 교수님의 수업과, Kroenke and Auer - Database Processing (데이터베이스 처리론), 11th Edition 을 바탕으로 작성하였습니다.
* 강의 앞부분에는 Shamkant B. Navathe / Fundamentals of Database Systems의 일부 내용도 참고하였습니다.
SQL 추가 구문
Shamkant B. Navathe / Fundamentals of Database Systems Chapter 7.
Meaning of NULL
- Unknown value
- Unavailable or withheld value
- Not applicable attribute
* SQL usees a three-valued logic :
- TRUE, FALSE, and UNKNOWN (like MAYBE)
SQL allows queries that check whether an attribute is NULL
예제)
SELECT Fname, Lname
FROM Employee
WHERE EXISTS (SELECT *
FROM DEPENDENT
WHERE ssn = Essn)
AND EXISTS (SELECT *
FROM Department
WHERE ssn = Mgr_ssn)
WITH clause
- WITH 절은 사용자가 특정 쿼리에서만 사용될 수 있는 테이블을 정의할수 있게 해준다. (not available in all SQL implementations)
SQL 에는 집계함수는 COUNT, SUM, AVERAGE, MAX, MIN 이렇게 다섯개 밖에 없는데, RANK는 등수를 매겨주는 연산을 수행해준다.
Chapter 9. Managing Multiuser Databases
* DBA (Database Administration)
- 모든 크고 작은 데이터베이스들은 DBA가 필요하다.
- DBA는 모든 기관의 데이터 자산에 관련된 함수를 지칭하는 말이다.
- DBA는 하나의 데이터베이스 또는 하나의 응용 프로그램으로 특정되는 사람이나 사무실을 지칭한다.
- DBA 역할 (DBA Tasks)
- 데이터 베이스와 어플리게이션 개발에 참여하기
-- 요구사항 단계와 데이터 모델 생서 단계에서 도와주기
-- 데이터베이스 설계와 생성에서 활동적인 역할 수행하기
- 데이터베이스 구조 변경을 용이하게 하기
-- 커뮤니티 범위 내에서의 해결책 찾아보기
-- 모든 사용자에 대한 영향력 평가하기
-- 형상 통제 포럼 제공
-- 변경사항이 생기고 나서의 문제들에 미리 대비하기
-- 문서 관리하고 유지하기
* Concurrency Control
* Atomic Transactions
* Resource Locking
Resource Locking 은 응용프로그램이 막 바뀌려고 하는 순간에 다수의 응용프로그램이 같은 기록의 복사본을 취득하는 것으로 부터 막아준다.
vs OS lock => 운영체제에서의 락의 역할과 비교하기
* Lock Terminology
- implicit locks : DBMS에 의해서 생기는 락이다.
- explicit locks : 어플리케이션 프로그램에 의해 발행되는 락이다.
- lock granularity : 잠긴 자원의 사이즈를 말한다
-- rows, page, table, database level
* Serializable Transactions 직렬가능한 트랜잭션
직렬가능성을 구현하는 기술에는 Two-phased locking 이 있다.
Two-phased Locking - growing phase 와 shrinking phase 로 구분된다.
특별한 케이스가 있는데, lock은 트랜잭션을 통해서 얻어진다. COMMIT이나 ROLLBACK 명령어가 나오기 전까지는 lock은 풀리지 않는다.
락이 빨리 풀어쥐어야 다른 트랜잭션을 실행을 할 수 있기 떄문에 이 방식은 좀 더 제한적이지만, two-phase locking 보다는 구현하기는 쉽다.
* Deadlock
the deadly embrace. 죽음의 포옹. 다른 트랜잭션이 가지고 있는 자원을 서로 기다리는 상태를 말한다
- preventing deadlock :
1. 사용자들이 한꺼번에 모든 락 요청을 만들게 해준다. (Greedy Method)
2. 모든 응용 프로그램이 자원을 일정한 순서로 잠그도록 요구한다 (순환대기 기법)
- breaking deadlock :
1. 거의 모든 DBMS는 데드락을 탐지하는 알고리즘을 가지고 있다.
2. 데드락이 발생하면,
* Optimistic Locking vs Pessimistic Locking
옵티는 가장 최후의 순간에 락을 거는 것이다.
페시는 바로 락을 거는 것. SELECT 문은 락을 걸지 않아도 된다.
* ACID Transactions : Atomic, Consistent, Isolated, Durable
Transaction Isolation Level
Isolation Level : Read Uncommitted / Read Commited / Repeatable Read / Serializable
Problem Type : Dirty Read / Nonrepeatable Read / Phantom Read
Serializable 사용하면 문제는 발생하지는 않는데, 메모리를 엄청 많이 잡아먹는다.
* Cursor
커서는 리코드의 집합의포인터이다. SELECT 구문을 이용해서 정의될 수 있다. 커서에는 네가지 타입이 있다.
- Forward only :
Scrollable Cursor 도 존재한다.
- Static :
- Keyset :
- Dynamic :
* 리프로세싱 & 롤백 / 롤포워드 Reprocessing & Rollback/Rollforward
- 리프로세싱 Recovery via reprocessing :
데이터베이스가 저장된 알려진 포인트로 돌아가고, 거기서부터 다시 프로세스를 진행한다.
실현가능하지 않은 방식이다. 왜나하면...
1. 컴퓨터가 과도하게 스케줄링이 되어있다면, 절대로 복구된 시스템이 따라잡을 수 없기 때문이다
2. 비동기적인 이벤트들은, 비록 트랜잭션이 동시에 발생한다고 하더라도, 다른 결과들을 야기할 수 있다
- 롤백 / 롤포워드 Recovery via reprocessing :
주기적으로 데이터베이스를 저장을 하고, 저장한 이래로 데이터베이스의 변경 로그를 유지한다.
-- 데이터베이스 로그는 데이터 변경의 기록들을 발생한 순서대로 보관하고 있는다.
실패를 하게 되면, 롤백 또는 롤포워드가 적용이 된다.
-- 롤백 Rollback : undo the erroneous changes made to the database and reprocess valid transactions.
-- 롤포워드 Rollforward : restore database using saved data and valid transactions since the last save.
* Checkpoint
체크포인트는 데이터베이스와 트랜잭션 로그의 동기화 포인트이다.
인서트 딜리트
Chapter 10A. Managing Databases with Oracle Database 11g
이 장에서는 오라클을 사용하는 방법들에 대해서 소개하고 있다.
.
tpc.org
db engines.com
db lp
.
국방 데이터 센터 - 폐쇄망,
데이터 센터 유치 반대하는 이유는? 단지 전기먹는 하마라는 이유때문에?
https://github.com/shjeon0708/project
Shamkant Navathe
'TABA > Database' 카테고리의 다른 글
TABA Sep 7th (2) (0) | 2022.09.07 |
---|---|
TABA Sep 7th (1) (0) | 2022.09.07 |
TABA Sep 6th (0) | 2022.09.06 |
TABA Sep 5th (2) (0) | 2022.09.06 |
TABA Sep 5th (1) (0) | 2022.09.05 |