RDB화로 인한 기능 변경 사항

본 장에서는 Fujitsu AIM/DB에서 사용되는 기능들 중 OpenFrame NDB가 Unix/Linux 또는 RDB를 기반으로 구현되면서 개념적으로 더이상 의미가 없어진 기능들에 대해 기술한다.

여기에 기술된 기능들은 NDB의 어플리케이션 동작에 영향을 주지 않는 기능들이거나, 변경 이후에도 호스트와 같은 동작을 보장한다.

1. 물리적 저장 구조 관리 기능

AIM DB와 기존의 NDB는 레코드를 데이터셋에 저장했으며, 레코드를 저장할 주소를 결정하기 위해 레인지와 페이지라는 개념이 사용되었다. 각 레코드는 레코드의 크기에 따라 레인지에서 저장될 위치가 결정되고 하나의 레인지에 얼마나 많은 레코드를 저장할 수 있을지를 PRIME 영역과 OVERFLOW 영역의 크기를 기술해 결정했다. 페이지는 기본적으로 DB 엔진이 결정하지만 사용자 랜덤 저장 모드로 사용자가 직접 결정할 수 있는 기능도 있었다.

새로운 OpenFrame NDB는 RDB 테이블을 레코드의 저장 공간으로 사용하기 때문에 ADL 스키마의 데이터셋과 페이지 개념이 더이상 의미가 없으며 PRIME과 OVERFLOW 영역의 개념도 폐기되었다. OpenFrame NDB는 기본적으로 모든 레코드를 같은 논리 페이지에 저장한다. 다만 사용자 랜덤 페이지 지정 기능은 여전히 지원해서 해당 기능을 통해 사용자가 페이지를 직접 결정하는 경우 페이지 번호를 테이블에 컬럼으로 정의해 함께 저장한다.

2. SLS와 MLS

AIMD DB에서 SLS와 MLS는 AIM DB에서 각 레코드가 저장되는 주소값에 대한 체계였으며, MLS에서 SLS보다 더 많은 데이터를 저장할 수 있었다.

OpenFrame NDB에선 레코드의 물리적 주소 개념이 폐기되었고, 레코드가 테이블에 저장되므로 레코드마다 저장될 수 있는 최대 레코드의 크기는 사용하는 대상 RDB가 정한 테이블스페이스의 제한(Tibero의 경우 32GB)을 따르며, 개별 레코드 타입 당 최대 레코드의 개수는 NDB의 OCC_ID 구조에 따라 4바이트 부호없는 정수의 최댓값인 4294967295이다.

3. 가변 길이 레코드 (Variable-length Record)와 필드 압축

AIM DB에서는 레코드의 필드를항상 사용되는 고정 부분(fixed part)과 때때로 사용 유무가 바뀌는 가변 부분(variable part)으로 나누어 처리할 수 있었으며, 일부 필드의 space와 zero 값을 무시하는 필드 압축을 통해 저장 공간의 효율성을 높였다.

OpenFrame NDB는 ADL의 스키마 레코드 정의에 따라 RDB 테이블을 정의해 사용하므로 데이터의 구조가 고정적이기 때문에 가변 길이 레코드와 필드 압축 기능을 더이상 사용하지 않는다.

4. JCL 유틸리티

AIM DB 및 이전 버전의 NDB에서 사용했던 JCL 유틸리티 중 일부가 폐기되었다. 해당되는 유틸리티와 이유는 다음과 같다.

JCL 유틸리티 이름 기능 및 폐기 사유

JXHADINT

물리 저장소를 생성 및 초기화 => ndbmgr로 대체

JXHIXGEN

인덱스를 생성 => ndbmgr로 대체

JXHDBUTY

페이지, 세트, 레코드 정보를 출력 => 물리적 저장 구조 변경으로 인해 호스트의 사양과 달라짐

JXHDBCLR

물리 저장 공간에서 데이터가 삭제된 부분을 정리 => RDB화로 의미가 없어짐

JXKPTRCK

세트 연결 상태가 유효한지 검증하고 고립된 레코드를 보고

JXKLMOVE

물리 저장소를 이동 => RDB화로 의미가 없어짐

JXYXIGEN

확장 인덱스를 관리 => 확장 인덱스 생성을 ndbmgr가 담당하며 RDB 인덱스로 정의되므로 폐기

JXYXIDBR

확장 인덱스 생성에 필요한 정보를 수집 => 확장 인덱스가 RDB 인덱스로 정의되므로 폐기

JXYXIRED

이미 존재하는 확장 인덱스에서 정보를 수집 => 확장 인덱스가 RDB 인덱스로 정의되므로 폐기

JXYXIRPT

확장 인덱스에 대한 정보 출력 => 확장 인덱스가 RDB 인덱스로 정의되므로 폐기