자격증/정보처리기사 📌 [정보처리기사] 물리 데이터베이스 설계 - 사전 조사 분석/데이터베이스 저장 공간 설계
  • 728x90
    반응형

     

     

    목차

       

      💡 주요 키워드 ? 물리 데이터베이스 설계, 트랜잭션, 인덱스, 뷰, 클러스터, 파티션, 분산 데이터베이스, 접근통제, 스토리지, 이중화

       

      물리 데이터베이스 설계

      📌 물리 데이터베이스 설계는 논리적 구조로 표현된 논리적 데이터베이스를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정이다.

       

      • 물리적 데이터베이스 구조의 기본적인 데이터 단위는 저장 레코드(Stored Record)이다.
      • 물리적 설계 단계에 꼭 포함되어야 할 것은 저장 레코드의 양식 설계, 레코드 집중(Record Clustering)의 분석 및 설계, 접근 경로 설계 등이다.
      • 물리적 데이터베이스 구조는 여러 가지 타입의 저장 레코드 집합이라는 면에서 단순한 파일과 다르다.
      • 물리적 데이터베이스 구조는 데이터베이스 시스템의 성능에 중대한 영향을 미친다.

       

      💡 Clustering : 사전적 의미로는 '송이를 이루다', '떼를 짓게 하다' 라는 뜻으로 여기서는 '군집'이란 의미를 가지고 있다.

       

      • 물리적 설계 시 고려 사항
        • 인덱스 구조
        • 레코드 크기
        • 파일에 존재하는 레코드 개수
        • 파일에 대한 트랜잭션의 갱신과 참조 성향
        • 성능 향상을 위한 개념 스키마의 변경 여부 검토
        • 빈번한 질의와 트랜잭션들의 수행속도를 높이기 위한 고려
        • 시스템 운용 시 파일 크기의 변화 가능성
      • 물리적 설계 전에 기존 시스템을 분석하여 데이터 명명 규칙, 시스템 자원, 데이터베이스 관리 요소 등을 파악해야 한다.

       

      💡 트랜잭션(transaction) : 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.
      💡 개념 스키마(Conceptual Schema) : 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.

       

       

       

      물리적 설계 옵션

      📌 물리적 설계 옵션이란 특정 DBMS에서 제공되는 것으로, 데이터베이스 파일대 대한 저장 구조와 접근 경로에 대한 다양한 옵션을 말한다.

       

      • 반응시간(Response Time) : 트랜잭션 수행을 요구한 시점부터 처리 결과를 얻을 때까지의 경과 시간
      • 공간 활용도(Space Utilization) : 데이터베이스 파일과 액세스 경로 구조에 의해 사용되는 저장 공간의 양
      • 트랜잭션 처리량(Transaction Throughput) : 단위시간 동안 데이터베이스 시스템에 의해 처리될 수 있는 트랜잭션의 평균 개수

       

       

      데이터 명명 규칙 파악

      📌 데이터 명명 규칙은 물리 데이터 모델에 적용해야 하는 규칙으로, 조직마다 다를 수 있으므로 물리 데이터 모델의 설계 전에 파악해야 한다.

       

      🔔 예) 데이터 명명 규칙 예시

      업무코드 - 업무코드 3자리, 세부업무코드 3자리로 구성된다.
      - 업무코드와 세부업무코드를 기중으로 거래코드, 프로그램 등이 명명되므로 표준을 준수해야 한다.
      리소스 그룹 업무구분 3자리 + 세부업무구분 2자리로 명명한다.
      거래코드 - 거래코드는 입력되는 데이터의 유형에 따라 부여된다.
      - 거래코드 명명규칙 : 서비스명과 동일
      - 거래처 코드와 서비스 명은 1:1 관계로 명명한다.

       

      • 데이터 명명 규칙은 데이터 표준화 및 논리 데이터베이스 설계의 결과물 등을 통해 파악한다.
      • 물리 데이터베이스 설계와 논리 데이터베이스 설계에 적용되는 명명 규칙은 서로 일관성을 유지해야 한다.
      • 데이터 명명 규칙은 논리적 데이터 요소를 물리적 데이터 요소로 전환할 때 동일 명칭 부여의 근거로 사용된다.
      • 데이터 명명 규칙을 통해 중복 구축 등을 방지할 수 있다.
      • 명명 규칙을 파악하려면 도메인과 데이터 사전에 대한 지식이 필요하다.
      • 도메인 : 객체(Entity)에 포함된 속성들의 데이터 타입, 크기 등을 표준화 규칙에 따라 일관성 있게 정의한 것을 의미한다.

      🔔 예) 도메인 예시

      도메인 분류 도메인명 데이터 타입
      코드 사원코드 VARCHAR2(10)
      매장코드 VARCHAR2(10)
      상품코드 VARCHAR2(10)
      이름 사원이름 VARCHAR2(20)
      매장이름 VARCHAR2(20)
      상품이름 VARCHAR2(20)
      사원수 NUMBER(10)
      상품수 NUMBER(10)

       

      💡 CHAR : 데이터 타입은 고정된 문자열을 저장하는데 사용. 테이블을 만들 때, 무조건 고정된 길이를 지정해줘야 하고 범위는 1~2000bytes 이며 한글의 경우 글자당 2byte 이므로 1000글자가 저장 가능하다. 영문, 숫자의 경우 1byte.
      💡 VARCHAR, VARCHAR2 : 가변 길이로 문자열을 저장할 수 있는 데이터 타입. 만약 우리가 VARCHAR2로 변수를 만들면 1~4000byte까지의 길이를 지정해줄 수 있다.
      💡 VARCHAR 와 VARCHAR2 차이점 : 실제로 오라클 공식 문서에는 두 데이터 타입이 동의어라고 나와 있다. 하지만 VARCHAR2를 사용하는 것을 추천. 이유는 VARCHAR는 나중에 다른 방식의 데이터 타입으로 변경될 수 있기 때문

       

      • 데이터 사전(데이터 용어 사전)
        • 전체 프로젝트 과정에서 일관성 있는 데이터 이름과 인터페이스를 제공하기 위해 데이터 속성의 논리명(Logical Name), 물리명(Physical Name), 용어 정의(Definition) 기술해 놓은 것이다.
        • 데이터 사전은 프로젝트에서 사용하는 명칭 부여의 근거로 사용된다.

       

      시스템 자원 파악

      📌 사스템 자원은 데이터베이스 설치에 영향을 미칠 수 있는 물리적인 요소들로, 사전에 미리 파악해야 한다.

       

      • 시스템 자원은 하드웨어 자원, 운영체제 및 DBMS 버전, DBMS 파라미터 정보 등으로 구분한다.
      • 하드웨어 지원
      중앙처리장치 중앙처리장치(CPU)의 성능과 집중적인 부하 발생시간 등을 파악한다.
      메모리 시스템의 전체 메모리 규모, 사용 중인 메모리 영역, 사용 가능한 메모리 여역 등 확보된 자원이나 실질적인 시스템 활용 정도 등을 파악한다.
      디스크 전체 디스크의 크기, 확보된 디스크 지원, 디스크 분활 형태, 현재 디스크 활용률, 사용 가능한 디스크 공간 등을 파악한다.
      I/O Controller 현행 시스템의 입/출력 컨트롤러의 성능, 운용의 적절성 등을 파악한다.
      네트워크 네트워크의 처리량, 처리 속도, 집중적인 부하 발생 시간, 동시 접속 가능 정도 등을 파악한다.

       

      • 운영체제 및 DBMS 버전 : 운영체제와 DBMS 버전은 데이터베이스 운영에 영향을 미칠 수 있으므로 관련 요소 등을 파악하고 적절하게 관리해야 한다.
      • DBMS 파라미터(Parameter) 정보
        • DBMS 파라미터는 데이터베이스 관리 시스템 별로 차이가 많고 관리 방법도 제 각각이므로 시스템 별 DBMS 파라미터의 종류 및 관리 대상 등을 파악한다.
        • DBMS의 저장 공간, 메모리 등에 대한 파라미터, 쿼리에서 활용하는 옵티마이저(Optimizer)의 사용 방법 등을 파악한다.

       

       

      데이터베이스 관리 요소 파악

      📌 데이터베이스 관리 요소는 데이터베이스 운영과 관려된 관리 요소로, 데이터베이스 시스템의 환경에 따라 달라질 수 있으므로 미리 파악해야 한다.

       

      • 데이터베이스 관리 요소를 파악한 후 이를 기반으로 데이터베이스 시스템 조사 분석서를 작성한다.

       

       

      💡예) 데이터베이스 시스템 조사 분석서 예시

      구분 환경 변수 중앙(Center) 지역(Local)
      운영체제 환경 IP Address 192.254.250.20 192.254.250.20
      CPU 4G 4G
      DISK SPACE 100G 100G
      데이터베이스 SGA 40M 40M
      MAX DATA FILES 50 50
      DB BLOCK SIZE 16K 16K
      DB FILES 40 40
      LOG BUFFER 45215 45215
      PROCESS 40 40
      .
      .
      .
      .
      .
      .
      .
      .
      .

       

      • 시스템 조사 분석서를 기반으로 데이터베이스 구조, 이중화 구성, 분산 데이터베이스, 접근제어/접근통제, DB암호화 등의 범위와 특성을 파악한다.

       

      데이터베이스 구조 데이터베이스의 구조에 따라 문제 발생 시 대응 방법이 다르므로 서버와 데이터베이스의 구조 등을 파악한다.
      이중화 구성 문제 발생에 대비하여 동일한 데이터베이스를 복제하여 관리하는 이중화 구성을 파악 한다.
      분산 데이터베이스 분산 데이터베이스는 물리적 재해 및 파손 등 데이터 유실을 최소화할 수 있고, 장애로 인한 데이터 유식 복구에 효과적이므로 데이터베이스의 분산 구조를 파악한다.
      접근 제어/접근 통제 데이터베이스는 접근 가능한 사용자의 권한 남용으로 인한 유출 및 변조가 가장 빈번하게 발생하므로 데이터베이스의 접근 제어 방법 등을 파악한다.
      DB 암호화 DB암호화는 데이터 암호화, 암호 키에 대한 인증 등을 통해 데이터 유출 시 데이터의 복호화를 어렵게 하므로 DB 함호화의 특성을 파악한다.

       

       


       

       

      🎯 데이터베이스 저장 공간 설계

       

      테이블(Table)

      📌 테이블은 데이터베이스의 가장 기본적인 객체로 로우(Row, 행)와 컬럼(Column, 열)으로 구성되어 있다.

       

      • 데이터베이스의 모든 데이터는 테이블에 저장된다.
      • 테이블은 논리 설계 단계의 개체(Entity)에 대응하는 객체이다.
      • DBMS 종류에 따라 테이블의 명칭과 기능 등은 약간씩 차이가 있다.
      • 테이블의 종류에는 일반 테이블, 클러스터 인덱스 테이블, 파티셔닝 테이블, 외부 테이블, 임시 테이블 등이 있다.

       

       

      일반 테이블

      📌 일반 테이블은 현재 사용되는 대부분의 DBMS에서 표준 테이블로 사용되는 테이블 형태이다.

       

      • 테이블에 저장되는 데이터의 로우(Row) 위치는 속성 값에 상관없이 데이터가 저장되는 순서에 따라 결정된다.

       

      🔔 예) <사원> 테이블

      사원번호 이름 입사일자 부서 직급 연봉
      45S051 김채원 2018-05-09 영업부 사원 25,000,000
      37S042 카즈하 2019-01-30 기획부 과장 37,000,000
      43S039 허윤진 2018-09-25 기획부 사원 28,000,000
      36S201 김가람 2019-06-23 총무부 대리 35,000,000

       

      💡 데이터가 일정한 기준 없이 입력되는 순서에 따라 테이블에 저장된다.

       

       

       

      클러스터드 인덱스 테이블(Clustered Index Table)

      📌 클러스터드 인덱스 테이블은 기본키(Primary Key)나 인덱스 키의 순서에 따라 데이터가 저장되는 테이블이다.

       

      • 클러스터 인덱스 테이블은 일반적인 인덱스를 사용하는 테이블에 비해 접근 경로가 단축된다.

       

      🔔 예) <사원> 테이블

      사원번호 이름 입사일자 부서 직급 연봉
      32S122 사쿠라 2018-05-05 영업부 과장 41,000,000
      32S219 안유진 2018-12-11 총무부 부장 55,000,000
      36S201 김가람 2019-06-23 총무부 대리 35,000,000
      37S042 카즈하 2019-01-30 기획부 과장 37,000,000
      43S039 허윤진 2018-09-25 기획부 사원 28,000,000
      45S051 김채원 2018-05-09 영업부 사원 25,000,000

       

      💡 데이터가 기본키인 '사원번호' 필드를 기준으로 오름차순 정렬되어 테이블에 저장된다.

       

       

      파티셔닝 테이블(Partitioning Table)

      📌 파티셔닝 테이블은 대용량의 테이블을 작은 논리적 단위인 파티션(Partition)으로 나눈 테이블이다.

       

      • 파티셔닝 테이블은 대용량의 데이터를 효과적으로 관리할 수 있지만 파티션 키를 잘못 구성하면 성능저하 등의 역효과를 초래할 수 있다.
      • 파티셔닝 방식에 따라 범위 분할(Range Partitioning), 해시 분할(Hash Partioning), 조합 분할(Composite Partitioning) 등으로 나뉜다. 아래는 '입사일자' 필드를 기준으로 연도별 파티셔닝 되었다.

       

      🔔 예) <파트1> 테이블

      사원번호 이름 입사일자 부서 직급 연봉
      32S122 사쿠라 2018-05-05 영업부 과장 41,000,000
      45S051 김채원 2018-05-09 영업부 사원 25,000,000
      43S039 허윤진 2018-09-25 기획부 사원 28,000,000

       

      <파트2> 테이블

      사원번호 이름 입사일자 부서 직급 연봉
      37S042 카즈하 2019-01-30 기획부 과장 37,000,000
      36S201 김가람 2019-06-23 총무부 대리 35,000,000

       

      💡 범위 분할(Range Partitioning) : 지정한 열의 값을 기준으로 분할함.
      💡 해시 분할(Hash Partitioning) : 해시 함수를 적용한 결과 값에 따라 데이터를 분할함.
      💡 조합 분할(Composite Partitioning) : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식

       

       

       

      외부 테이블(External Table)

      📌 외부 테이블은 데이터베이스에서 일반 테이블처럼 이용할 수 있는 외부 파일로, 데이터베이스 내에 객체로 존재한다.

       

      • 외부 테이블은 데이터웨어하우스(Data Warehouse)에서 ETL(Extraction Transformation Loading) 등의 작업에 유용하게 사용된다.

       

       

      임시 테이블(Temporary Table)

      📌 임시 테이블은 트랜잭션이나 세션 데이터를 저장하고 처리할 수 있는 테이블이다.

       

      • 임시 테이블에 저장된 데이터는 트랜잭션이 종료되면 삭제된다.
      • 임시 테이블은 절차적인 처리를 위해 임시로 사용하는 테이블이다.

       

      💡 데이터웨어하우스(Data Ware-house) : 데이터웨어하우스란 조직이나 기업체의 중심이 되는 주요 업무 시스템에서 추출되어 새로이 생성된 데이터베이스로서, 의사결정지원 시스템을 지원하는 주체적, 통합적, 시간적 데이터의 집합체를 말한다.
      💡 ETL은 데이터웨어하우스를 사용하여 추출, 변환, 적재하는 일련의 모든 과정을 의미한다.
      💡 세션(session) 이란 ? 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미한다. 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 한다.

       

       

       

      컬럼(Column)

      📌 컬럼은 테이블의 열을 구성하는 요소로 데이터 타입(Data Type), 길이(Length)등 으로 정의 된다.

       

      • 데이터 타입은 데이터의 일관성 유지를 위해 사용되는 가장 기본적인 것으로, 도메인을 정의한 경우 도메인에 따라 데이터의 타입과 길이가 정의된다.
      • 두 컬럼을 비교하는 연산에서 두 컬럼의 데이터 타입이나 길이가 다르면 DBMS 내부적으로 데이터 타입을 변환한 후 비교 연산을 수행한다.
      • 참조 관게인 컬럼들은 데이터 타입과 길이가 일치해야 한다.
      • 데이터 타입과 길이 지정 시 고려 사항
        • 가변 길이 데이터 타입 : 예상되는 최대 길이로 정의 
        • 고정 길이 데이터 타입 : 최소 길이로 지정
        • 소숫점 이하 자릿수 : 소수점 이하 자릿수는 반올림되어 저장
      • 데이터 타입에 따른 컬럼의 물리적인 순서
        • 고정 길이 컬럼이고 NOT Null인 컬럼 : 앞쪽
        • 가변 길이 컬럼 : 뒤쪽
        • Null 값이 많을 것으로 예상되는 컬럼 : 뒤쪽

       

       

      테이블스페이스(Tablespace)

      📌 테이블스페이스는 테이블이 저장되는 논리적인 영역으로, 하나의 테이블스페이스에 하나 또는 그 이상의 테이블을 저장할 수 있다.

       

      • 테이블을 저장하면 논리적으로는 테이블스페이스에 저장되고, 물리적으로는 해당 테이블스페이스와 연관된 데이터 파일(Dat File)에 저장된다.
      • 데이터베이스를 테이블, 테이블스페이스, 데이터 파일로 나눠 관리하면 논리적 구성이 물리적 구성에 종속되지 않아 투명성이 보장된다.
      • 테이블스페이스는 데이터베이스에 저장되는 내용에 따라 테이블, 인덱스, 임시(Temporary) 등의 용도로 구분하여 설계한다.
      • 테이블스페이스 설계 시 고려사항
        • 테이블스페이스는 업무별로 구분하여 지정한다.
        • 대용량 테이블은 하나의 테이블스페이스에 독립적으로 저장한다.
        • 테이블과 인덱스는 분리하여 저장한다.
        • LOB(Large Object)타입의 데이터는 독립적인 공간으로 지정한다.

       

      💡 투명성 : 투명성이란 어떠한 사실이 존재함에도 마치 투명하여 보이지 않는 것처럼, 사실의 존재 여부를 염두에 두지 않아도 되는 성질을 말한다.
      💡 LOB(Large Object)는 대용량의 데이터를 저장할 수 있는 데이터 타입이다.

       

       

      🔔 예) Oracle의 물리/논리 저장 구조 계층

       

      💡 Oracle 프로그램은 데이터베이스를 Block, Extent, Segment, Tablespace, Data File로 나눠 관리한다.

      Block, Extent, Segment, Tablespace는 논리적인 영역이고, Data File은 물리적인 영역이다.

      Segment는 테이블, Extent는 데이터 블록의 모임, Block은 입/출력 단위에 해당한다.

       

      💡 Data Block : Logical Block, ORACLE Block 또는 page라는 용어로 불리워지는데, OS Disk상의 일정한 Byte단위의 Space를 말한다.
      💡 Extent : 일정한 수의 연속된 ORACLE block 들을 말한다. 일정한 수라는 의미는 사용자가 지정한 값을 말한다.
      💡 Segment : 데이터베이스 내에 생성되는 모든 객체(테이블, 인덱스, 뷰, 시퀀스 등)들을 세그먼트(Segment)라고 한다.

      728x90
      반응형
    상단으로