일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바스크립트
- 파이썬
- 데이터베이스
- 프로그래머스
- 너비우선탐색
- SW Expert Academy
- 오라클
- 브루트포스 알고리즘
- DFS
- 백트래킹
- 그래프 이론
- 스택
- DP
- 브루트포스
- 백준 알고리즘
- 다익스트라
- 깊이우선탐색
- 그리디 알고리즘
- 너비 우선 탐색
- 백준알고리즘
- Python
- 문자열
- 구현
- 완전탐색
- SWEA
- javascript
- 다이나믹 프로그래밍
- oracle
- BFS
- 그래프 탐색
- Today
- Total
목록데이터베이스 (41)
민규의 흔적
COMMIT과 ROLLBACK 트랜잭션의 완료 - COMMIT 연산 트랜잭션에서 변경하려는 내용이 데이터베이스에 완전하게 반영된다. 트랜잭션의 철회 - ROLLBACK 연산 트랜잭션에서 변경하려는 내용이 데이터베이스 일부만 반영된 경우, 원자성을 보장하기 위해서 트랜잭션이 갱신한 사항을 트랜잭션 수행되기 전의 상태로 되돌린다. 아래의 예시를 보자. 위 그림의 파란색 선 전체를 하나의 트랜잭션으로 보자. 위의 트랜잭션 연산은 정상적으로 수행되어, 끝내 COMMIT 연산을 통해 데이터베이스에 트랜잭션으로 변경된 내용이 그대로 반영되었다. 하지만, 아래의 트랜잭션 연산은 d1, u1, i1 연산을 수행한 이후, i2 연산을 수행하기 전에 고장이 나버려 수행하지 못하였다. 위와 같은 경우 ROLLBACK 연산을..
트랜잭션이란, 하나의 논리적인 단위를 수행하는 데이터베이스 연산자들의 모임이다. 40명의 학생 데이터 중, 하나를 삽입하는 것도 트랜잭션이며, 한 번에 삽입하는 것도 트랜잭션이다. DBMS는 트랜잭션 단위로 연산 중간에 하나라도 실패하면 전으로 돌릴 수 있다. 다음의 예시를 보자. 위 예시는 두 사람 간의 계좌이체 트랜잭션이다. 계좌이체 시 한 명은 돈을 보냈는데 다른 한 명은 돈을 받지 못하거나, 반대로 돈을 보내려다 취소했는데 다른 한 명이 돈을 받는 상황이 생기면 매우 곤란할 것이다. 한 명이 돈을 보내면 다른 한 명은 무조건 돈을 받아야 하고, 한 명이 돈을 보내지 않으면 다른 한 명은 무조건 돈을 받지 않는 상태만이 유효해야 한다. 즉, 위의 2개의 SQL문은 하나의 트랜잭션으로 취급하며, 모두..
시스템 카탈로그 데이터베이스의 객체(사용자, 릴레이션, 뷰, 인덱스, 권한 등)와 구조들에 관한 모든 데이터를 포함하는 것을 의미하며, 메타데이터(데이터에 관한 데이터의 의미)라고 한다. 사용자 및 질의 최적화 모듈 등 DBMS 자신의 구성 요소에 의해서 사용된다. 데이터 사전(Data dictionary) 또는 시스템 테이블 이라고도 부른다. 시스템 카탈로그 활용 - 질의 최적화 시스템 카탈로그의 사용 목적 중 하나로, DBMS가 질의를 수행하는 여러 가지 방법들 중에서 가장 비용이 적게 드는 방법을 찾는 과정을 질의 최적화라고 한다. 다음의 예시 질의를 보며 시스템 카탈로그가 어떻게 활용되는지 알아보자. SELECT EMPNAME, SALARY, SALARY*1.1 FROM EMPLOYEE WHERE..
뷰(VIEW) 뷰(VIEW)란, 간단히 말해 다른 릴레이션으로부터 유도된 릴레이션(Derived relation)이다. 같은 의미로 뷰는, 한 사용자의 전체 외부 뷰 대신에 하나의 가상 릴레이션(Virtual relation)을 의미한다. 기존의 기본 릴레이션(Base relation, 실제 릴레이션)에 대한 SELECT문 형태로 정의되며, 이는 뷰 = SELECT문 이라고 쉽게 이해할 수 있다. 뷰 정의 위에서 언급했듯, 뷰는 SELECT문 형태로 정의되며, 정의 방법은 다음과 같다. CREATE OR REPLACE VIEW 뷰 이름 [(애트리뷰트(들))] AS SELECT문 [WITH CHECH OPTION]; 뷰의 이름 다음에 애트리뷰트들을 생략하면, SELECT문의 SELECT절에 열거된 애트리뷰..
물리적 데이터베이스 설계는 끊임없이 이루어지는 작업으로, 성능을 향상시키기 위한 고민을 지속적으로 해야 한다. 인덱스 선정 지침 1. 어떤 릴레이션에 인덱스를 생성해야 하는가 2. 어떤 애트리뷰트를 탐색 키로 선정해야 하는가 3. 몇 개의 인덱스를 생성해야 하는가 4. 각 인덱스에 대해 클러스터링 인덱스, 밀집/희소 인덱스 중 어느 유형을 선택할 것인가 인덱스를 선정하는 한 가지 방법은 가장 중요한 질의들을 차례로 고려해보고, 현재의 인덱스가 최적의 계획에 적합한지 고려해보고, 인덱스를 추가하면 더 좋은 계획이 가능한지 알아보는 것이다. 인덱스를 결정하는데 도움이 되는 몇 가지 지침 지침 1 : 기본 키는 클러스터링 인덱스를 정의할 훌륭한 후보이다. 지침 2 : 외래 키도 인덱스를 정의할 중요한 후보이다..
SQL의 CREATE TABLE 문에서 PRIMARY KEY절로 명시한 애트리뷰트에 대해서는 DBMS가 자동적으로 기본 인덱스를 생성한다. UNIQUE로 명시한 애트리뷰트에 대해서는 DBMS가 자동적으로 보조 인덱스를 생성한다. (오버헤드는 증가함) 이는 값이 새로 들어오면, 중복된 값인지 아닌지 빠르게 체크하기 위해서이다. 다른 애트리뷰트에 추가로 인덱스를 정의하기 위해서는 DBMS마다 구문이 다소 다른 CREATE INDEX문을 사용해야 한다. 여기서는 오라클 기준으로 설명을 이어나가겠다. 다수의 애트리뷰트를 사용한 인덱스 정의 한 릴레이션에 속하는 두 개 이상의 애트리뷰트들의 조합에 대하여 하나의 인덱스를 다음과 같이 정의할 수 있다. CREATE INDEX EmpIndex ON EMPLOYEE (..
다단계 인덱스 인덱스 자체가 클 경우에는 인덱스를 탐색하는 시간조차 오래 걸릴 수 있다. ( 데이터 파일에 대한 인덱스 파일이 여타 다른 데이터 파일만큼 큰 경우 ) 이러한 경우 인덱스 엔트리를 탐색하는 시간을 줄이기 위해 단일 단계 인덱스를 디스크 상의 하나의 순서 파일로 간주하고, 단일 단계 인덱스에 대해 다시 인덱스를 정의할 수 있다. 다단계 인덱스는 가장 상위 단계의 모든 인덱스 엔트리들이 한 블록에 들어갈 수 있을 때까지 이런 과정을 반복하며, 최종 과정을 거쳐 가장 상위 단계의 인덱스가 만들어지면 해당 인덱스를 마스터 인덱스(Master Index)라고 부른다. 마스터 인덱스는 한 블록으로 이루어지기 때문에 주기억 장치에 상주할 수 있다. 대부분의 다단계 인덱스는 B+트리를 사용한다. 위 예시..
File을 파일 또는 화일이라고 읽는데, 여기서는 파일로 읽겠다. 파일(File) 조직의 유형 히프 파일(Heap File) 순차 파일(Sequential File) 인덱스된 순차 파일(Indexed Sequential File) 직접 파일(Hash File) 인덱스된 순차 파일 인덱스를 통해서 임의의 레코드를 접근할 수 있는 파일을 인덱스된 순차 파일이라고 한다. 인덱스 기법으로는 단일 단계 인덱스와 다단계 인덱스로 구분된다. 단일 단계 인덱스 단일 단계 인덱스의 각 엔트리는 쌍 이다. 엔트리들은 탐색 키 값의 오름차순으로 정렬된다. 인덱스는 데이터 파일과는 별도의 파일에 저장된다. 기존 파일의 탐색 키와 각 탐색 키와 동일한 값이 위치한 기존 파일의 레코드들을 가리키는 포인터 값 2개의 쌍이 한 엔트..