'RDBMS'에 해당되는 글 6건

  1. 2009/03/31 Bywoong MSSQL : 전문검색(Full Text Search) 간단정리
  2. 2008/06/23 Bywoong TmaxSoft Tibero RDBMS 3.0 설치
  3. 2008/06/23 Bywoong TmaxSoft Tibero RDBMS 3.0 SP1 Trial
  4. 2008/05/07 Bywoong RDBMS 조인은 성능을 저하시키지 않는다
  5. 2008/01/21 Bywoong 국산 DBMS 큐브리드
  6. 2008/01/17 Bywoong Oracle 이 BEA를 Sun이 MySQL을 인수. (2)
[알림] 삭제된 동영상 및 이미지나 깨진 링크, 저작권에 문제가 될 소지가 있는 내용은 이곳에 알려주시면 바로 조치하도록 하겠습니다. 감사합니다. - Fortune Cookie

 

전문검색(Full Text Search)

Text형과 같은 색인을 생성할 수 없는 컬럼에 색인을 만들어서 검색시 속도를 빠르게 향상 시키는 기능입니다.

 

전문검색이 일반SQL색인과의 차이점(MSSQL)

  1. DB에 저장되지 않으며, 별도의 파일로 색인이 저장된다.
  2. 자동으로 갱신되지 않으며, 스케쥴을 사용하거나 관리자가 필요시 갱신작업을 한다.
  3. INDEX를 사용하지 않고, 저장프로시저를 사용하여 생성한다.
  4. TABLE마다 하나의 색인이 존재한다.
  5. 카탈로그로 그룹화가 가능하다.

SQL200 Full Text Search 서비스 구축 관련글 : http://sqler.pe.kr/sql2k/152.asp

 

관련링크

2009/03/31 14:07 2009/03/31 14:07
관련글타래
    받은 트랙백이 없고, 댓글이 없습니다. 2752번 조회되었습니다.

    댓글을 달아 주세요

    [로그인][오픈아이디란?]

    구독안내 주 2~3회 새글이 올라옵니다. 블로그 방문없이 업데이트 되는 글을 구독하세요. RSS . E-Mail . HanRSS . WZD . Google Reader . Bloglines . Delicious Bookmark this on Delicious
    [알림] 삭제된 동영상 및 이미지나 깨진 링크, 저작권에 문제가 될 소지가 있는 내용은 이곳에 알려주시면 바로 조치하도록 하겠습니다. 감사합니다. - Fortune Cookie
    * Tibero RDBMS 3 소개 및 다운로드 : http://www.bywoong.com/1391

    [Tibero 3.0 설치]

    1. Console에서 install 실행 파일을 실행한다.
    사용자 삽입 이미지

    2. 설치디렉토리 경로를 입력한다. (default는 [user의 홈 디렉토리]/tibero3 이 된다)
    사용자 삽입 이미지

    3. 원하는 SID값을 입력한다. (default는 tibero이다.)
    사용자 삽입 이미지

    4. 설치옵션을 선택한다. (Typical로 설치)
    사용자 삽입 이미지

    Typical 은 default 의 port번호와 SID 그리고 DB_BOLCK_SIZE를 이용해 install 된다. 참고로 default의 listener port 번호는 8629이며 DB_BLOCK_SIZE 는 8K 이다.

    Customize는 사용자로 하여금 Listner Port, DB 블록 사이즈, DATA_FILE_PATH 의 경로를 입력받는다.


    5. 설치내용확인
    사용자 삽입 이미지

    6. 인스톨이 진행된다.
    사용자 삽입 이미지

    7. 인스톨이 완료되고 엔터를 치면 인스톨을 빠져나간다.
    사용자 삽입 이미지


    [설치 후 확인]

    TiBero 설치 후 설치한 USER의 환경 파일에 다음의 내용이 추가된다.

    • TB_HOME
      특정 release의 티베로 소프트웨어가 설치된 디렉토리이다. 설치 시에 선택한 install folder가 이에 속한다.
      설치시에 명시 하지 않으면 default 로 <user’s home directory>/tibero3가 TB_HOME이 된다.

    • TB_SID
      Install 과정에 사용된 티베로 SID 가 이에 해당 된다.
      Install 과정에서 특별히 명시 하지 않으면 SID는 tibero 가 된다.

    • LD_LIBRARY_PATH
      티베로 서버 사용시 필요한 공유 라이브러리를 사용하기 위한 PATH 필요한 라이브러리 들은 TB_HOME/lib , TB_HOME/client/lib 에 모두 있다.

    • PATH
      티베로 서버를 사용 하기 위한 PATH 이다.
      기본적으로 TB_HOME/bin , TB_HOME/client/bin 이 PATH 에 잡힌다.

    User(tibero)의 환경 파일을 적용하기 위한 명령어를 실행한다.

    사용자 삽입 이미지
    혹은
    사용자 삽입 이미지
    환경변수를 확인한다.
    사용자 삽입 이미지


    [Tibero 3.0  데이터베이스 생성]

    1. nomount모드로 boot를 한다.
    사용자 삽입 이미지
    boot시 아래와 같은 파라미터 에러가 발생하면
       sysctl -w kernel.shmmax=335544320 로 환경 파라미터를 설정한 후 다시 boot한다.
    사용자 삽입 이미지

    sys유저로 접속하고 create database 구문으로  DB를 생성한다.
    사용자 삽입 이미지
    사용자 삽입 이미지
    DB가 생성되었으면, tbdown, tbboot를 진행한다.
    사용자 삽입 이미지
    $TB_HOME/scripts/system.sh을 수행한다.
    사용자 삽입 이미지
    Tablespace 생성한다.
    사용자 삽입 이미지
    사용자계정을 생성한다.
    사용자 삽입 이미지
    tibero process를 확인 하여 정상적으로 기동 되는지 확인한다. 정상적으로 기동된것이 확인 되었다면 설치가 완료 된것이다.
    사용자 삽입 이미지

    Tibero 3.0을 설치 & 설정하면서 Oracle의 그것과 매우 흡사하다(거의 동일)는 느낌을 받았다. Tibero의 성능과 안정성 그리고 무엇보다 Tool에 큰 기대를 가져본다. 설치후기

    2008/06/23 21:32 2008/06/23 21:32
    관련글타래
      받은 트랙백이 없고, 댓글이 없습니다. 3647번 조회되었습니다.

      댓글을 달아 주세요

      [로그인][오픈아이디란?]

      구독안내 주 2~3회 새글이 올라옵니다. 블로그 방문없이 업데이트 되는 글을 구독하세요. RSS . E-Mail . HanRSS . WZD . Google Reader . Bloglines . Delicious Bookmark this on Delicious
      [알림] 삭제된 동영상 및 이미지나 깨진 링크, 저작권에 문제가 될 소지가 있는 내용은 이곳에 알려주시면 바로 조치하도록 하겠습니다. 감사합니다. - Fortune Cookie
      [티베로 RDBMS 소개]
      RDBMS는 각종 업무 시스템에 발생하는 다양한 데이터를 체계적으로 조회, 저장, 처리할 수 있는 데이타베이스관리 시스템으로써, 기업 비즈니스 구현의 기반이 되는 데이터베이스 인프라를 구성하는핵심 소프트웨어입니다.  

      Tibero RDBMS는 대용량 데이터 처리에 최적화된 고성능 DBMS를 지향하였으며, 데이터 처리 및 관리에 대한 안정성을 제공할 뿐만 아니라 편리한 개발환경 및 운영환경을 제공합니다. 특히, GS인증을 획득하여 안정성과 성능을 인정받은 대표적인 관계형 데이터베이스 관리 시스템입니다.  

      Tibero RDBMS는 TTA (Tibero Thread Architecture)를 채택하여 성능 및 안정성을 크게 향상 시켰습니다. 혁신적인 구조로 한정된 서버 프로세스만을 사용함으로써 CPU 및 메모리 등의 자원을 효율적으로 사용하고 프로세스 간의 컨텍스트 스위칭(Context Switching)을 대폭 줄여줌으로써 전체 시스템 성능을 대폭 향상시켰으며, 개선된 엔진레벨의 Locking 메커니즘을 통해 안정성을 보장합니다.  

      또한, Partitioning, Database Link, High Availability 등의 RDBMS의 핵심 기능을 제공하여 Mission Critical 업무를 완벽하게 지원하며, 다양한 Tool을 제공하여 기존의 대용량 DBMS를 손쉽게 마이그레이션을 할 수 있습니다.  

      위와 같은 탁월한 성능, 검증된 안정성 및 다양한 기능을 바탕으로, Tibero RDBMS는 고객 TCO의 획기적인 절감이 가능하게 하는 차세대 RDBMS입니다. [브로셔]  

      [티베로 RDBMS 3.0 sp Trial 라이센스 안내]
      본 화면에서 제공하는 Tibero RDBMS 3.0 sp Trial는 일부 기능이 제한된 Trial License 가 내장되어 있습니다.     

      1) 체험판 라이센스는 90 일 동안, 유효 세션수 10 개로 제한 되어 있습니다.   
      2) 기간이 종료되었거나 추가로 License (Trial)가 필요하신 고객께서는 데모라이센스 발급신청 화면을 통하여 재발급 받을 수 있습니다.   
      3) 기타 다른 문의 사항이 있으면, tibero@tmax.co.kr 또는 마케팅 티베로 담당자에게로 (02-6288-2183)로  문의 바랍니다.

      [다운로드]
      Tibero RDBMS 3.0 SP1 Trial 제품을 다운로드 받으시려면 아래의 리스트에서 고객의 시스템에 맞는 플랫폼을 선택하시기 바랍니다. Windows 및 UNIX 등 기타 다른 플랫폼은 곧 제공될 예정이며 문의가 있으시면,
      tibero@tmax.co.kr 또는 마케팅 티베로 담당자에게로 (02-6288-2183) 문의바랍니다

      Tibero 3.0 Trial 플랫폼 선택
        - for Linux (x86) 32-bit
        - for Linux (x86) 64-bit

      글.TmaxSoft Technical Network
      참고.TIBERO 3 온라인 매뉴얼
      2008/06/23 21:16 2008/06/23 21:16
      관련글타래
        트랙백은 하나, 댓글이 없습니다. 3590번 조회되었습니다.

        댓글을 달아 주세요

        [로그인][오픈아이디란?]

        구독안내 주 2~3회 새글이 올라옵니다. 블로그 방문없이 업데이트 되는 글을 구독하세요. RSS . E-Mail . HanRSS . WZD . Google Reader . Bloglines . Delicious Bookmark this on Delicious
        [알림] 삭제된 동영상 및 이미지나 깨진 링크, 저작권에 문제가 될 소지가 있는 내용은 이곳에 알려주시면 바로 조치하도록 하겠습니다. 감사합니다. - Fortune Cookie

        RDBMS 이론이 소개 된 지 어느덧 30년이 지났다. 30년의 긴 세월이 흐르면서 RDBMS는 우리의 일상에도 많은 부분을 차지하게 된 것 같다. 우리가 사용하는 대부분의 웹 사이트에서 RDBMS를 사용하고 있으며 이로 인해 우리의 정보는 체계적으로 관리되고 있을 것이다. RDBMS의 보급화와 함께 RDBMS의 기술은 계속 향상되고 있지만 이 중에서 RDBMS의 탄생과 함께 태어난 조인은 그 중요성에 비해 많은 천대를 받는 것 같다. 이제라도 우리는 RDBMS의 꽃인 조인을 정확히 이해해 보자. 권순용 | kwontra@hanmail.net

        지금도 수많은 사이트에서 데이터 연결에 대한 불신을 가지고 있는 것이 현실이다. 어떤 사이트에 가보면 데이터 연결 방법 중에 하나인 조인을 사용하지 못하게 하고 또 어떤 사이트에 가보면 서브쿼리를 사용하지 못하게 하는 것을 지켜보는 경우가 있었다. 물론, 서브쿼리도 데이터 연결의 한가지 방법이며 조인과 거의 유사하게 수행된다.

        분명 조인은 RDBMS의 꽃이며 이러한 핵심 기술을 이용하지 않는다면 RDBMS를 이용해서 무슨 효과를 기대할 수 있겠는가? 조인의 실제 수행 방식을 이해하지 않으려 하고 조인을 잘못 사용했기 때문에 나타나는 현상을 그대로 받아들이고 그것만을 가지고 모든 것을 평가하는 것이 현실인 것 같다.

        조인의 수행 방식을 정확히 이해했다면 우리는 이와 같은 성능 저하 현상을 바로 잡을 수 있다는 사실을 명심해야 할 것이다. ‘조인은 성능을 저하시킨다’는 잘못 알고 있는 사실을 다시 확인해 보는 기회로 삼아보았으면 좋겠다.

        조인은 데이터를 감소시킨다

        조인은 현재 데이터베이스의 크기를 감소시킬 수 있는 유일한 방법이다. 이와 같이 이야기한다면 의아해 할 것이다. 조인이 어떻게 데이터베이스의 크기를 감소시킬 수 있겠는가? 당연히 조인을 이용하여 데이터베이스의 크기를 감소시킬 수는 없다.

        여기서 말하는 것은 데이터베이스의 정규화를 거치게 되면 데이터베이스에 존재하는 테이블은 분리되며 테이블이 분리된다면 일반적으로 데이터베이스의 크기는 감소하게 된다. 이와 같이 테이블을 분리하여 두 개 이상의 테이블에서 우리가 원하는 데이터를 추출하기 위해서는 조인을 이용해야 한다는 것이다.

        이와 같기 때문에 정확히 이야기한다면 데이터를 감소시키기 위해 조인을 사용한다기 보다는 크기가 감소된 데이터에 대해 조회를 수행하기 위해 조인을 사용한다는 것이다.

        예를 들어, 어느 회사에 직원 테이블이 존재하며 또 하나의 경우는 사원 테이블과 부서 테이블이 별도로 존재한다고 가정하자. 회사에는 1,000,000명의 직원이 존재하며 해당 회사에는 1,000개의 팀이 존재한다고 가정하자. 그렇다면 아래와 같이 구성될 수 있을 것이다.

        <그림>처럼 테이블을 구성했다고 가정하자. 그렇다면 각각의 테이블의 크기는 어떻게 되겠는가? 먼저, 직원 테이블을 확인해 보자. 직원 테이블의 하나의 데이터의 길이는 1055Byte의 길이이다. 또한, 직원 테이블에는 1,000,000건의 데이터가 저장되므로 해당 테이블의 전체 크기는 데이터만 1,000,000건*1055Byte=1055MB가 되므로 약 1GB 정도의 크기가 된다. 그렇다면 위의 그림에서 밑에 존재하는 사원 테이블과 부서 테이블을 분리한 경우는 어떠한가?

        사용자 삽입 이미지

        <그림> 조인이 필요없는 테이블과 조인이 필요한 테이블

        사원 테이블은 1,000,000건의 데이터가 저장되어 있으며 하나의 데이터의 길이는 535Byte가 된다. 사원 테이블의 전체 데이터 건수는 1,000,000건이므로 1,000,000*535 Byte = 535MB가 되므로 사원 테이블의 크기는 535MB 정도가 된다. 그렇다면 부서 테이블의 크기는 어떠한가? 부서 테이블의 하나의 데이터의 길이는 525 Byte가 된다.

        부서 테이블에는 1,000건의 데이터가 존재하므로 테이블의 전체 크기는 1,000*530Byte이므로 530KB의 크기가 된다. 따라서 위의 그림의 아래와 같이 부서 테이블과 사원 테이블로 구성한다면 두 테이블의 크기를 모두 합해도 535MB 정도의 크기가 될 것이다.

        그렇다면 위의 테이블 크기 및 구조를 통해 우리는 무엇을 알 수 있겠는가? 우리가 유추해 낼 수 있는 항목은 크게 두 가지이다.

        첫 번째로 두 가지 경우에 대해 모든 데이터를 추출하기 위해 액세스해야 하는 데이터의 양이다. 위의 그림에서 직원 테이블로만 구성되어 있는 경우를 확인해 보자. 직원 테이블의 데이터를 모두 추출하고자 한다면 직원 테이블의 크기만큼 디스크 I/O가 발생하게 된다. 따라서, 직원 테이블의 크기인 1055MB만큼의 디스크 I/O가 발생하게 된다.

        반면에 위의 그림에서 사원 테이블과 부서 테이블을 분리한 경우는 어떠한가? 사원 테이블과 부서 테이블을 액세스하여 모든 데이터를 추출해야 한다면 각각의 테이블을 모두 액세스해야 할 것이다. 그렇기 때문에 위에서 계산한 것과 같이 535MB의 디스크 I/O가 발생하게 된다.

        이와 같다면 과연 어떻게 테이블을 구성해야 하겠는가? 물론, 위의 그림에서 테이블을 어떻게 구성하는가에 상관 없이 결과는 동일한 데이터가 추출될 것이다. 직원 테이블로만 구성한 경우에는 1055MB의 디스크 I/O를 발생시키게 되며 사원 테이블과 부서 테이블로 분리하여 모든 데이터를 액세스한다면 535MB의 디스크 I/O를 발생시키게 된다.

        디스크 I/O를 통해 확인한다면 직원 테이블로 구성하는 것보다는 사원 테이블과 부서 테이블로 분리하는 형태를 선택해야 할 것이다. 사원 테이블과 부서 테이블로 분리하는 형태를 선택한다면 우리는 더 적은 디스크 I/O를 통해 원하는 모든 데이터를 추출할 수 있을 것이다.

        두 번째로 원하는 데이터를 추출하기 위한 데이터의 액세스 방법을 예상할 수 있을 것이다. 직원 테이블 하나로 구성하는 경우에는 하나의 테이블만 존재하게 되므로 하나의 테이블을 통해 모든 데이터를 액세스할 수 있게 된다.

        그렇기 때문에 인덱스가 존재한다면 인덱스를 이용하는 수행 방식을 이용하거나 또는 인덱스가 존재하지 않는다면 인덱스를 이용하지 않고 테이블을 처음부터 끝까지 액세스하게 될 것이다. 반면에 사원 테이블과 부서 테이블로 분리하는 경우는 두 테이블의 데이터를 동시에 추출하기 위해서는 조인을 사용해야 할 것이다.

        이와 같이 테이블을 분리한다면 전체 데이터의 크기는 감소한다. 데이터의 감소는 우리에게 많은 혜택을 주게 된다. 이러한 데이터의 감소를 위해서는 테이블을 분리해야 하며 분리된 테이블에서 원하는 데이터를 추출하기 위해서는 조인을 이용해야 한다. 이처럼 대용량 데이터베이스의 데이터를 감소시키기 위해서는 조인은 필수 불가결할 것이다.

        조인을 수행하기 위한 경우의 수를 이해하자

        조인을 수행하기 위해서는 다양한 경우의 수가 존재한다고 것을 이해하겠는가? 그렇다면 과연 조인 방식에는 어느 정도 다양한 경우의 수가 존재하는 것일까? 그 중 어떤 조인 방식이 최적의 성능을 보장하겠는가? 이제부터 조인을 수행하기 위한 경우의 수에 대해 확인해 보자.

        SQL> SELECT COL1, COL2, COL3
        FROM TAB1, TAB2, TAB3
        WHERE TAB1.KEY1 = TAB2.KEY2
        AND TAB2.KEY2 = TAB3.KEY3;

        위와 같은 기본적인 조인 SQL을 수행한다고 가정하자. SQL은 데이터베이스에 존재하는 테이블의 데이터를 액세스하는 언어이다. 그렇다면 위의 조인 SQL이 수행될 수 있는 경우의 수에는 어떤 경우가 존재하는가? 여기서 말하는 경우의 수는 조인이 수행되는 방법을 의미한다. 조인이 수행될 수 있는 경우의 수는 아래와 같은 두 가지 요소에 의해 다양하게 발생할 수 있다.

        ·테이블의 조인 순서-먼저 액세스되는 테이블과 뒤에 액세스되는 테이블

        ·조인 방식-중첩 루프 조인, 해쉬 조인, 소트 먼지 조인

        첫 번째로 위의 요소 중 테이블의 조인 순서를 확인해 보자. 조인은 두 개 이상의 테이블에서 필요한 데이터를 추출하게 되므로 먼저 액세스하는 테이블과 뒤에 액세스하는 테이블이 존재하게 된다. 그렇기 때문에 세 개의 테이블에 대해 조인을 수행하게 된다면 조인 순서는 3*2*1=6의 경우의 수가 존재하게 된다.

        예를 들어, TAB1 테이블이 먼저 액세스되고 뒤에 TAB2 테이블이 액세스되며 마지막에 TAB3 테이블이 액세스되는 조인 순서도 이 경우의 수에 포함이 될 것이다. 결국, 테이블 조인 순서에 의해 발생할 수 있는 경우의 수는 6개가 된다.

        두 번째로 조인 방식에 의한 경우의 수를 확인해 보자. 조인 방식은 조인을 수행하는 내부 수행 방법을 의미한다. 앞서 언급했듯이 조인은 세 가지 방식이 존재하게 된다. 따라서, 조인 방식은 세 가지의 경우의 수가 존재할 것이다.

        이와 같다면 해당 조인 SQL에서 최종적으로 발생하는 경우의 수는 어떻게 되겠는가? 두 가지 경우의 수의 곱이 전체 경우의 수가 될 것이다. 그렇기 때문에 전체 경우의 수는 6*3=18가지의 경우의 수가 존재하게 된다.

        예를 들어, TAB1 테이블, TAB2 테이블 및 TAB3 테이블 순으로 조인이 수행되며 TAB1 테이블과 TAB2 테이블은 해쉬 조인을 사용하고 그 결과 값과 TAB3 테이블은 중첩 루프 조인을 수행하는 경우도 18가지의 경우의 수에 포함될 것이다.

        이와 같이 하나의 조인 SQL은 우리가 생각지도 않은 다양한 경우의 수가 존재하며 해당 조인 SQL이 수행될 경우에는 18가지 경우의 수 중 하나의 방법을 선택하여 조인 SQL을 수행하게 된다.

        그렇다면 조인 SQL의 수행을 위한 경우의 수와 성능은 어떤 관계를 가지게 되는가? 이는 성능과 매우 밀접한 관계를 가지게 된다. 위의 예제에서 18가지의 경우의 수중 최적의 성능을 보장하는 경우는 몇 가지 안 된다. 나머지 경우의 수는 성능을 저하시키는 경우에 해당된다. 이제부터 우리는 이러한 조인의 경우의 수를 고려하여 조인 SQL을 작성해야만 성능을 보장 받을 수 있을 것이다.

        조인의 성능은 다양하다

        전체 데이터를 액세스하는 경우에는 하나의 테이블을 액세스하는 경우보다는 분리된 테이블의 데이터를 액세스하는 경우에 디스크 I/O가 감소했다. 디스크 I/O만 고려한다면 성능과 관련된 모든 항목은 고려된 것인가? 그것만은 아닐 것이다. 그렇다면 성능 관련해서 과연 무엇을 고려해야 하는가?

        그것은 분리된 테이블에서 원하는 데이터를 추출하기 위해 사용하는 조인의 수행 방식이다. 하나의 테이블을 액세스한다면 인덱스를 이용한 테이블 액세스 방식 또는 테이블을 처음부터 마지막까지 액세스하는 테이블 전체 스캔 방식이 존재하게 된다. 이와 같이 하나의 테이블을 액세스한다면 매우 단순한 액세스가 발생하게 된다.

        하지만, 조인을 이용한다면 이와 같이 단순한 방식으로만 수행되는 것은 아니다. 조인을 수행하기 위한 조인 방식이 존재하며 이와 같은 조인 방식을 이용하여 조인을 수행하게 된다.그렇다면 조인 방식에는 어떠한 것이 존재하는가?

        ·중첩 루프 조인(NESTED LOOP JOIN)

        ·해쉬 조인(HASH JOIN)

        ·소트 머지 조인(SORT MERGE JOIN)

        위와 같은 조인 방식이 존재한다는 것은 무엇을 의미하는가? 하나의 조인은 위의 방법 중 하나의 조인 방식을 이용할 수도 있으며 경우에 따라서는 위의 조인 방식 중 하나의 조인 방식이 아닌 두 개 이상의 조인 방식을 이용할 수도 있다.

        이는 무엇을 의미하는가? 경우의 수가 많다는 것은 다양한 처리 방법이 존재하는 것이며 이와 같이 모든 경우의 조인 방법이 동일한 성능을 보장할 수는 없을 것이다. 그렇기 때문에 어떻게 수행되는가에 따라 성능을 보장할 수도 있고 성능을 저하시킬 수도 있을 것이다.

        결국, 하나의 테이블을 액세스하는 경우에는 SQL의 실행 계획이 매우 단순하기 때문에 거의 예외가 없지만 두 개 이상의 테이블에서 데이터를 추출하는 조인의 경우에는 위와 같이 많은 경우의 수가 존재하게 된다.

        이와 같이 존재하는 많은 경우의 수에는 하나의 테이블로 구성하여 데이터를 액세스하는 경우보다 성능이 저하되는 경우도 존재하며 또는 하나의 테이블로 구성하여 데이터를 액세스하는 경우보다 성능이 더 좋아지는 경우도 존재하게 된다. 일반적으로 많은 경우의 수는 하나의 테이블로 구성하여 데이터를 액세스하는 경우보다 성능이 저하된다.

        문제는 여기에 존재하게 된다. 조인을 수행하는 많은 경우의 수가 단일 테이블을 액세스하는 경우보다 성능이 저하될 수 있으며 이와 같은 경우 중 하나의 수행 방식이 선택된다면 우리는 조인이 항상 성능을 저하시킨다는 고정관념에 빠지게 된다. 그렇게 된다면 이와 같은 성능 저하를 경험한 사람은 다시는 조인을 사용하지 않고 단일 테이블로 구성하여 조인을 사용하지 않으려 할 것이다.

        이와 같다면 데이터는 자연스럽게 증가하게 된다. 과연, 이것이 올바른 방법인가? 조인을 사용하는 경우에 다양한 수행 방식 중 가장 최적의 조인 방식을 선택한다면 어떻게 되겠는가? 이와 같다면 단일 테이블을 액세스하는 경우보다 조인을 이용하는 경우가 더 좋은 성능을 보장할 수 있을 것이다. 여기서 우리는 결론을 내릴 수 있을 것이다.

        테이블을 분리함으로써 우리는 조인을 사용해야 하며 조인을 수행하기 위한 방식에는 다양한 경우의 수가 존재하게 된다. 다양한 경우의 수 중 우리는 최적의 조인 방식을 찾아야만 한다는 것이다. 이 것이 조인을 효과적으로 사용하면서 데이터를 감소시킬 수 있는 유일한 방법이 될 것이다.
         
        조인은 다양하게 표현된다

        앞에서 언급한 SQL의 경우는 누가 보더라도 조인이라는 것을 이해할 것이다. 과연, 분리된 테이블에서 원하는 데이터를 추출하는 방법에는 위와 같이 FROM 절에 필요한 테이블을 나열하는 방법밖에는 존재하지 않는 것일까? 이와 같은 방법 외에도 여러 가지 방법으로 분리된 테이블의 데이터를 연결할 수 있다.

        ·스칼라 서브쿼리-SELECT 절에 SELECT 절을 사용하는 데이터 연결

        ·서브쿼리-WHERE 절에 SELECT 절을 사용하는 데이터 연결

        위와 같은 종류가 중요한 것은 아니다. 이와 같은 종류도 모두 조인에 해당하기 때문에 두 개 이상의 테이블에서 필요한 데이터를 추출하게 되며 그렇기 때문에 먼저 액세스되는 테이블과 뒤에 액세스되는 테이블이 존재하게 된다.

        물론, 조인 방식도 앞서 언급한 세 가지 방식 중 하나를 이용하게 된다. 이와 같기 때문에 데이터 연결을 수행하는 대부분의 방식은 다양한 경우의 수가 존재하며 이 중 성능을 보장하는 경우는 몇 가지 존재하지 않게 된다.

        결국, 테이블 분리에 의한 데이터의 연결을 수행하는 방식은 다양한 형태로 존재한다. 하지만, 대부분의 데이터 연결 방식이 다양하게 수행된다. 여기서 중요한 것은 다양한 경우의 수에서 성능을 보장하는 경우의 수는 많지 않다는 것이다. 그렇기 때문에 우리의 역할은 다양한 경우의 수에서 최적의 경우의 수를 찾아야 한다는 것이다. 이와 같이 최적의 경우의 수를 찾지 못한다면 우리는 평생 조인을 사용하지 말고 단일 테이블로 구성하여 단순 액세스를 수행해야 한다고 주장하게 될 것이다.

        하지만, 최적의 성능을 보장하는 경우의 수를 찾아냈다면 드디어 조인의 혜택을 제대로 누릴 수 있게 되는 것이다. 조인은 절대 성능 저하의 아키텍처를 가지고 있지 않다. 단지, 우리가 모르고 사용하기 때문에 성능 저하를 발생시킨다고 생각하게 되는 것은 아닌가 생각한다.
        경영과컴퓨터 [2008년 2월호] 출처 DBguide.net

        2008/05/07 14:47 2008/05/07 14:47
        관련글타래
          받은 트랙백이 없고, 댓글이 없습니다. 1943번 조회되었습니다.

          댓글을 달아 주세요

          [로그인][오픈아이디란?]

          구독안내 주 2~3회 새글이 올라옵니다. 블로그 방문없이 업데이트 되는 글을 구독하세요. RSS . E-Mail . HanRSS . WZD . Google Reader . Bloglines . Delicious Bookmark this on Delicious
          [알림] 삭제된 동영상 및 이미지나 깨진 링크, 저작권에 문제가 될 소지가 있는 내용은 이곳에 알려주시면 바로 조치하도록 하겠습니다. 감사합니다. - Fortune Cookie

          앞으로 큐브리드에 대해 좀 알아보기 위하여, 큐브리드 소개페이지를 스크랩해두었습니다.

          관련 큐브리드포럼

          사용자 삽입 이미지
          "큐브리드는 관계형 데이터베이스 엔진을 기반으로 객체지향 기능이 추가된 엔터프라이즈급 DBMS로서, 국내외 10,000 카피 이상의 현장 적용을 통하여 미션 크리티컬 업무에서 요구하는 성능, 안정성, 확장성, 가용성을 보장하고 있습니다.

          또한, 제품의 간편한 설치 및 GUI (Graphic User Interface) 기반의 클라이언트 툴을 제공함으로써 개발자 접근성 및 관리편의성을 증대하고 있습니다.

          큐브리드는 국내 No. 1 인터넷 기업 NHN과 차세대 인터넷 서비스용 DBMS를 공동으로 개발하고 있으며, 이를 기반으로 인터넷 서비스 환경에 최적화된 DBMS를 제공하고 있습니다. " - 글 큐브리드 제품소개

          | 제품 |

           
          데이터베이스 기능 비교 - CUBRID, SQL Server, MySQL - 2008-01-09
          CUBRID/MySQL/MSSQL 타입 비교 - 2008-01-03
          NHN NBD 벤치마크 결과 공개 - CUBRID vs. MySQL - 2007-11-30
          큐브리드 7.3 추가 기능 들여다보기 - 2007-10-30
          게임 DB를 위한 큐브리드 구조 - 2007-06-28
          큐브리드 7.0 제품 소개
          인터넷 쇼핑몰에서의 DBMS 벤치마크 테스트

          | 튜토리얼 |

           
          큐브리드 이해하기 - 스캔(Scan) - 2007-11-29
          큐브리드 GLO (Generalized Large Object) 사용하기 - 2007-11-05
          큐브리드 vs. MS-SQL 데이터 타입 비교 및 처리 방법 - 2007-11-05
          큐브리드 객체지향 개념 및 지원형태 - 2007-11-05
          AquaDataStudio에서 큐브리드 사용하기 - 2007-11-05
          phpCubAdmin으로 웹에서 큐브리드 관리하기 - 2007-10-18
          큐브리드에서 UTF-8 사용하기 - 2007-09-20
          큐브리드 응용의 성능 높이기 - 그누보드4 개선 사례 - 2007-09-04
          Lock timeout 발생시 모니터링 및 조치방안 - 2007-08-13
          큐브리드 페이징 기법 - 2007-08-13
          큐브리드에서 제공하는 툴과 응용 프로그램을 통한 대량의 데이터 입력 방법 - 2007-08-13
          큐브리드 7.0 PHP 사용하기 - Unix/Linux - 2007-06-11
          큐브리드 7.0 복제기능 따라하기 - 2007-06-01
          큐브리드 7.0 자바 저장함수/프로시저 사용하기 - 2007-05-08
          큐브리드 매니저를 이용한 데이터베이스 관리 - 2007-05-03

          | 교육 자료 |

           
          큐브리드 7.3 정기 교육 자료
            큐브리드 7.3 개발자 과정 - 2007-12-03
            큐브리드 7.3 운영자 과정 - 2007-12-03
          큐브리드 7.0 정기 교육 자료
            큐브리드 7.0 개발자 과정 - 2007-05-30
            큐브리드 7.0 운영자 과정 - 2007-05-30
          큐브리드 개발자 특성화 교육 자료
            JAVA 개발자를 위한 큐브리드 특성화 교육 - 2007-07-25
            큐브리드를 이용한 온라인 게임 서버 성능 최적화 실전 교육 - 2007-06-25
            CCI를 사용한 큐브리드 응용개발 - 2007-05-31
            큐브리드 7.0 살펴보기 - 2007-04-09
            PHP 개발자를 위한 큐브리드 데이터베이스 - 2007-02-26

          | 블로그 & 기고 |

           
          인터넷 서비스와 DBMS (월간 마이크로소프트웨어) - 2007-09
          큐브리드 기반의 위키(wiki) 활용 방법 - 2007-08-31
          인터넷 서비스 시대 최적의 DBMS 큐브리드 - 2007-05-29
          오라클의 이노베이스 인수 이후 '마이SQL'은? - 2007-03-01
          큐브리드 서비스 정책 및 TCO 비교 - 2006-12-14
          큐브리드 7.0 미리보기 - 2006-11-13
          DBMS의 현재와 미래
            DBMS의 현재와 미래 (I) - 기능의 포화 - 2006-10-16
            DBMS의 현재와 미래 (II) - 시장 포화론의 허구 - 2006-10-27
            DBMS의 현재와 미래 (III) - 라이선스에서 서비스 시대로 - 2006-10-30

          | 세미나 & 행사 자료 |

           
          큐브리드 7.0 제품 발표회 자료 - 2007-04-26
            DBMS 동향 및 큐브리드 로드맵
            인터넷 서비스 시대를 위한 큐브리드 7.0 제품 소개
            큐브리드 차별화 서비스 정책 소개
            NHN용 차세대 DBMS 개발
            MMORPG 브리스톨 탐험대 적용 사례
          큐브리드 7.0 제품 발표회 동영상 - 2007-04-26

          2008/01/21 01:56 2008/01/21 01:56
          관련글타래
            받은 트랙백이 없고, 댓글이 없습니다. 2211번 조회되었습니다.

            댓글을 달아 주세요

            [로그인][오픈아이디란?]

            구독안내 주 2~3회 새글이 올라옵니다. 블로그 방문없이 업데이트 되는 글을 구독하세요. RSS . E-Mail . HanRSS . WZD . Google Reader . Bloglines . Delicious Bookmark this on Delicious