본문 바로가기

05번. 3년 후, 기술사/▶ 소프트웨어공학

OR MAPPING

 

  1. OR-Mapping의 개요

    1. OR-Mapping의 개념

      1. 객체지향 프로그래밍 수행 시 설계할 클래스들과 데이터 저장소로 이용될 RDBMS Table간의 Mapping 기법
    2. OR-Mapping의 필요성

      1. 초기 객체지향 전문가들은 객체와 관계형 DB간의 심각한 구조적 불일치를 깨닫고 OODB를 창안
      2. 대부분의 프로젝트에서 OODB가 RDB만큼 안정성이 보장되지 않아 Risk가 존재하는 OODB가 확산되지 못함
      3. 객체지향 관점의 분석/설계/구현 방법론을 정보시스템 개발에 적용하기 위하여 관계형 DB와의 구조적인 연계(Mapping)를 고려
  2. RDBMS가 OODB로 전이하지 못하는 이유 및 클래스 Relationship의 종류

    1. RDBMS가 OODB로 전이하지 못하는 이유

      이유    설명   
      범용성 다수의 기업체들이 운영(C/S환경)하고 있는 시스템이 RDB를 사용   
      안정성    RDB를 사용하여 구축된 곳이 많아 안정성이 입증된 성숙한 기술
      용이성 응용시스템에서 뿐만 아니라 사용자가 쿼리를 이용하여 데이터를 다룰 수 있을 정도로 데이터 구조가 쉽게 구성되어 있음
      기 투자 비용    현재 조직적으로 가장 많은 투자가 일어난 기술임
      성능    OLTP 시스템에서 트랜잭션 처리 수행성능에 대해 최적화된 솔루션임
      통합연계성    널리 쓰이는 많은 종류의 툴들이 쿼리나 Report-Writing을 이용해 RDB와 연계하여 이용할 수 있는 것이 많음
      유지보수성    RDB를 설계/구현/유지보수 하는데 필요한 툴들이 많이 있음
    2. 클래스 Relationship의 종류

      Relationship    상세설명
      연관관계(Association) 클래스 간의 가장 일반적인 관계로 독자적으로 존재하는 클래스 간의 구조적인 관계를 나타냄
      집합관계(Aggregation)    Association의 특별한 형태로 전체(Whole)와 부분(Part)을 표현
      합성연관(Composition) Aggregation 관계 중에서 전체와 부분의 생명주기(즉, 생성과 소멸)이 동일한 경우 표현
      일반화(Generalization) 클래스간의 상속관계를 표현, 공통된 속석이나 오퍼레이션 등을 부모 클래스가 갖고, 각 서브 클래스는 자신만의 고유한 속성과 오퍼레이션을 가짐
  3. 구현단계에서 적용되는 OR-Mapping 기술

    1. 클래스(class)를 테이블(table)로 변환

      1. 클래스 인스턴스인 객체는 테이블의 로우 하나로 매핑
    2. 속성(attribute)을 컬럼(column) 으로 변환

      1. 클래스  인스턴스의 속성은 테이블의 컬럼으로 매핑
      2. 속성 매핑에는 응용 어플리케이션의 데이터 타입과 데이터베이스 데이터 타입간의 전환이 필요
      3. 오퍼레이션은 RDBMS의 경우 매핑이 되지 않음
    3. Class Relationship을  Relational Relationship으로 변환

      관계    변환
      Association(1:M관계) M쪽으로 1쪽의 Primary Key를 Foreign Key로 매핑
      Association(1:1관계)

      접근의 빈도수가 많은 쪽으로 상대방의 Primary Key가 Foreign Key로 등록

      둘이 합쳐서 하나의 클래스로 이뤄져도 되는지, 성능이나 다른 제약사항 때문에 나누어져야 하는지 확인

      Association(M:M관계 1안)

      M:M 관계는 새로운 Associated Table(Intersection Table)을 생성

      생성된 테이블은 양쪽 테이블의 Primary Key를 갖도록 설계

      Association(M:M관계 2안)

      M:M 관계를 풀기 위해 Association Class를 추가

      이때 Primary Key는 Composite Key나 단일 컬럼 Key로 구성 가능한데, OO에서는 단일 컬럼 Key구성을 권장

      Aggregation 구현상 창조하는 테이블에서 단순 Foreign Key로 참조되는 정도의 의미를 가짐
      Composition 전체와 부분의 생명주기가 동일하므로, Constraint로서 Delete Cascading을 설계하기도 함
      Generalization

      1안 : Super 클래스와 각 Sub 클래스를 별도의 테이블로 매핑

      2안 : Super 클래스가 Sub 클래스의 모든 속성을 포함하여 단일 테이블로 매핑

      3안 : Sub 클래스들이 Super 클래스의 속성을 상속받아 Sub클래스들을 테이블로 매핑

  4. OR-Mapping 적용 시 고려 사항 및 발전 전망

    1. OR-Mapping 적용시 고려사항

      1. 적용전략 측면

        1. 반드시 적용전 1개 이상 Framework 를 테스트 실시 후 선택
        2. 상황에 따라 다양한 도구를 유연하게 사용
      2. 기술적 인식 측면

        1. 성능향상을 위한 기술이라기 보다는 기본적으로 OR간의 불일치를 해결하는데 소요되는 기술이라는 인식 필요
        2. SQL을 잘 몰라도 개발을 가능하게 하는 기술이기보다는 SQL을 잘 아는 개발자가 DB와 관련된 반복적인 코딩없이 개발을 가능하게 하는 기술이라는 인식 필요
    2. OR-Mapping 발전전망

      1. 1996 ~ 1997년 경에 화두로 부상했다가 최근 이에 대한 언급이 많이 줄어든 상태임.
      2. 하지만 아직도 객체와 DB와의 매핑은 여전히 중요한 이슈로 남아있기 때문에 이를 자동화시키는 Mapping 툴도 현재까지 중요하게 평가되고 있음
      3. WebGain의 TopLink와 THOUGHT사의 Cocobase가 가장 많이 사용되고 있으며, OR-Mapping 시장의 약 절반 정도의 시장 점유율을 나타내고 있음


이 글은 스프링노트에서 작성되었습니다.

'05번. 3년 후, 기술사 > ▶ 소프트웨어공학' 카테고리의 다른 글

TDD  (0) 2011.11.23
Agile 방법론  (0) 2011.11.23