메뉴 건너뛰기

SAP 한국 커뮤니티



ABAP [Internal Table] 기본기

문바이 2011.09.26 19:54 조회 수 : 21053 추천:4

Internal Table

정의

타 프로그램에서는 RecordSet이라 부른다./ with header line이라는 독특한 기능이 있다.

Record의 Rowcount가 가변적으로 계속해서 추가될수 있다. ( Dynamic Data Object)

최대저장능력 : 메모리 공간(2G) , 사용(500M) , Hashed Table(200만라인 이하)

구성3요소

Line Type : itab의 Field명과 type을 지정하는 것을 의미한다

Table Type : Record들의 관리목적에 따라 지정한다 [Standard/Sorted/Hashed Table]

Key : Table Type에 따라 키값을 unique/non-unique 하게 지정한다

왜 Table Type을 3가지로 나누었을까? (추론)
아마 DB를 최초로 개발했을 때는 Standard만이 존재했을 것이다.
그런데 데이타가 점점 많아지면서 이런문제가 발생했다.
1) 계속된 갱신(Update/Insert/Delete)으로 데이타를 Select하는데 시간이 오래걸린다.
2) 검색속도 개선을 위해 만든 Index도 용량이 따라 증가하여 DB에 전체차지 공간이 많아졌다
여기서 해결방법 2가지를 생각해 보자. (일단 공간문제상 Index를 사용하지 앉는방법을 모색해 보자)
  가) Binary Search
       전산학개론에 아주옛날부터 있었다는 이 기능, 이 기능을 사용하려면 검사대상이 먼저 Sort가 되어 있어야 한다.
       여기에 착안해서 Sorted Table유형을 만들고 정렬대상이 되는 키값을 지정해 주어야 한다는 전제조건이 성립된다.
       (그렇다고 Key값이 unique 할 필요는 없다)
  나) Hashed Functions
       특정고유값을 이 함수에 넣어주면 고유한 값을 가지는 결과치로 돌려준다. 이를 Index로 사용하는 방식이다.
       (이건 무조건 Key값이 unique해야만 동작할 수 있다.)

Table Type

설명

Standard

(Index)

사용조건 : Data를 편집해야 한다.
Record가 Insert되면 자동으로 Index값을 할당해 준다. (system이 뒤에서 자동으로 번호를 채번해줌)
Index를 기준으로 움직이므로 Key값은 항시 Non-unique는 설정해야 한다.
Data의 추가는 빠르나, 데이타 양의 증가에 비례해서 검색속도가 느려진다.

Sorted

(Index)

사용조건 : Key값이 Unique,Non-unique이다/ Append보다는 Select가 많이 발생한다 / 지정된 Key는 주 검색조건이다
데이타 저장시 부터 key값의 정렬을 기준으로 생성하므로, 통계/집계시 유리한 방식의 테이블 방식임
데이타가 항시 정렬중이므로, sort명령을 내리면 오류가 발생한다.
Index를 기준으로 움직이나, Key값은 Unique / Non-unique를 값이 사용할 수 있다.
Data의 추가는 느리나[정렬해서 넣어야 하므로], 검색속도는 매우 빠르다.

Hashed

(non-index)

사용조건 : Key값이 Unique 하다/ 대용량의 테이블이다(10만~200만건) / Unique Key 는 주 검색조건이다.
200만건 이상의 대용량 테이블은 사용할 수 없다.
아래 그림과 같이 Data Address를 소스로 Hash Function의 의해 계산된 결과가 저장위치를 알려준다.
검색이 매우빠른장점, 정렬시 오랜시간이 걸릴수 있다.

Table Type  성능비교표( Type선택의 잣대로 활용할것,Easy ABAP책에 명시되어있음)

 

Standard

Sorted

Hashed

Index

O

O

X

Key

Non-Unique

Unique or Non-Unique

Unique

Access

Index권장

Key권장

Key만 사용

Append(순위)

1

3

2

Read(순위)

3

2

1