GOLDILOCKS ODBC 는 명령문 수행을 위해 SQLExecDirect 함수를 지원합니다. SQLExecDirect매개변수 마커의 현재 값을 사용하여 명령문을 수행합니다.한번만 수행되는 명령문을 위한 가장 빠른 방법입니다.SQLRETURN SQLExecDirect( SQLHSTMT StatementHandle, SQLCHAR * StatementText, SQLINTEGER TextLength); SQLExecDirect 사용법int main( int aArgc, char** aArgv ) { SQLHENV sEnv = NULL; SQLHDBC sDbc = NULL; SQLHSTMT sStmt = NULL; SQLAllocHandle( SQL_HANDLE_ENV, NULL, &sEnv ) ); SQ..
Database/Goldilocks
GOLDILOCKS ODBC 는 실제 연결을 설정, 해제 하기 위해 SQLConnect, SQLDisconnect 함수를 제공합니다. SQLConnect드라이버와 데이터 소스에 대한 연결을 설정합니다.SQLRETURN SQLConnect( SQLHDBC ConnectionHandle, SQLCHAR * ServerName, SQLSMALLINT NameLength1, SQLCHAR * UserName, SQLSMALLINT NameLength2, SQLCHAR * Authentication, SQLSMALLINT NameLength3); SQLDisconnect특정 핸들과 연결된 연결을 종료합니다.SQLRETURN SQLDisconnect( SQLHDBC ConnectionHandle); SQLConne..
GOLDILOCKS ODBC 는 자원의 할당, 해제를 위해 SQLAllocHandle, SQLFreeHandle 함수를 제공합니다. SQLAllocHandle환경, 연결 또는 명령문 핸들을 할당합니다.HandleType 은 핸들의 유형으로 SQL_HANDLE_ENV, SQL_HANDLE_DBC, SQL_HANDLE_STMT 중 하나여야 합니다.ODBC 3.0 이전버전의 SQLAllocConnect, SQLAllocEnv, SQLAllocStmt 을 대체합니다.SQLRETURN SQLAllocHandle( SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE * OutputHandlePtr); SQLFreeHandle환경, 연결 또는 명령문 핸들과 연관된 자..
GOLDILOCKS 는 ANALYZE TABLE, ANALYZE SYSTEM 구문으로 OPTIMIZER 가 최적화된 플랜을 만드는데 도움을 줄 수 있습니다. ANALYZE SYSTEM시스템의 통계 정보를 분석합니다.1. CPU 가 초당 처리할 수 있는 오퍼레이션 수2. NETWORK 가 초당 처리할 수 있는 오퍼레이션 수 ( 클러스터 인 경우 )를 측정합니다. ANALYZE SYSTEM 은 장비나, 네트워크가 변경되는 경우 한번만 수행하면 됩니다.분석된 데이터는 DBA_STAT_SYSTEM 테이블에 저장됩니다.gSQL> ANALYZE SYSTEM COMPUTE STATISTICS; analyzed. gSQL> SELECT * FROM DBA_STAT_SYSTEM; CPU_OPS NETWORK_IOPS N..
GOLDILOCKS 는 XA 트랜잭션간 데이터 소실을 방지하기 위해 2단계 커밋을 지원합니다. 사진은 G1, G2 그룹에 대해 글로벌 트랜잭션이 발생한 뒤 커밋을 수행했을 때의 로직입니다. Prepare Commit 단계1. APP 는 G1N2 노드에 Prepare Commit Protocol 을 전송합니다.2. G1N2 노드는 자기자신 노드에 Prepare Commit 을 수행함과 동시에 Global Coordinator 인 G1N1 장비로 Prepare Commit Protocol 을 전송합니다.3. G1N1 장비는 트랜잭션에 참여하는 모든 노드의 cserver 에 Prepare Commit Protocol 을 전송합니다.4. 응답받은 각 장비는 Prepare Commit 을 수행 후 G1N2 장비로..
GOLDILOCKS CLUSTER 는 트랜잭션의 종류에 따라 명칭 및 동작 방식이 다릅니다. 명칭 트랜잭션의 범위 동작 방식 Global Transaction 전체 노드의 전체 멤버 트랜잭션의 상태를 Prepare 로 변경 트랜잭션이 기록한 모드 로그가 디스크로 반영 후 응답을 Global Coordinator 에 전송 :: 복구 시 리두로그로부터 Commit 혹은 Rollback 을 판단 Global Coordinator 는 클라이언트에 응답 Global Commit 클러스터 전체 노드의 전체 멤버에 커밋프로토콜 전송 전송한 멤버로부터 응답을 받을 때 까지 대기 비동기로 수행 가능 Domain Transaction 특정 노드의 전체 멤버 트랜잭션의 상태를 Prepare 로 변경 트랜잭션이 기록한 모든 ..
GOLDILOCKS 는 유저와 스키마가 1 : N 관계를 가질 수 있습니다.http://mozi.tistory.com/101?category=999095 스키마 소유권 부여MOZI 유저에 SCHEMA1, SCHEMA2, SCHEMA3 스키마 소유권을 부여하는 방법입니다.gSQL> CREATE SCHEMA SCHEMA1 AUTHORIZATION MOZI; Schema created. gSQL> CREATE SCHEMA SCHEMA2 AUTHORIZATION MOZI; Schema created. gSQL> CREATE SCHEMA SCHEMA3 AUTHORIZATION MOZI; Schema created. 유저가 소유하고 있는 스키마는 USER_SCHEMAS 테이블로 조회할 수 있습니다.gSQL> SEL..
GOLDILOCKS 는 유저와 스키마가 1:N 의 관계를 가집니다.유저는 스키마를 0개 부터 1개 이상을 소유할 수 있습니다. 유저별로 스키마를 소유할 수 있는 방법에 대한 그림입니다. 타 DBMS 의 경우의 유저와 스키마의 관계는 다음과 같습니다. DBMS USER : SCHEMA 관계 Oracle 1 : 1 MySQL 1 : 1 Postgres 1 : N
GOLDILOCKS 는 클러스터 환경에서 Row Identifier 를 위해 Global Secondary Index 를 지원합니다. Global Secondary Index 란?http://mozi.tistory.com/99?category=999095 테이블에 Global Secondary Index 가 없는 경우,LIMIT FETCH 와 같은 쿼리가 수행되지 않습니다. Global Secondary Index 유무 확인하기gSQL> SELECT TABLE_OWNER, TABLE_SCHEMA, TABLE_NAME FROM ALL_GSI_PLACE; TABLE_OWNER TABLE_SCHEMA TABLE_NAME ----------- ----------------- --------------------..
GOLDILOCKS Cluster 에서는 모든 멤버의 데이터의 통일성을 위해 Global Secondary Index 를 지원합니다. Global Secondary Index 란Cluster 환경의 각 멤버들의 레코드의 GRID ( Global Row Identifier ) 값을 Key 로 구성한 B-Tree 인덱스 입니다.Global Secondary Index 가 없는 테이블에 대해서는 LIMIT, FETCH 같은 Non-Deterministic DML 을 지원하지 않습니다. GRID각 멤버들의 동일한 레코드에 대해서 구분할 수 있는 Unique 한 값으로, 데이터가 최초 저장될 때 할당되어 모든 멤버들에게 전파되어 함께 저장됩니다.레코드의 값이 갱신되거나 Shard Key 가 변경되어도 GRID 값..