728x90
반응형

 

* 본 내용은 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://dblp.org/

 

dblp: computer science bibliography

case-insensitive prefix search: default e.g., sig matches "SIGIR" as well as "signal"exact word search: append dollar sign ($) to worde.g., graph$ matches "graph", but not "graphics"boolean and: separate words by spacee.g., codd modelboolean or: connect wo

dblp.org

 

 

.

 

 

국방 데이터 센터 - 폐쇄망,

데이터 센터 유치 반대하는 이유는? 단지 전기먹는 하마라는 이유때문에?


https://github.com/shjeon0708/project

 

GitHub - shjeon0708/project: test

test. Contribute to shjeon0708/project development by creating an account on GitHub.

github.com

 


Shamkant Navathe

728x90
반응형

'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
728x90
반응형

얼마전에 50문 50답을 하면서 나온 질문 중에 하나가, '나는 10년 뒤에 무엇을 하고 있을까' 라는 질문이었다. 사실 이 질문은 미국에 있을 때 굉장히 많이 받은 질문 중에 하나였다.

"Where do you see yourself in 5 years, 10 years, or more?"

이 질문에 쉽게 대답하는 사람은 없었다. 나는 개인적으로는, 20살이 되었을 때에 대략적인 인생의 로드맵에 대해서 생각해본 적이 있었다. 몇살때는 무엇을 하고 있지 않을까, 몇살때는 결혼을 해있을 것 같고, 몇살때 어느 회사에 취업을 해있고, 애는 몇살때쯤에 낳겠다 식의, 진지하지 않은 플랜을 세운 기억이 있는데, 당시에 이걸 외국ㅇ인 친구들한테 공유했을 때에는 반응이 극과 극으로 갈렸다. 흥미로워하면서 더 이야기해보라는 식의 반응을 보인 그룹과, '너는 뭐하는 녀석인데 그런 플랜을 벌써 가지고 있냐' 라는 식의 신기해하는 반응을 보인 그룹으로 나뉘었는데, 참 외국인들도 뭐 다 생각하는게 비슷하구나 하는 생각이 들었었다.


 

아마 요즘에 가장 많이 하는 고민 가운데 하나는, 내가 과연 무엇을 (잘)할 수 있는 사람인가 라는 것이다.

하고 싶은 일이 무엇인지 안다는 것은 굉장한 축복이다. 나랑 제일 친한 동기인 쿠라니는 이것저것을 참 많이 시도하는 친구이다. 컴퓨터를 공부하면서 법도 같이 복수전공을 하고 있고, 여러 공모전이나 대회도 참 많이 참여를 해왔다. 지난 겨울에는 학교 근처에 있는 현대 모비스에서 인턴 비슷한 일을 했는데, 그 일을 하면서 자동차랑 관련된 일에 큰 흥미를 느끼고 아예 자동차 산업이랑 관련된 분야를 공부하고 거기서 일을 하고 싶다는 명확한 목표를 가지게 되었다. 이래서 다양한 일을 시도하는 것이 참 중요한 것 같다.


 

친구들 중에는 이미 일을 시작한 사람들도 있다. 직장에 다니는 친구들을 보면, 부럽다. 하지만 불안하지는 않다. 나는 조금, 아주 약간 돌아가는 것 뿐이지, 늦은거라고는 생각하지 않는다.


 

글을 쓰는 지금은 2022년 7월. 10년 뒤면 2032년 7월, 만으로 35살이 된 시점일 것이다. 스무살의 내가 세운 계획에 따르면, 나는 그때 쯤 이미 결혼을 해있어야하고, 자녀가 있어야할텐데...? 뭐 인생이 언제 계획대로 된적이 있기야 하겠냐마는, 그래도 최소한의 계획이 없는 삶은 너무 무미건조하다. 어떤 계획을 세워놓고, 그것과 비슷하게 가려고 노력해야지.

지금 인생에서 상당히 중요한 기로에 서있다. 이번 여름방학은 정말 의미있게 보내고 싶고, 자격증도 준비하고 있다. 2주뒤부터는 학교에서 주관하는 교육도 신청을 해놨다. 이런저런 일들을 하나씩 하다보면, 내가 갈일이 점점 보이게 되지 않을까. 앞으로 무슨일을 하게 될지는 두고 볼일이다.

728x90
반응형
728x90
반응형

* 본 내용은 Tmax AI & Big Data Academy 나연묵 교수님의 수업과, Kroenke and Auer - Database Processing (데이터베이스 처리론), 11th Edition 을 바탕으로 작성하였습니다.

 

Chapter 7. SQL for Database Construction and Application Processing

 

 

View 는 가상 테이블이라서 ALTER 가 없다.

도메인

 

 

 

최초의 테이블을 만드는 명령어는 CREATE TABLE 이다.

- 각 열은 세 부분으로 나눠진다 : column name / data typle / optional constraints

CREATE TABLE ARTIST (
	ArtistID		Int			NOT NULL IDENTITY(1,1),
    LastName		Char(25)	NOT NULL,
    FirstName		Char(25)	NOT NULL,
    Nationality		Char(30)	NOT NULL,
    DateOfBirth		Numeric(4)	NULL,
    DateDeceased	Numeric(4)	NULL,
    CONSTRAINT	ArtistPK	PRIMARY KEY(ArtistID)
    CONSTRAINT	ArtistAK1	UNIQUE(LastName, FirstName)
    );

 

 

 

* Implementing Cardinalities

 

 

CREATE TABLE ARTIST (
	ArtistID		Int			NOT NULL IDENTITY(1,1),
    LastName		Char(25)	NOT NULL,
    FirstName		Char(25)	NOT NULL,
    Nationality		Char(30)	NOT NULL,
    DateOfBirth		Numeric(4)	NULL,
    DateDeceased	Numeric(4)	NULL,
    CONSTRAINT	ArtistPK	PRIMARY KEY(ArtistID)
    CONSTRAINT	ArtistAK1	UNIQUE(LastName, FirstName)
    CONSTRAINT	NationalityValues	CHECK
    				(Nationality IN ('Canadian', 'English', 'French', 'German', 'Mexican', 'Russian', 'Spanish', 'United States')),
    CONSTRAINT	
    CONSTRAINT	
    CONSTRAINT	
    );


CREATE TABLE WORK (
	WorkID			Int				NOT NULL IDENTITY (500,1),
    Title			Char(35)		NOT NULL,
    Copy			Char(12)		NOT NULL,
    Medium			Char(35)		NULL,
    [Descripotion]	Varchar(1000)	NULL DEFAULT 'Unkown provenance',
    ArtistID						NOT NULL,
    CONSTRAINT	WorkPK			PRIMARY KEY(WorkID),
    CONSTRAINT	WorkAK1			UNIQUE(Title, Copy),
    CONSTRAINT	ArtistFK		FOREIGN KEY(ArtistID)

 

 

* ALTER Statement

 

 

many to many

프로젝트의 키

 

프라이머리키 까지만 정의를 해주고, 외래키를 정의를 하지 않은채로 시작한다. 그 다음에 얼터 테이블 모드로 외래키를 나중에 추가해준다. 꼬여있으면 에러가 나서 돌아가지 않는다. 참조 무결성 제약조건 위반으로 안돌아간다.

 

 

* Removing Tables 

 

* SQL DML 

 

- INSERT

INSERT INTO... SELECT 절은 정규화 할떄에 사용하기에 좋다.

 

- UPDATE

UPDATE	CUSTOMER
SET	City - 'New York City'
WHERE	CustomerID = 1000;
UPDATE	CUSTOMER
SET	AreaCode = '333'
WHERE	City = 'Denver'

- DELETE

 

WHERE 절을 넣게 되면, 테이블 내에 있는 모든 행을 지우게 된다.

DELETE	FROM CUSTOMER
WHERE	CustomerID = 1000;

- JOIN ON syntax

SELECT	CUSTOMER.Name, ARTIST.Name
FROM	CUSTOMER JOIN CUSTOMER_ARTIST_INT
	ON	CUSTOMER.CustomerID =
    CUSTOMER_ARTIST_INT.CustomerID
    JOIN ARTIST
    	ON CUSTOMER_ARTIST_INT.ArtistID =
     ARTIST.ArtistID;

 

 

셋오브튜플 =/= 멀티셋. 유니온올은 멀티셋을 인정해준다

 

Relation JOIN

 

 

* SQL VIEW

 

 

* Trigger

- 어떤 이벤트가 발생하면 DBMS가 자동으로 실행되는 저장된 프로그램이다.

- 트리거의 타입은 세가지가 있다 : BEFORE / INSTEAD OF / AFTER

- 각각의 데이터 타입은 Insert, Update, 그리고 Delete를 위해 선언될 수 있다. 그러니 총 도합 9가지 종류의 트리거 타입을 지원한다.

 

* Stored Procedure

- 데이터베이스에 저장되어있고, 사용할 때에 컴파일되는 프로그램이다.

- Stored Procedure는 입력 매개변수를 받을 수 있고, 결과를 반환할 수 있다.

 

 


 

 

 

 

 

 

728x90
반응형

'TABA > Database' 카테고리의 다른 글

TABA Sep 8th (1)  (1) 2022.09.13
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

+ Recent posts