정보처리기사 실기 공부log - 20200924

2020. 9. 25. 00:33컴퓨터언어

728x90
반응형

 

인덱스 

데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조 

 

TABLE SCAN 

인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확인하는  

 

클러스터드 인덱스 

레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치하게 유지되도록 구성되는 덱스 

인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식 

실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을  있다. 

데이터 삽입/삭제 발생  순서를 유지하기 위해 데이터를 재정렬해야  

 개의 릴레이션에 하나의 인덱스만 생성 가능 

 

넌클러스터드 인덱스 

인덱스의  값만 정렬되어 있을  실제 데이터는 정렬되지 않는 방식 

데이터를 검색하기 위해서는 먼저 인덱스를 검색하여 실제 데이터의 위치를 확인해야 하므로 클러스터드 인덱스에 비해 검색 속도가 떨어진다. 

 개의 릴레이션에 여러 개의 인덱스를 만들  있음 

 

비트맵 인덱스 

인덱스 컬럼의 데이터를 비트값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법 

데이터가 반복되어 압축 효율이 좋음 

분포도가 좋은 컬럼에 적합 

키값을 포함하는 로우의 주소를 제공하는 것이 목적 

 

함수 기반 인덱스 

컬럼의  대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것으로, B+트리 인덱스 또는 비트맵 인덱스를 생성하여 사용한다. 

데이터를 입력하거나 수정할  함수를 적용해야 하므로 부하가 발생할  있다. 

사용된 함수가 사용자 정의 함수일 경우 시스템 함수보다 부하가  크다. 

대소문자/띄어쓰기 등에 상관없이 조회할  유용하게 사용된다. 

적용 가능한 함수의 종류 : 산술식, 사용자 정의 함수, PL/SQL Function, SQL Function, Package, C Callout 등 

 

비트맵 조인 인덱스 

다수의 조인된 객체로 구성된 인덱스로, 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다르다. 

비트맵 인덱스와 물리적 구조가 동일하다. 

 

도메인 인덱스 

개발자가 필요한 인덱스를 직접 만들어 사용하는 것으로, 확장형 인덱스라고도 한다. 

개발자가 필요에 의해 만들었지만 프로그램에서 제공하는 인덱스처럼 사용할 수도 있다. 

 

트리 기반 인덱스 

인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것으로, 상용 DBMS에서는 트리구조 기반의 B+트리 인덱스를 주로 활용한다. 

 

인덱스 대상 테이블 기준 

테이블의 크기가 MULTI BLOCK READ(테이블 액세스  메모리에  번에 읽어 들일  있는 블록의 수) 를 초과 

랜덤 액세스가 빈번한 테이블 

특정 범위나 특정 순서로 데이터 조회가 필요한 테이블 

다른 테이블과 순차적 조인이 발생되는 테이블 

 

인덱스 대상 컬럼 선정 기준 

가능한  수정이 빈번하지 않은 테이블 

인덱스가 자동 생성되는 기본키와 유니크키 제약조건을 사용한 컬럼 

분포도가 10~15% 이내인 컬럼 

분포도가 10~15% 이상이어도 부분 처리를 목적으로 하는 컬럼 

분포도가 좁은 컬럼은 단독 인덱스로 생성 

ORDER BY, GROUP BY, UNION이 빈번한 컬럼 

인덱스가 자주 조합되어 사용되는 경우 하나의 결합 인덱스로 생성 

 

인덱스 설계 

분명하게 드러난 컬럼에 대해 기본적인 인덱스를 먼저 지정한 후, 개발 단계에서 필요한 인덱스의 설계를 반복적으로 진행한다. 

 

인덱스 설계  고려사항 

새로 추가되는 인덱스는 기존 액세스 경로에 영향을 미칠  있다. 

인덱스를 만들면 추가적인 저장 공간이 필요하다. 

인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계한다. 

 

 

사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블 

저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주 

데이터의 논리적 독립성 제공 

일단 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다. 

뷰가 정의된 기본 테이블이나 뷰를 삭제하면  테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다. 

기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야만 삽입/삭제/갱신 연산이 가능하다. 

 

분포도 

(조건에 맞는 레코드 수 / 전체 릴레이션 레코드 수) X 100 

 

 

뷰의 장점 

데이터의 논리적 독립성이 제공된다. 

사용자의 데이터 관리를 간단하게 해준다. 

접근 제어를 통한 자동 보안이 제공된다. 

동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해준다. 

 

뷰의 단점 

독립적인 인덱스를 가질  없다. 

뷰의 정의를 변경할  없다. 

뷰로 구성된 내용에 대한 삽입/삭제/갱신 연산에 제약이 있다. 

 

클러스터 

데이터 저장  데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법 

 

클러스터의 특징 

데이터 조회 속도는 향상시키지만 데이터 입력/수정/삭제에 대한 성능은 저하시킨다. 

클러스터는 데이터의 분포도가 넓을수록 유리하다. *인덱스는 좁을수록 유리 

데이터의 분포도가 넓을수록 저장 공간을 절약할  있다. 

클러스터링된 테이블은 클러스터링키 열을 공유하므로 저장 공간이 줄어든다. 

대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋다. 

파티셔닝  테이블에는 클러스터링을 할 수 없다. 

디스크 I/O가 줄어든다. 

처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용. 

 

클러스터 대상 테이블 

분포도가 넓은 테이블 

대량의 범위를 자주 조회하는 테이블 

입력/수정/삭제가 자주 발생하지 않는 테이블 

자주 조인되어 사용되는 테이블 

ORDER BY, GROUP BY, UNION이 빈번한 테이  

 

파티셔닝 

대용량의 테이블이나 인덱스를 성능 향상과 수월한 관리를 위해 작은 논리적 단위인 파티션으로 나누는  

테이블이나 인덱스를 파티셔닝하면 파티션키 또는 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다. 

데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행된다. 

 

파티셔닝 장점 

데이터 가용성이 향상된다. 

파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상된다. 

파티션별로 백업  복구를 수행하므로 속도가 빠르다. 

 

파티셔닝 단점 

하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구된다. 

테이블  조인에 대한 비용이 증가한다. 

용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하된다. 

 

파티션의 종류 

범위분할 : 지정한 열의 값을 기준으로 분할 

해시분할 : 해시 함수를 적용한 결과 값에 따라 데이터를 분할 

특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할  유용 

특정 데이터가 어디에 있는지 판단할  없음 

고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적 

조합분할 : 먼저 범위분할  해시분할 

범위분할한 파티션이 너무 커서 관리가 어려울  유용 

 

데이터베이스 용량 설계 

데이터가 저장될 공간을 정의하는 것으로, 테이블에 저장할 데이터 양과 인덱스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야 한다. 

 

데이터베이스 용량 설계의 목적 

데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성  가용성을 높인다. 

 

데이터 접근성을 향상시키는 설계 방법 

테이블의 테이블스페이스와 인덱스의 테이블스페이스를 분리하여 구성한다. 

테이블스페이스와 임시 테이블스페이스를 분리하여 구성한다. 

테이블을 마스터 테이블과 트랜잭션 테이블로 분류한다. 

 

 

<통합구현> 

통합구현 : 사용자의 요구사항에 맞춰 송수신 모듈과 중계 모듈 간의 연계를 구현하는  

송수신시스템, 모듈, 중계시스템, 연계데이터, 네트워크로 구성 

 

직접연계 : DB Link, API, JDBC, DB Connection 

간접연계 : 연계 솔루션, ESB, Socket, Web Service 

728x90
반응형