[강정식의 오라클 이야기]II. 전용 View vs 공용 View 0 1 3,350

by 강정식 [강정식] view merging [2008.07.25 17:27:50]


1. 전용 View와 공용 View
    1) 전용 View
        - 전용 View는 하나의 프로그램 또는 하나의 SQL에서만 사용하기 위해 생성한 View를 의미합니다.

    2) 공용 View
        - 공용 View는 두개 이상의 프로그램 또는 SQL에서 사용하기 위해 생성한 View를 의미합니다.

2. 전용 View와 공용 View 접근 패턴
    1) 전용 View
        - 전용 View는 말 그대로 하나의 프로그램 또는 SQL에서만 사용되므로 여기서 사용될 때
          ’View Merging’이 안되는 부분을 쉽게 파악하여 적용 관리할 수 있습니다.

    2) 공용 View
        - 문제가 되는 것은 공용 View인데 View를 생성 또는 변경 시 해당 View가 어느 업무까지
         공유해서 사용될 지 정확히 파악하여 그 업무에서 사용하는 조인 컬럼들에 대해 해당 View에서
         가공되어 Merging이 안되는것을 방지해야 합니다.
        - 하지만 실제 프로젝트에서 View를 생성할 때 이 View가 어느영역까지 공유가 될지 미리 파악하여
         관리해야 하나 이렇게 관리하는곳은 그리 많지 않습니다. 그 이유는 여러가지가 있겠지만 몇가지만
         나열해보면 자신의 업무만 해결하면 OK되는 문화, 시간에 쫓기는 프로젝트의 특성, 전체 Object를
         관리하는 체계 미흡등을 꼽을 수 있습니다.

3. 공용 View을 생성 및 관리시 상도덕이 필요한 이유
    - 데이터베이스의 가장 큰 특징 중 하나는 바로 사용자가 데이터를 공동으로 사용하는 것입니다.
    - 즉, 데이터베이스에서 사용하는 모든 Object(Table, Index, View 등)는 사용자가 공유하여
     사용되고 있는데 이들이 유기적으로 잘 연결되어 데이터가 흘러가야 작게는 데이터를 효율적으로
     액세스 할 수 있고 크게는 시스템의 자원을 효율적으로 사용하여 성공적인 프로젝트를 수행할
     수 있습니다.
    - 그러나 이런 Object 중 하나인 View는 업무담당자들이 비지니스 로직을 SQL로 구현하여 만들기
     때문에 이런 공용 View를 만들 때 데이터가 View 안으로 잘 들어갔다 나올 수 있도록 환경을
     만들어 주어야 하나, 이런 부분에 대한 고려 없이 비지니스 로직만 구현하기 ㅤㄸㅒㅤ문에 문제가
     되는 것입니다.
    - 그러므로 View를 만드는 업무담당자들은 반드시 이 View는 나만이 사용하는 것이 아니라
     다른 사람들도 사용할 수 있기 ㅤㄸㅒㅤ문에 이 View를 사용할 때 데이터를 잘 주고 받을 수 있도록
     생성 및 관리를 해야 합니다.

4. 공용 View를 관리하는 방법 제안
    - 프로젝트는 일반적으로 EA(Enterprise Architecture)의 방법을 많이 사용하고 있습니다.
    - EA의 흐름도는 DA(Data Architecture) -> TA(Technical Architecture) -> AA(Application Architecture)
     순서로 진행을 하는데 DA를 구성할 때 ERD(Entity Relationship Diagram)을 사용하여 전체적인 윤곽을
     잡아나가고 있습니다.
    - 제가 제안드리고자 하는 방법은 바로 이 ERD와 같이 Entity간의 흐름도를 View에도 도입을 시키는 것입니다.
    - 즉 View는 Entity간의 집합을 가지고 또다른 집합을 만드는 것이므로 이 집합간의 관계를 ERD처럼
     도식화 시킨다면 View 안의 연결고리들을 미리 파악하여 View안의 Select-List절을 가공하여 침투를
     못시키는 일을 방지할 수 있기 때문입니다.
    - 물론 이 방법론은 Entity처럼 고정적이지 않고 가변적인 View를 가지고 접근하기 때문에 쉬운 방법은
      아니나 구현만 된다면 어떤 프로젝트든 자원을 30%이상 감소 시킬 수 있을것으로 생각됩니다.

5. 공용 View 생성 및 관리 시 점검 사항
    1) View 안의 컬럼 가공
        ① DECODE(), NVL(), SUBSTR() 같은 함수를 사용하여 가공하는 경우
        ② Scalar Subquery를 사용하여 가공하는 경우
        ③ User Defined Function을 사용하여 가공하는 경우
    2) View안의 Local Hint 사용
    3) VIew안에서 Alias 전략적으로 사용하는 방법
    4) View Merging을 방해하는 기타 요소들

다음 시간에는 이 5번 사항 중 1)번에 대해 살펴보도록 하겠습니다.

읽으시고 이상한점이나 궁금하신 내용이 있으시면 리플 달아주시기 바랍니다.

by 이지웅 [2008.07.28 09:48:19]
좋은 이야기입니다. ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입