콘텐츠로 이동

4.Altibase Sharding 딕셔너리#

Altibase Sharding의 데이터 딕셔너리는 샤드 객체 정보를 저장하는 샤드 메타와 단일 샤드 노드의 샤딩 관련 시스템 프로세스 정보를 보여주는 성능 뷰(Performance View), 그리고 전체 샤딩 시스템의 실시간 정보를 보여주는 샤드 성능 뷰(Shard Performance View)로 나뉘어진다.

본 장은 샤드 데이터베이스 객체 정보 및 Altibase Sharding시스템 정보를 제공하는 데이터 딕셔너리에 대해 설명한다.

샤드 메타#

샤드 메타란 Altibase Sharding을 사용하는 전체 분산 데이터베이스에 생성된 객체에 대한 모든 정보를 저장하고 있는 SYS_SHARD사용자의 시스템 정의 테이블이다.

구조 및 기능#

샤드 메타 테이블은 분산 데이터베이스 객체를 관리하기 위해 시스템에 의해 정의된 테이블이다.

Altibase Sharding은 분산 데이터베이스 질의를 처리하기 위해 샤드 객체 정보를 조회하며 샤드 객체 및 노드 정보를 저장 및 변경할 때 샤드 메타 테이블을 사용한다.

샤드 메타 테이블의 소유자는 일반 메타 테이블과는 달리 SYS_SHARD 사용자이며, 샤드 메타에 대한 변경은 DBMS_ SHARD 패키지를 이용해야 한다.

샤드 메타 테이블 조회#

DBMS_SHARD패키지를 이용하여 분산 데이터베이스 관련 정보를 등록, 삭제 및 변경 시 샤드 메타 테이블의 레코드가 시스템에 의해 생성, 삭제 또는 변경된다.

변경된 데이터베이스 객체 정보는 샤드 메타 테이블을 조회함으로써 확인할 수 있다. 샤드 메타 테이블의 레코드는 일반 테이블과 같이 SELECT 문으로 조회가 가능하다.

샤드 메타 테이블 데이터 변경#

Altibase Sharding 시스템 사용자가 DBMS_SHARD 패키지 이외의 방법으로 샤드 메타 를 변경하면 샤딩 시스템 구동이 실패하거나, 분산 데이터베이스 관련 정보를 상실하여 시스템에 치명적인 손상이 발생할 수 있다.

샤드 메타 테이블 스키마 변경#

Altibase Sharding에 새로운 기능이 제공되거나 기존 구문의 기능 변경 시 샤드 메타 테이블 스키마가 변경될 수 있다. 샤드 메타 테이블 스키마의 변경이 발생하면 데이터베이스 마이그레이션이 필요하다.

Altibase Sharding하위 버전에서 상위 버전으로 업그레이드 시 이를 고려해야 한다.

샤드 메타 테이블 종류#

다음 표는 샤드 메타 테이블의 목록이다.

샤드 메타 테이블 이름 설명
VERSION_ Altibase Sharding의 버전을 기록하는 샤드 메타 테이블
LOCAL_META_INFO_ 지역 데이터베이스의 샤드 정보를 기록하는 샤드 메타 테이블
GLOBAL_META_INFO_ 샤드 메타 제어 정보를 기록하는 샤드 메타 테이블
NODES_ 샤드 노드 정보를 기록하는 샤드 메타 테이블
OBJECTS_ 샤드 객체 정보를 기록하는 샤드 메타 테이블
RANGES_ 샤드 키 분산 테이블 정보를 기록하는 샤드 메타 테이블
CLONES_ 복제 분산 테이블 정보를 기록하는 샤드 메타 테이블
SOLOS_ 독립 분산 테이블 정보를 기록하는 샤드 메타 테이블

SYS_SHARD.VERSION_#

Altibase Sharding의 버전을 기록하는 메타 테이블이다.

Column name Type Description
MAJOR_VER INTEGER Altibase Sharding 메이저 버전
MINOR_VER INTEGER Altibase Sharding 마이너 버전
PATCH_VER INTEGER Altibase sharding 패치 버전

칼럼 정보#

MAJOR_VER#

메이저 버전을 나타낸다.

MINOR_VER#

마이너 버전을 나타낸다.

PATCH_VER#

패치 버전을 나타낸다.

SYS_SHARD.LOCAL_META_INFO_#

지역 데이터베이스의 샤드 정보를 기록하는 메타 테이블이다.

Column name Type Description
META_NODE_ID INTEGER 샤드 메타 식별자

칼럼 정보#

META_NODE_ID#

지역 데이터베이스의 샤드 메타 식별자로 전체 샤딩 시스템에서 유일해야 한다.

CREATE_META 프로시저를 통해 최초로 샤드 메타를 생성시에 입력해야하며 RESET_META_NODE_ID로 변경 가능하다.

SYS_SHARD. GLOBAL_META_INFO_#

샤드 메타 정보에 대한 내용을 기록하는 메타 테이블이다.

Column name Type Description
ID INTEGER 이중화를 위한 주 키
SMN BIGINT 샤드 메타가 가지고 있는 가장 최신의 샤드 메타 번호

칼럼 정보#

ID#

시스템 내부적으로 복제를 위해 사용되는 키 값

SMN#

데이터베이스의 샤드 메타에서 유지하는 메타 정보중 가장 최신 메타에 대한 샤드 메타 번호(Shard Meta Number)를 나타낸다.

SYS_SHARD.NODES_#

Altibase Sharding의 샤드 노드 정보를 기록하는 메타 테이블이다.

Column name Type Description
NODE_ID INTEGER 샤드 노드의 지역 식별자
NODE_NAME VARCHAR(40) 샤드 노드 이름
HOST_IP VARCHAR(64) 샤드 노드 external ip address
PORT_NO INTEGER 샤드 노드 external port 번호
ALTERNATE_HOST_IP VARCHAR(64) 샤드 노드의 external alternative ip address
ALTERNATE_PORT_NO INTEGER 샤드 노드의 external alternative port 번호
INTERNAL_HOST_IP VARCHAR(64) 샤드 노드의 internal ip address
INTERNAL_PORT_NO INTEGER 샤드 노드의 internal port 번호
INTERNAL_ALTERNATE_HOST_IP VARCHAR(64) 샤드 노드의 internal alternative ip address
INTERNAL_ALTERNATE_PORT_NO INTEGER 샤드 노드의 internal alternative port 번호
INTERNAL_CONN_TYPE INTEGER 샤드 노드의 internal 연결 방식
SMN BIGINT 샤드 메타 번호

칼럼 정보#

NODE_ID#

샤드 노드의 지역 식별자를 나타낸다.

NODE_NAME#

샤드 노드의 이름을 나타내며 샤드 노드의 이름은 유일해야 한다.

HOST_IP#

샤드 라이브러리 또는 외부 응용프로그램에서 연결할 샤드 노드의 ip address를 나타낸다.

PORT_NO#

샤드 라이브러리 또는 외부 응용프로그램에서 연결할 샤드 노드의 port 번호를 나타낸다.

ALTERNATE_HOST_IP#

샤드 라이브러리 또는 외부 응용프로그램에서 연결할 샤드 노드의 alternate 서버 ip address를 나타낸다.

ALTERNATE_PORT_IP#

샤드 라이브러리 또는 외부 응용프로그램에서 연결할 샤드 노드의 alternate 서버 port 번호를 나타낸다.

INTERNAL_HOST_IP#

코디네이터가 연결할 샤드 노드의 ip address를 나타낸다.

INTERNAL_PORT_NO#

코디네이터가 연결할 샤드 노드의 port 번호를 나타낸다.

INTERNAL_ALTERNATE_HOST_IP#

코디네이터가 연결할 샤드 노드의 alternate 서버 ip address를 나타낸다.

INTERNAL_ALTERNATE_PORT_NO#

코디네이터가 연결할 샤드 노드의 alternate 서버 port 번호를 나타낸다.

INTERNAL_CONN_TYPE#

코디네이터가 연결할 샤드 노드의 연결 방식으로 지원 타입은 Altibase Sharding 통신 방법 의 코디네이터 커넥션을 참고한다.

SMN#

샤드 메타에 대한 버전 관리 번호를 나타낸다.

SYS_SHARD.OBJECTS_#

Altibase Sharding의 샤드 객체 정보를 기록하는 메타 테이블이다.

Column name Type Description
SHARD_ID INTEGER 샤드 객체 식별자
USER_NAME VARCHAR(128) 샤드 객체 소유자
OBJECT_NAME VARCHAR(128) 샤드 객체 이름
OBJECT_TYPE CHAR(1) 샤드 객체 종류 T : 테이블 P : 프로시저
SPLIT_METHOD CHAR(1) 분산 방식 H : 해시(hash) R : 범위(range) L : 리스트(list) C : 복제(clone) S : 독립(solo)
KEY_COLUMN_NAME VARCHAR(128) 샤드 키 이름
SUB_SPLIT_METHOD CHAR(1) 서브 샤드 키 분산 방식 H : 해시(hash) R : 범위(range) L : 리스트(list)
SUB_KEY_COLUMN_NAME VARCHAR(128) 서브 샤드 키 칼럼 이름
DEFAULT_NODE_ID INTEGER 기본 샤드 노드 번호
SMN BIGINT 샤드 메타 번호

칼럼 정보#

SHARD_ID#

샤드 객체의 번호를 나타낸다.

USER_NAME#

샤드 객체의 소유자 이름을 나타낸다.

OBJECT_NAME#

샤드 객체 이름을 나타낸다.

OBJECT_TYPE#

샤드 객체 종류를 나타낸다.

SPLIT_METHOD#

샤드 객체 분산 방식을 나타낸다.

KEY_COLUMN_NAME#

샤드 객체의 샤드 키 이름을 나타낸다.

SUB_SPLIT_METHOD#

샤드 객체의 서브 샤드 키 분산 방식을 나타낸다.

SUB_KEY_COLUMN_NAME#

샤드 객체의 서브 샤드 키 칼럼 이름을 나타낸다.

DEFAULT_NODE_ID#

샤드 객체의 기본 샤드 노드를 나타낸다. 분산 설정이 완전하지 않을 경우 설정 기준 이외의 데이터가 저장되는 샤드 노드이다.

SMN#

샤드 메타에 대한 버전 관리 번호를 나타낸다.

SYS_SHARD.RANGES_#

샤드 키 분산 테이블(HASH, RANGE, LIST, COMPOSITE)의 분산 정보를 기록하는 메타 테이블이다.

Column name Type Description
SHARD_ID INTEGER 샤드 객체 식별자
VALUE VARCHAR(100) 샤드 키 값
SUB_VALUE VARCHAR(100) 서브 샤드 키 값
NODE_ID INTEGER 샤드 노드 번호
SMN BIGINT 샤드 메타 번호

칼럼 정보#

SHARD_ID#

샤드 객체의 번호를 나타낸다.

VALUE#

샤드 키 값을 나타낸다.

SUB_VALUE#

서브 샤드 키 값을 나타낸다.

NODE_ID#

VALUE와 SUB_VALUE를 기준으로 저장되는 데이터의 노드 번호를 나타낸다.

SMN#

샤드 메타에 대한 버전 관리 번호를 나타낸다.

SYS_SHARD.CLONES_#

샤드 객체에 복제 분산 방식이 적용된 분산 정보를 기록하는 메타 테이블이다.

Column name Type Description
SHARD_ID INTEGER 샤드 객체 식별자
NODE_ID INTEGER 샤드 노드의 지역 식별자
SMN BIGINT 샤드 메타 번호

칼럼 정보#

SHARD_ID#

샤드 객체 번호를 나타낸다.

NODE_ID#

데이터가 복제 저장되는 샤드 노드의 지역 식별자 번호를 나타낸다.

SMN#

샤드 메타에 대한 버전 관리 번호를 나타낸다.

SYS_SHARD.SOLOS_#

샤드 객체에 독립 분산 방식이 적용된 샤드 테이블 정보를 기록하는 메타 테이블이다.

Column name Type Description
SHARD_ID INTEGER 샤드 객체 식별자
NODE_ID INTEGER 샤드 노드의 지역 식별자
SMN BIGINT 샤드 메타 번호

칼럼 정보#

SHARD_ID#

샤드 객체 번호를 나타낸다.

NODE_ID#

데이터가 독립 저장되는 샤드 노드의 지역 식별자 번호를 나타낸다.

SMN#

샤드 메타에 대한 버전 관리 번호를 나타낸다.

성능 뷰 (Performance View)#

성능 뷰 (performance view)란 메모리에 존재하는 구조이지만 일반 테이블 형태로 제공되어 시스템 메모리, 프로세스 상태, 세션, 버퍼, 쓰레드 등에 대한 Altibase 시스템 내부 정보를 사용자에게 제공하는 뷰이다.

사용자가 테이블에 저장된 데이터를 검색하기 위하여 SQL을 사용하는 것처럼, Altibase 운용 시 사용되는 메모리 객체 (예. 세션 정보, 로그 정보)에 관한 정보를 SQL문을 이용하여 성능 뷰로부터 쉽게 검색할 수 있다.

Altibase Sharding에서 성능 뷰는 단일 샤드 노드에서 실행중인 프로세스에 대한 정보를 의미하며 현재 접속된 시스템에 대한 정보를 보여준다.

Altibase에서 제공하는 성능 뷰를 통해서 단일 샤드 노드의 다양한 실행 정보를 얻을수 있으며 자세한 내용은 General Reference 의 성능 뷰를 참고한다.

샤드 성능 뷰 (Shard Performance View)#

Altibase Sharding에서 제공하는 샤딩 전용의 성능 뷰로 전체 샤딩 시스템과 관련한 내부 정보(예. 샤드 세션 정보)를 사용자가 모니터링 할 수 있다.

이 절에서는 Altibase Sharding이 지원하는 샤드 성능 뷰의 구조 및 기능, 종류, 조회 방법, 그리고 각 뷰에서 제공하는 정보에 대해 설명한다.

구조 및 기능#

기존의 성능 뷰와 다르게 샤드 성능 뷰는 전체 샤딩 시스템과 연관된 정보를 한눈에 볼 수 있도록 제공한다.

예를들어, 사용자는 전체 샤딩 시스템의 프로퍼티 설정을 보기 위해서 각 노드에 접속 후 해당 노드의 성능 뷰를 모두 검색해 볼 수 있다. 그러나, 이와 같은 방법으로 전체 샤딩 시스템의 프로퍼티를 검색하는 것은 샤드 노드가 늘 어남에 따라 사용자의 불편을 증가시킨다.

그러므로, 전체 샤드 시스템의 프로퍼티를 검색하기 위해서 특정 샤드 노드에 접속해서 샤드 성능 뷰를 통해 서비스 중인 샤드 노드의 프로퍼티를 검색할 수 있다.

이와 같이 사용자는 샤드 성능 뷰를 통해 편리하게 전체 시스템을 모니터링 할 수 있다.

샤드 성능 뷰의 조회 방법#

샤드 성능 뷰의 전체 목록은 iSQL에서 다음과 같이 조회할 수 있다.

iSQL> SELECT * FROM S\$TAB;

샤드 성능 뷰의 스키마는 일반 테이블과 마찬가지로 iSQL 에서 DESC 명령어를 통해 확인할 수 있고, 데이터는 일반 테이블과 동일하게 SELECT문을 이용하여 검색할 수 있다.

샤드 성능 뷰의 종류#

샤드 성능 뷰의 이름은 S\$로 시작한다. 아래 표는 전체 샤드 성능 뷰의 목록이다.

이름 설명
S\$CONNECTION_INFO 현재 세션에서의 코디네이팅 샤드 노드와 다른 샤드 노드의 연결 상태에 대한 정보
S\$PROPERTY 모든 샤드 노드의 시스템 프로퍼티 정보
S\$SESSION 모든 샤드 노드의 샤드 세션에 대한 세션 정보
S\$STATEMENT 모든 샤드 노드의 세션에서 수행되는 모든 구문 정보

S\$CONNECTION_INFO#

현재 세션에서 코디네이터가 연결한 접속 상태에 대한 정보를 보여주는 성능 뷰 이다.

Column name Type Description
NODE_ID INTEGER 샤드 노드의 지역 식별자
NODE_NAME VARCHAR(40) 샤드 노드 이름
COMM_NAME VARCHAR(64) 접속 정보
TOUCH_COUNT INTEGER 현재 트랜잭션의 DML 발생 횟수
LINK_FAILURE INTEGER 샤드 노드의 연결 상태 0: 정상 1: 실패

칼럼 정보#

NODE_ID#

연결된 샤드 노드의 지역 식별자를 나타낸다.

NODE_NAME#

연결된 샤드 노드의 이름을 나타낸다.

COMM_NAME#

샤드 노드와의 현재 접속 상태를 나타낸다.

TOUCH_COUNT#

샤드 노드와의 연결된 세션 중 현재 트랜잭션에서 발생한 DML 횟수를 나타낸다.

조회 시점의 샤드 노드와의 연결 상태를 나타낸다.

S\$PROPERTY#

샤딩 시스템의 각 노드에 설정된 시스템 프로퍼티의 정보를 보여준다.

Column name Type Description
NODE_NAME VARCHAR(40) 샤드 노드 이름
그 외 컬럼 샤드 노드의 V$PROPERTY 와 동일

칼럼 정보#

NODE_NAME#

노드 이름을 나타낸다.

그 외 컬럼#

위 항목을 제외한 모든 칼럼은 General Reference 의 V\$PROPERTY 의 칼럼 정보를 참고한다.

S\$SESSION#

샤드 세션과 관련한 모든 샤드 노드의 세션에 대한 정보를 보여준다.

Column name Type Description
ID VARCHAR(20) 샤드 세션 식별자
SHARD_META_NUMBER BIGINT 세션이 인식하고 있는 SMN
NODE_NAME VARCHAR(40) 샤드 노드 이름
SHARD_CLIENT VARCHAR(1) 샤드 클라이언트 라이브러리 사용 유무
SHARD_SESSION_TYPE VARCHAR(1) 샤드 세션 유형
SESSION_ID BIGINT 샤드 노드의 V\$SESSION.ID
GLOBAL_TRANSACTION_LEVEL INTEGER 글로벌 트랜잭션 레벨
그 외 컬럼 샤드 노드의 V$SESSION 과 동일

칼럼 정보#

ID#

샤드 세션을 구별하는 고유 식별자이다.

SHARD_META_NUMBER#

세션이 인식하고 있는 SMN 으로 자세한 내용은 샤드 메타 설정의 Session SMN 을 참고한다.

NODE_NAME#

샤드 노드 이름을 나타낸다.

SHARD_CLIENT#

세션의 샤드 클라이언트 라이브러리의 사용 여부이다.

  • Y : 샤드 클라이언트 라이브러리 사용
  • N : 샤드 클라이언트 라이브러리 미사용

SHARD_SESSION_TYPE#

세션의 샤드 세션 타입이다.

  • U : 사용자와 코디네이터간의 사용자(User) 세션
  • C : 코디네이터와 샤드 데이터간의 코디네이터(Coordinator) 세션
  • L : 사용자와 샤드 데이터간의 샤드 라이브러리(Library) 세션

SESSION_ID#

샤드 노드의 세션 식별자로 샤드 노드의 V$SESSION.ID 와 동일한 값이다.

GLOBAL_TRANSACTION_LEVEL#

세션에 설정된 글로벌 트랜잭션 레벨을 나타낸다.

1 : 다중 노드 트랜잭션 (multiple node transaction)

샤딩 메뉴얼의 샤드 트랜잭션 항목을 참조한다

그 외 컬럼#

위 항목을 제외한 모든 칼럼은 General Reference 의 V\$SESSION 의 칼럼 정보를 참고한다.

S\$STATEMENT#

모든 샤드 노드의 세션 별로 실행중이거나 가장 최근 실행된 구문에 대한 정보를 보여준다.

Column name Type Description
SHARD_SESSION_ID VARCHAR(20) 샤드 세션 식별자
NODE_NAME VARCHAR(40) 샤드 노드 이름
SHARD_SESSION_TYPE VARCHAR(1) 세션의 샤드 세션 유형
QUERY_TYPE VARCHAR(1) 사용자 쿼리에 대한 샤드 쿼리 타입
그 외 컬럼 샤드 노드의 V$STATEMENT 와 동일

칼럼 정보#

SHARD_SESSION_ID#

구문이 수행되는 세션의 샤드 세션 식별자이다.

NODE_NAME#

구문이 수행되는 샤드 노드 이름이다.

SHARD_SESSION_TYPE#

구문이 수행되는 세션의 샤드 세션 유형으로 S$SESSION.SHARD_SESSION_TYPE 과 동일하다.

QUERY_TYPE#

Altibase Sharding 관점으로 분류한 사용자 쿼리 유형이다.

  • S (Shard query) : 분산 수행 결과와 단일 수행 결과의 정합성이 보장되는 경우
  • N (Non-shard query) : 분산 수행 결과와 단일 수행 결과의 정합성이 보장되지 않는 경우

단, 코디네이터 커넥션을 통해 수행되는 구문의 경우 분석 대상이 아니므로 '-' 로 표시된다.

그 외 컬럼#

위 항목을 제외한 모든 칼럼은 General Reference의 V\$STATEMENT의 칼럼 정보를 참고한다.