본문 바로가기
정보처리기사

데이터 베이스 응용 SW기초 기술 활용 | RDBMS | PROCEDURE

by 공불러 2023. 7. 20.
728x90
반응형

RDBMS

RDB는 관계형 데이터베이스를 의미하며, 데이터베이스 관리 시스템(DBMS)의 한 종류입니다.
RDB는 데이터를 테이블 형태로 구성하며, 각 테이블은 고유하고 널이 아닌 기본키(primary key)를 가지고 있습니다. 기본키는 테이블 내의 각 행을 고유하게 식별합니다.

JOIN

JOIN은 관계형 데이터베이스에서 두 개 이상의 테이블을 관련 컬럼을 기준으로 결합하는 작업을 말합니다.
공통 컬럼을 사용하여 여러 테이블에서 데이터를 검색할 수 있게 해줍니다

 

DBMS RDBMS

DBMS는 데이터베이스를 관리하는 소프트웨어 시스템을 의미합니다. 데이터 저장, 검색, 업데이트, 관리 등의 기능을 제공합니다.
RDBMS는 관계형 데이터베이스를 특별히 관리하는 DBMS입니다. 데이터를 테이블 형태로 저장하고 관계를 정의합니다.

 

계층형 데이터베이스

데이터를 트리 구조로 구성하는 데이터베이스 모델입니다. 각 부모는 여러 자식을 가질 수 있지만, 자식은 하나의 부모만 가질 수 있습니다. 초기 데이터베이스 모델 중 하나이지만 현재는 그리 흔하게 사용되지는 않습니다. 관계형 데이터 베이스

 

객체 지향형 데이터베이스

객체 지향형 데이터베이스는 데이터를 객체 형태로 저장하는 데이터베이스 모델입니다. 객체 지향 프로그래밍과 유사한 방식으로 데이터를 저장합니다.
복잡한 데이터 유형을 저장할 수 있으며, 데이터와 메서드의 캡슐화 및 속성 및 동작의 상속이 가능합니다.

 

객체 관계형 데이터 베이스

객체 관계형 데이터베이스는 관계형과 객체 지향 데이터베이스의 특징을 결합한 하이브리드 데이터베이스 모델입니다.
관계형 모델을 확장하여 객체 지향 개념을 포함하며, 복잡한 데이터 유형, 상속 및 메서드 등을 지원합니다.

NoSQL

NoSQL은 비관계형 데이터 모델을 제공하는 데이터베이스 관리 시스템의 한 유형입니다.
비구조적이거나 반정형 데이터의 저장 및 검색을 유연하게 지원하며, 여러 서버에 걸쳐 수평으로 확장할 수 있습니다.

 

 

 

 

트랜잭션 

트랜잭션은 하나 이상의 데이터베이스 작업으로 구성된 논리적인 작업 단위를 의미합니다.

ACID 속성을 따릅니다

  • 원자성(Atomicity): 트랜잭션 내의 모든 작업은 하나의 단위로 처리됩니다. 모두 성공하거나 모두 실패합니다.
  • 일관성(Consistency): 트랜잭션 전후에 데이터베이스는 유효한 상태를 유지합니다.
  • 독립성(격리성, Isolation): 동시에 실행되는 트랜잭션은 서로 간섭할 수 없어 데이터 일관성을 보장합니다
  • 지속성(Durability): 트랜잭션이 커밋되면 변경 사항이 영구적으로 저장됩니다

TCL (트랜잭션 제어 언어)

  • TCL은 데이터베이스에서 트랜잭션을 관리하는 데 사용되는 SQL의 하위 집합입니다.
  • COMMIT(변경 사항 저장), ROLLBACK(변경 사항 취소), SAVEPOINT(중간 지점 설정)와 같은 명령이 포함됩니다.

COMMIT (변경 사항 저장)

  • COMMIT은 트랜잭션의 작업을 영구적으로 데이터베이스에 저장하는 명령입니다.
  • 트랜잭션 내의 모든 작업이 성공적으로 완료되었을 때 COMMIT을 실행하면, 이전에 수행한 작업들이 데이터베이스에 반영됩니다.
  • COMMIT을 실행하면 트랜잭션의 변경 사항이 영구적으로 적용되며, 다른 사용자도 해당 변경 사항을 볼 수 있게 됩니다.

ROLLBACK (변경 사항 취소)

  • ROLLBACK은 트랜잭션의 변경 사항을 취소하고 이전 상태로 되돌리는 명령입니다.
  • 트랜잭션 중에 오류가 발생하거나 원하지 않는 결과가 나온 경우 ROLLBACK을 실행하여 트랜잭션을 취소하고 이전 상태로 되돌릴 수 있습니다.
  • ROLLBACK을 실행하면 트랜잭션의 변경 사항이 취소되고 데이터베이스는 이전 상태로 복구됩니다.

SAVEPOINT (중간 지점 설정)

  • SAVEPOINT는 트랜잭션 내에서 중간 지점을 설정하여 해당 지점으로 롤백할 수 있는 명령입니다.
  • SAVEPOINT를 사용하여 트랜잭션 내의 특정 지점을 저장하고, 이후에 해당 지점으로 롤백할 수 있습니다.
  • 중간에 오류가 발생했을 때 롤백을 하더라도 SAVEPOINT로 설정한 지점 이전의 변경 사항은 유지됩니다.

Redo (재실행)와 Undo (되돌리기)

  • Redo는 데이터베이스 시스템이 시스템 장애 등으로 인해 손실된 데이터를 복구하는 작업입니다. Redo 로그를 사용하여 마지막 커밋 이후의 변경 사항을 다시 적용하여 데이터를 복원합니다.
  • Undo는 트랜잭션이나 쿼리 실행 중에 발생한 변경 사항을 취소하여 이전 상태로 되돌리는 작업입니다. Undo 로그를 사용하여 롤백이나 롤백 세그먼트를 통해 트랜잭션을 취소합니다.

 

동시성 제어의 필요성

동시성 제어(Concurrency Control)는 여러 사용자가 동시에 데이터베이스에 접근하고 작업할 때 데이터 일관성과 무결성을 유지하기 위한 메커니즘입니다.
데이터베이스 시스템에서 동시에 여러 트랜잭션이 실행될 때 발생할 수 있는 문제를 해결하기 위해 필요합니다.
동시성 제어는 트랜잭션 간의 상호작용을 조율하여 데이터 일관성을 유지하고, 동시에 실행되는 트랜잭션들이 데이터에 일관된 접근 권한을 가지도록 조정합니다.
동시성 제어를 통해 트랜잭션 간의 충돌이나 갱신 손실 등의 문제를 방지하고, 데이터의 정확성과 일관성을 보장할 수 있습니다.

갱신손실

오류명 설명
갱신 손실
(Lost Update)
트랜잭션들이 동일 데이터를 동시에 갱신 할 경우 발생
이전 트랜잭션이 데이터를 갱신한 후 트랜잭션을 종료하기 전에 나중 트랜잭션이 갱신값을 덮어쓰는 경우 발생
현황파악오류
(Dirty Read)
트랜잭션의 중간 수행결과를 다른 트랜잭션이 참조함으로써 발생하는 오류
모순성
(Inconsistency)
두 트랙잭션이 동시에 실행할 때 DB가 일관성이 없는 상태로 남는 문제
연쇄복귀
(Cascading Rollback)
복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능

TCL (트랜잭션 제어 언어)

TCL은 데이터베이스에서 트랜잭션을 관리하는 데 사용되는 SQL의 하위 집합입니다.
COMMIT(변경 사항 저장), ROLLBACK(변경 사항 취소), SAVEPOINT(중간 지점 설정)와 같은 명령이 포함됩니다.

 

DDL (데이터 정의 언어)

  • DDL은 데이터베이스 구조를 정의하고 관리하는 데 사용되는 SQL의 하위 집합입니다.
  • CREATE TABLE(새로운 테이블 생성), DROP TABLE(테이블 삭제), ALTER TABLE(테이블 구조 수정), RENAME(객체 이름 변경) 등의 명령이 포함됩니다.

2023.07.03 - [정보처리기사] - SQL 명령문 목록 | DDL | DML | DCL

 

프로시저

데이터베이스에서 저장되고 실행 가능한 명령문의 집합입니다.
주로 반복적인 작업이나 복잡한 로직을 수행하는 데 사용됩니다.

종류:

  • Stored Function: 반환 값을 가지는 프로시저입니다. RETURN 문이 필요합니다.
  • Stored Procedure: 가장 일반적인 프로시저 형태로, 호출하여 실행됩니다. 매개변수(IN, OUT)를 가질 수 있습니다.
  • Trigger: 특정 테이블의 데이터 변경 이벤트를 감지하고 묵시적으로 정의된 로직을 실행하는 프로시저입니다. 주로 테이블에 대해서만 작동합니다.
  • Stored Package: 서로 관련된 프로시저와 함수의 집합으로, 관련 있는 프로시저와 함수를 그룹화하여 관리합니다.


DECLARE, BEGIN, EXCEPTION은 데이터베이스에서 프로시저나 트랜잭션 제어를 위해 사용되는 키워드입니다.

  • DECLARE: 변수를 선언하는 키워드로, 프로시저 내에서 사용할 변수의 이름과 데이터 유형을 지정합니다.
  • BEGIN: 프로시저나 트랜잭션 블록의 시작을 나타내는 키워드로, 실행할 명령문 블록의 시작점을 정의합니다.
  • EXCEPTION: 예외 처리를 위한 키워드로, 예외 상황이 발생했을 때 처리할 로직을 정의합니다.
  • BEGIN과 EXCEPTION은 주로 프로시저나 트랜잭션 블록 내에서 예외 처리를 위해 사용됩니다.
  • BEGIN과 EXCEPTION 블록은 예외가 발생할 경우 적절한 예외 처리를 수행하고, 프로시저나 트랜잭션의 정상적인 종료를 보장합니다.

저장 프로시저

 

저장 프로시저는 데이터베이스에 저장된 이름 있는 SQL 문의 모음입니다.
미리 컴파일되며 여러 번 실행할 수 있습니다.
매개변수(IN, OUT)를 가질 수 있으며 결과를 반환할 수 있습니다.
저장 프로시저는 복잡한 로직을 캡슐화하고 성능을 향상시키는 데 사용됩니다.

트리거

트리거는 테이블과 관련된 데이터 수정 이벤트(INSERT, UPDATE, DELETE 등)가 발생할 때 자동으로 실행되는 데이터베이스 객체입니다.
트리거를 사용하면 데이터 무결성 규칙을 강제하거나 특정 이벤트 발생 시 추가 작업을 수행할 수 있습니다.

 

저장 패키지

저장 패키지는 데이터베이스에 관련된 저장 프로시저, 함수, 변수, 커서 등을 함께 그룹화하는 컨테이너입니다.
관련된 데이터베이스 개체를 조직화하고 재사용성을 높이기 위해 사용됩니다.

 

데이터 조작 프로시저 최적화

 

데이터 조작 프로시저 최적화는 데이터베이스에서 데이터 조작 프로시저의 성능을 최적화하는 것을 의미합니다.
APM(응용 프로그램 성능 모니터링)과 같은 모니터링 도구, 옵티마이저를 사용한 최적의 처리 경로 선택, 힌트(예: COMPUTE, ESTIMATE, DELETE) 사용 등의 기술을 활용할 수 있습니다.

 

옵티마이저

  • 옵티마이저(Optimizer)는 SQL 쿼리의 최적 실행 경로를 결정하는 엔진입니다.
  • 데이터베이스 시스템은 쿼리의 실행 계획을 평가하고 가장 효율적인 방법으로 데이터를 액세스하고 조인하는 방법을 결정합니다.
  • 옵티마이저는 다양한 기술과 통계 정보를 활용하여 쿼리 성능을 향상시키는 최적의 실행 계획을 선택합니다.
  • 힌트(Hint)를 사용하여 쿼리 실행 경로를 강제로 지정할 수도 있습니다.
  • 일반적으로 옵티마이저는 최적의 실행 계획을 결정하기 위해 비용 기반 최적화(Cost-based Optimization)를 사용합니다.

 

 

728x90
반응형

댓글