물리 데이터 저장소, ORM 프레임워크, 트랜잭션 인터페이스, 프로시저, 쿼리, 소스코드 인스펙션

2022. 5. 29. 12:45정처기(필기)/소프트웨어개발

②(1) 물리 데이터 저장소

 

1. 물리 데이터 저장소 개념

- 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장 구조로 변환하기 위한 데이터 저장소

 

!!여기서 잠깐!!

DBMS란?

- Database Management System의 준말로 데이터를 한 곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및 관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 소프트웨어 프로그램

 

2. 물리 데이터 저장소 모델 변환 절차

 

단위 개체를 테이블로 변환 -> 속성을 컬럼으로 변환(표준화된 약어 사용) -> UID를 기본 키로 변환 -> 관계를 외래 키로 변환 -> 컬럼 유형과 길이 정의 -> 반 정규화 수행(테이블 통합, 테이블 분할, 중복 추가, 컬럼 중복화가 있음)

 

!!여기서 잠깐!!

UID란?

- UID는 특정 사용자에게 부여되는 숫자 또는 이름

 

3. 물리 데이터 저장소 구성

① 테이블 제약조건 설계

- 대표적인 테이블 제약조건으로 삭제 제약조건, 갱신 제약조건이 있다.

 

삭제 제약 조건 - 연쇄(모든 Row가 삭제), 제한(외부 키에 없는 것만 삭제 가능), 무효(정의된 외부 키와 일치하는 것을 Null로 수정)

갱신 제약 조건 - 연쇄(외부 키와 일치하는 모든 Row 수정), 제한(외부 키에 없는 것만 수정가능), 무효(외부 키와 일치하는 것을 Null로 수정)

 

② 인덱스 설계

- 인덱스는 적용 기준, 컬럼 설정, 고려사항 등을 고려하여 설계한다.

- 인덱스 분포도가 10~15% 이내인 경우 

분포도  = (1 / (컬럼 값의 종류)) * 100(단위는 %)

분포도 = (컬럼 값의 평균 Row 수) / (테이블의 총 Row 수) * 100

 

- 인덱스를 선정할 때 분포도가 좋은 컬럼은 단독적으로 생성한다. 

- 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성한다. 

 

③ 뷰 설계

- 뷰의 속성

  • REPLACE : 뷰가 이미 존재하는 경우 재생성
  • FORCE : 기본 테이블의 존재 여부에 관계 없이 뷰 생성
  • NOFORCE : 기본 테이블이 존재할 때만 뷰 생성
  • WITH CHECK OPTION : 서브 쿼리 내의 조건을 만족하는 행만 변경
  • WITH READ ONLY : 데이터 조작어 작업 불가

 

④ 클러스터 설계

- 분포도가 넓을수록 오히려 유리하다.

- 액세스 효율 향상을 위한 물리적 저장 방법이다. 

 

⑤ 파티션 설계

 

▼ 파티션의 종류

종류 설명
범위 분할 분할 키값이 범위 내에 있는지 여부를 구분하는 분할 기법
해시 분할 해시 함수의 값에 따라 파티션에 포함할지 여부를 결정하는 분할 기법
목록 분할 값 목록에 파티션을 할당하고 분할 키값을 그 목록에 맞게 분할 기법
조합 분할 범위 분할, 해시 분할, 목록 분할 중 2개 이상의 분할 기법을 결정
라운드로빈 파티셔닝 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당

 

!!여기서 잠깐!!

해시함수란?

- 해시함수는 임의의 길이의 데이터를 입력받아 일정한 길이의 비트열로 반환시켜주는 함수다.

 

▼ 파티션의 장점

성능 향상 - 데이터 액세스 범위를 줄여 성능 향상

가용성 향상 - 전체 데이터의 훼손 가능성이 감소하고 데이터의 가용성도 향상

백업 가능 - 분할 영역을 독립저그올 백업하고 복구 가능

경합 감소 - 디스크 스트라이핑으로 입출력 성능을 향상

 

 

!!여기서 잠깐!!

디스크 스트라이핑이란?

- 논리적 볼륨의 데이터를 여러 디스크 드라이브에 분산하는 기술

 

(2) ORM 프레임워크

1. ORM 프레임워크의 개념

- 관계형 데이터베이스와 객체지향 프로그래밍 언어 간 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.

- 객체지향 언어에서 사용하는 객체를 관계형 데이터베이스로 변환하여 테이블을 구성하는 데 활용된다. 

 

2. ORM 프레임워크 기술

유형 기술 설명
SQL
Mapping
iBatis SQL에 기반한 데이터베이스와 자바, 닷넷, 루비 등을 연결시켜주는 역할을 하는 개발 프레임워크
MyBatis 객체지향 언어인 자바의 관계형 DB 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크 
OR
Mapping
Hibernate 자바 언어를 위한 객체 관계 매핑 프레임워크
객체지향 도메인 모델을 관계형 데이터베이스로 매핑하기 위한 프레임워크 제공

 

3. ORM 프레임워크 매핑 기법

객체 - 테이블 - 객체 지향 내 객체는 데이터베이스에서 테이블로 변환

속성 - 컬럼 - 객체의 속성은 데이터베이스에서 컬럼으로 변환

오퍼레이션 - 프로시저/ 함수 - 객체의 행위인 오퍼레이션은 데이터베이스에서 프로시저 또는 함수로 변환

 

4. ORM 프레임워크 절차

[1] 클래스 - > 테이블 변환

[2] 애트리뷰트 -> 컬럼 변환

[3] 클래스 간 관계 -> 테이블 간 관계 변환(클래스 간 관계를 데이터베이스의 테이블 제약사항으로 변환)

 

5. ORM 종류

▼ 부분적 ORM 

- SQL을 특정 이름으로 정의하여 사용

- SQL  Mapper 사용

- iBatis, MyBatis, Embeded SQL 사용

- 데이터 전송 방식이 효율적이다

 

▼ 완전 ORM

- 내부 엔진에서 SQL 자동생성

- Object Relation Mapper 사용

- Hibernate 사용

- 효율적인 매핑 기법이 장점

 

(3) 트랜잭션 인터페이스

 

1. 트랜잭션 인터페이스 개념

- 데이터베이스 트랜잭션의 입출력과 기능 형태를 정의한 인터페이스이다.

 

!!여기서 잠깐!!

트랜잭션이란?

- 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

 

2. 트랜잭션 인터페이스의 특징

원자성 : 트랜잭션 연산을 데이터베이스 모두에 반영하거나 반영하지 말아야 함

일관성 : 트랜잭션이 실행을 성공적으로 완료할 시 일관성 있는 데이터베이스 상태를 유지해야 함

격리성 : 둘 이상 트랜잭션 동시 실행 시 한 개의 트랜잭션만 접근이 가능하여 간섭이 불가함

영속성 : 성공적으로 완료된 트랜잭션 결과는 영구적으로 반영됨 

 

 

(4) 프로시저

 

1. 프로시저 개념

- 프로시저는 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합니다. 

- 데이터베이스 내부에 저장되고 일정한 조건이 되면 자동으로 수행된다.

 

2. 절차형 데이터조작 프로시저

[1] Oracle 기반 PL/SQL 개념

- 표준 SQL을 기반으로 오라클에서 개발한 데이터 조작 언어

- 표준 SQL의 확장 기능이 우수

- 장점은 컴파일이 불필요하며, 모듈화도 가능하고, 절차적 언어를 사용하고, 에러처리 등이 있다. 

- PL/SQL은 선언부(실행부에서 참조할 모든 변수, 상수 등), 실행부(BEGIN과 END사이에 기술되는 영역), 예외부(실행부에서 에러가 발생했을 때 문장 기술)로 이루어져 있다. 

 

▼ PL/SQL을 활용한 저장형 객체 활용

  1. 저장된 프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
  2. 저장된 함수 : 일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
  3. 저장된 패키지 : 프로시저나 함수를 효율적으로 관리하기 위한 집합
  4. 트리거 : 특정 테이블에 삽입, 수정, 삭제 등의 데이터 변경 이벤트가 발생 시 DBMS에서 자동적으로 실행되도록 구현된 프로그램

 

(5) 프로그램 디버깅

1. 프로그램 디버깅의 개념

- 프로그램 디버깅은 프로시저가 입력 자료를 받아 출력을 올바르게 도출하는지에 관한 확인 과정이다. 

- 프로시저의 디버깅을 위해 SQL*Plus라는 도구를 이용한다. 

 

(6) 단위 테스트 도구

1. 단위 테스트 도구의 개념

- 단위 테스트 도구는 단위 테스트에서 구현된 프로시저의 적합성을 확인하기 위한 도구이다. 

- PL/SQL 테스트를 위해 DBMS_OUTPUT 패키지를 사용한다. 

 

 

(7) 쿼리 성능 측정

- 데이터베이스에서 프로시저에 있는 SQL 실행 계획을 분석, 수정을 통해 최소의 시간으로 원하는 결과를 얻도록 프로시저를 수정하는 사전 작업이다. 

- 쿼리 성능을 측정하는 방법은 EXPLAIN PLAN을 주로 활용한다. 

 

(8) 소스 코드 인스펙션

1. 소스 코드 인스펙션의 개념

- 데이터베이스 성능 향상을 위하여 프로시저 코드를 보면서 성능 문제점을 개선해 나가는 활동이다.

- 데이터 조작 프로시저 최적화를 위한 SQL 코드 인스펙션이 있다.

 

 

 

 

'정처기(필기) > 소프트웨어개발' 카테고리의 다른 글

인터페이스 구현  (0) 2022.06.01
알고리즘(Algorithm)  (0) 2022.05.31
애플리케이션 테스트 관리  (0) 2022.05.31
통합 구현  (0) 2022.05.30
데이터 입출력 구현  (0) 2022.05.28