[정보처리기사도전기]#12 물리 데이터저장소 설계

Ben·2021년 7월 30일
0

정보처리기사도전기

목록 보기
13/16

제2절 물리 데이터저장소 설계

1. 물리 데이터저장소

(1) 물리 데이터 모델링

  • 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 DB 저장 구조로 변환하는 작업을 수행하는 과정이다.

(2) 논리 데이터 모델을 물리 데이터 모델 변환(Transformation)
[1] 엔티티-테이블 변환

  • 테이블(Table) : 테이블은 기본적으로 컬럼(Column)과 로우(Row)를 가진다. 각각의 컬럼은 지정된유형의 데이터 값을 저장하는 데 사용된다.

[2] 속성-컬럼 변환

  • 컬럼의 명칭은 속성의 명칭과 반드시 일치할 필요는 없으나 프로그래머와 사용자의 혼동을 피하기위해 가능한 표준화됨 약어를 사용한다.

[3] Primary UID를 기본키(Primary Key)로 변환

  • 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델에서는 기본키로 생성된다.

[4] Secondary(Alternate) UID를 Unique Key로 변환
[5] Relationship을 Foreign Key로 변환
[6] Business Constraints를 Check Constraints로 변환

2. ORM(Object-Relaional Mapping) 프레임워크

(1) ⭐️ ORM(Objecti-Relational Mapping, 객체-관계 매핑)

[1] 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.
[2] 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
[3] 객체 모델과 관계형 모델 간의 불일치가 존재하는데 ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

(2) ORM의 장단점

[1] 장점

  • 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
  • 재사용 및 유지보수의 편리성이 증가한다.
  • DBMS에 대한 종속성이 줄어든다.

[2] 단점

  • 완벽한 ORM 으로만 서비스르 구현하기가 어렵다.
  • 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 화용하기 어렵다.

(3) ORM 전환 방식

  • class(클래스), object(객체) -> table(relation)
  • instance(클래스의 인스턴스 객체) -> record(레코드)
  • 어트리뷰트(attribute) -> column(attribute)
  • unique identifier -> primary key
  • 클래스의 연산(Operation)은 별도로 대응되는 요소가 없으며, 응용프로그램에서 구현

(4) ORM(Object-Role Modeling)에서 클래스간의 관계 표현

  • 대표적으로 사용하는 모델링 언어인 uml을 통해서 클래스 관계를 확인할 수 있다.

[1] 연관 관계(1:1, 1:N, N:M)
[2] 집합(aggregation) 관계 : 구성요소(부분)가 없어도 전체 개념이 존재할 수 있다.
[3] 복합(composition) 관계 : 집합 관계의 강한 형태로서, 복합 관계에서 부분은 한 순간에 하나의 전체에만 포함된다.

(5) 일반적인 개발과 ORM 구축 개발과의 비교

특성일반적인 개발ORM 구축 개발
매핑 적용테이블 컬럼과 자바 클래스간 직젖ㅂ 매핑 필요개발자는 직접 객체지향 관점에서 처리 가능
유연성SQL 변경시 코드를 직접 변경하고 배표해야함매핑 정보의 수정만으로 적용 가능
표준 패턴패턴 없음매핑정보, XML등이 템플릿 형태로 적용됨
DB 제어직접적으로 DB 제어 가능Mapping 경우 직접적인 제어가 어려울 수 있음
활용기술SQLPersistence 프레임워크(Hibernate, iBatis,,,)

3. 트랜잭션 인터페이스

(1) 트랜잭션
[1] 한꺼번에 모두 수행되어야 할 일련의 데이터베이스 연산들.
[응용프로그램 = 하나 이상의 트랜잭션][트랜잭션 = 하나 이상의 데이터베이스 연산(SQL명령)]
[2] 병행 제어 및 회복 작업의 논리적 단위.

(2) 트랜잭션의 성질

[1] 원자성(atomicity) : 트랜잭션은 전부, 전무의 실행만이 있지 일부 실행으로 트랜잭션의 기능을 가질수는 없다.
[2] 일관성(consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관된 데이터베이스 상태로 된다라는 의미이다. 즉, 이 트랜잭션의 실행으로 일관성이 깨지지 않는다라는 의미.
[3] 격리성(isolation) : 연산의 중간결과에 다른 트랜잭션이나 작업이 접근할 수 없다라는 의미.
[4] 영속성(durability) : 트랜잭션의 일단 그 실행을 성공적으로 끝내면 그 결과를 어떠한 경우에라도 보장받는다 라는 의미.

(3) 트랜잭션의 원자성과 관련된 연산

[1] COMMIT : 트랜잭션의 성공적인 종료

  • 데이터베이스는 일관적인 상태에 놓임
  • 데이터베이스에 대한 경신 작업이 영구적으로 반영됨
  • 명시적 COMMIT(explicit COMMIT) : 데이터베이스 사용자가 COMMIT 명령을 직접 사용
  • 암시적 COMMIT(implicit COMMIT) : DBMS가 사용자 session 종료시 알아서 COMMIT

[2] ROLLBACK : 트랜잭션의 비정상적인 종료

  • 데이터베이스는 비일관적인 상태에 놓임
  • 데이터베이스에 대한 갱신 작업이 취소되어야 함(undo)

(4)트랜잭션 인터페이스 설계

[1] 입출력과 기능적 형태로만 작성된 트랜잭션에 대한 인터페이스를 설계하는 단계이다.
[2] 트랜잭션을 세부적으로 설계하는 것이 아니라, 트랜잭션의 전체적인 골격을 개발하고 인터페이스를 정의한다.

profile
프로그램을 만드는것을 업으로 삼은 사람입니다

0개의 댓글