데이터베이스 실무 응용

트랜잭션(Transaction)

데이터베이스 내에서 한번에 수행되어야 하는 연산들의 집합. 하나의 작업처리를 위한 논리적 작업 단위. 모두 완료하거나 또는 모두 취소되어야 한다.

  • 원자성(Atomicity) : 기본특성. 트랜잭션 내의 연산은 모두 수행되거나 모두 수행되지 않아야 한다.
  • 일관성(Consistency) : 트랜잭션이 정상적으로 완료된 후 언제나 일관성 있는 데이터베이스 상태가 되어야 한다.
  • 격리성(Isolation) : 독립성. 하나의 트랜잭션이 수행 중일 때는 다른 트랜잭션이 접근할 수 없다.
  • 영속성(Durability) : 지속성. 트랜잭션이 성공적으로 완료되면 결과는 지속적으로 유지되어야 한다.

회복

여러가지 요인으로 손상된 데이터베이스를 이전의 정상적인 상태로 복구시키는 작업.

  • 즉시 갱신 기법 : 변경되는 내용을 바로 데이터베이스에 적용하는 기법. 변경되는 모든 내용은 로그에 기록하여 장애 발생시 로그 내용을 토대로 회복.
  • 지연 갱신 기법 : 트랜잭션이 부분완료 될 때까지 데이터베이스에 적용하지 않고 지연시킨 후 부분완료가 되면 로그를 토대로 데이터베이스에 적용.
  • 검사 시점 기법 : 트랜잭션 실행 중간에 검사 시점(Check Point)을 지정하여 검사 시점까지 완료된 내용을 데이터베이스에 적용하는 기법.
  • 그림자 페이징(Shadow Paging) 기법 : 로그를 사용하지 않고 데이터베이스를 동일한 페이지로 나누어 페이지마다 복사하여 그림자 페이지를 보관.

병행 제어

동시에 여러개의 트랜잭션이 실행되는 경우 트랜잭션 간의 격리성을 유지하여 수행에 문제가 없도록 제어하는 것.

  • 로킹(Locking) : 주요 데이터의 액세스를 상호 배타적으로 하는 것. DB동시성으로 데이터를 잃거나 부정정 효과를 방지하기 위함.
  • 교착상태(Deadlock) : 한 트랜잭션에서 수행시간이 너무 길어 오랫동안 데이터가 LOCK된 상태가 오랫동안 지속되는 것. 공유락(읽기 허용, 쓰기 금지)과 배타락(읽기 쓰기 모두 금지)을 이용하거나, 2단계 로킹 기법, 타임 스탬프 등을 이용하여 해결할 수 있다.

보안(Security)

  • 기밀성(Confidentiality) : 허락되지 않은 사용자가 정보의 내용을 알 수 없도록 하는 것.
  • 무결성(Integrity) : 허락되지 않은 사용자나 대상이 정보를 함부로 수정, 삭제 등 변경할 수 업사도록 하는 것.
  • 가용성(Availability) : 하락된 사용자나 대상이 정보에 접근하고자 할 때 방해받지 않도록 하는 것.

암호화(Encryption) 기법을 이용한 보안

  • 대칭키 시스템 : 암호화-복호화 키가 동일한 암호 시스템. 속도가 빠르고 간단하나 키관리가 번답함. 예) DES.
  • 비대칭키 시스템 : 공개키 시스템. 암호화키(공개키)와 공개되지 않는 복호화키(비밀키)가 다름. 보안성이 좋으나 알고리즘이 복잡함. 예) RSA.

관계 데이터 연산

관계 데이터베이스 구조에서 사용되는 연산으로 관계 대수관계 해석 두 종류가 있다.

관계 대수(Relational Algebra)

릴레이션에서 사용자가 원하는 결과를 얻기 위해 연산자를 표현하는 방법으로 순수 관계 연산자와 일반 집합 연산자가 있다. 절차적 언어.

순수 관계 연산자

  • SELECT(σ : 시그마) : 조건을 만족하는 수평적 부분집합(튜플)을 구하기 위한 연산.
  • PROJECT(π : 파이) : 수직적 부분집합(속성)을 구하기 위한 연산.
  • JOIN(⋈) : 두 테이블로 부터 관련된 조건에 맞는 각각의 튜플들을 결합하여 하나의 테이블로 만드는 연산. 동일(Equi, =,중복포함, 조건에 맞지 않으면 포함 안함), 자연(Natural, 동일 조인에서 중복제거), 외부(Outer, 조건에 맞지 않으면 null로 표현), 세타(Theta, ≠ , ≤ ,〈, 중복속성 모두 표현 ) 조인 등 여러가지 종류가 있다.
  • DIVISION(÷) : ‘A÷B’는 B테이블의 조건을 만족하는 튜플들을 테이블 A에서 추출하는 연산.

일반 집합 연산자

  • 합집합(∪), 교집합(∩), 차집합(−), 카티션 프로덕트(×) 연산이 있다.

관계 해석(Relational Calculus)

릴레이션에서 결과를 얻기 위한 과정을 표현한 것으로 연산자 없이 정의하는 방법. 비 절자차적. {결과값 | 조건}으로 표현된다.