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 장비로..
Database
데이터베이스 정규화란데이터 중복을 최소화 혹은 없애기 위한 작업을 의미합니다. 정규화의 단계는 1NF 부터 시작해서 2NF, 3NF, BCNF, 4NF, 5NF 단계로 이루어 집니다. 주로 3NF 단계에서 정규화 작업은 끝이나며,너무 많은 정규화 작업은 JOIN 으로 인하여 성능을 떨어트릴 수 있으므로 주의하여야 합니다. 요즘 한창 이슈인 코인에 대해서 예시를 들어보겠습니다. 1NF각 열의 데이터가 하나의 값만 가지고 있는 경우를 의미합니다. 특정 테이블에 아래와 같은 데이터가 있다고 가정합니다. 사용자 고유 식별번호 사용자 이름 보유 코인 1001 홍길동 비트코인 1002 임꺽정 비트코인, 리플 1003 성춘향 리플혹은 다음과 같을 수도 있습니다. 사용자 고유 식별번호 사용자 이름 보유 코인 1 보유 ..
CYCLONE GOLDILOCKS 는 이중화를 위해 CDC 방식의 cyclone 프로그램을 지원합니다. cyclone 프로세스가 Master 데이터베이스로부터, Slave 데이터베이스로 반영까지의 단계는 다음과 같습니다.1. Master 데이터베이스에 쿼리가 수행됩니다.2. 수행된 쿼리는 리두로그 파일에 기록됩니다.3. cyclone master 는 리두로그 파일에 기록된 쿼리를 전용버퍼에 캡쳐합니다.4. cyclone slave 의 Applier 들은 버퍼에 들어있는 내용을 Slave 데이터베이스에 반영합니다. CDC 방식은 비동기 방식만을 지원하기 때문에 데이터베이스간의 동기화 시간차가 발생하게 됩니다. CYCLONE 을 사용하기 위해서는, 다음의 제약사항이 필요합니다.1. 데이터베이스는 아카이브 모..
OLTP ( On-Line Transaction Processing )여러 과정의 연산이 하나의 단위 프로세스(트랜잭션)로 실행되도록 하는 프로세스입니다. A 라는 사람이 B 에게 10,000 원을 이체하는 상황을 예로 들어보겠습니다.1. A 라는 사람의 계좌에서 10,000 원이 인출됩니다.2. B 라는 사람의 계좌에 10,000 원이 입금됩니다. 이 단계는 하나의 프로세스로 이루어져야 하며, 중간에 오류가 발생하는경우 모든 단계를 되돌려야 합니다. OLAP ( On-Line Analytical Processing )대용량 데이터를 고속으로 처리하며 쉽고 다양한 관점에서 추출, 분석할 수 있도록 지원하는 데이터 분석 기술입니다.데이터를 분석하여, 소비자 패턴, 연령대별의 선호 물품 등을 판별하여 매출에..
GOLDILOCKS 의 IDENTITY 컬럼 지원 속성 - GENERATED BY DEFAULT AS IDENTITY - GENERATED ALWAYS AS IDENTITY GENERATED BY DEFAULT AS IDENTITY 제약사항 및 사용예제 제약사항 1. 사용자가 값을 지정한 경우 이를 적용하나, 지정되지 않은 경우 자동값을 생성한다. 2. 사용자가 값을 지정한 경우, 자동값은 증가하지 않는다. 사용예제 1. 테이블을 생성합니다.gSQL> CREATE TABLE T1 (C1 INT GENERATED BY DEFAULT AS IDENTITY, C2 INT); Table created. 2. C2 컬럼에 데이터를 삽입합니다.gSQL> INSERT INTO T1 (C2) VALUES (1); 1 ..
GOLDILOCKS 데이터 타입 분류 - 문자형 - 숫자형 - 날짜형 - 이진형 - 대용량형 - INTERVAL 형 - 기타 GOLDILOCKS 데이터 타입 설명 분류 데이터타입 설명 문자형 CHAR (n) CHARACTER (n) 고정 길이 문자형 데이터 타입 최대 2000 Byte VARCHAR (n) VARCHAR2 (n) CHAR VARYING (n) CHARACTER VARYING (n) 가변 길이 문자형 데이터 타입 최대 4000 Byte BOOLEAN TRUE/FALSE 문자형 데이터 타입 숫자형 Native Type NATIVE_SMALLINT 2 Byte 크기의 정수형 데이터 타입 NATIVE_INTEGER 4 Byte 크기의 정수형 데이터 타입 NATIVE_BIGINT 8 Byte 크기..
XA 트랜잭션여러 개의 노드 또는 다른 종료의 데이터베이스가 참여하는 하나의 트랜잭션(=분산 트랜잭션)을 의미합니다.Goldilocks DBMS 에서는 이를 Global Transaction 이라고 칭하고 있습니다. XA 트랜잭션의 로직1. AP 에서 트랜잭션 관리자에게, 트랜잭션을 시작을 알립니다.2. 트랜잭션 관리자는 어느 노드가 트랜잭션에 참여하는지 확인합니다. 다음 각 노드에 트랜잭션의 시작을 알립니다.3. AP 에서 SQL 문장을 통해 작업을 수행합니다.4. 모든 작업이 완료되면 AP 에서 트랜잭션 관리자에게 트랜잭션을 종료를 알립니다.5. 트랜잭션 관리자는 각 데이터베이스 노드에 커밋과 롤백을 동시에 하도록 지시하며 이 때 2 단계 커밋을 수행합니다. 2단계 커밋은 아래 URL 을 참고 하시면..
우선 정말 간단하게 사전적 의미만 알아봅니다.Latency : 한 지점에서 다른 지점으로 보내는데 소요되는 시간Throughput : 단위 시간당 처리할 수 있는 업무 단위량 데이터베이스 관점에서 다시 의미를 풀이하면 다음과 같습니다.Latency : 어떠한 트랜잭션의 요청시간으로부터 반환까지 걸리는 시간Throughput : 시간당 처리할 수 있는 트랜잭션 량 3가지 종류의 사진에 대해 설명해보겠습니다.50km 길이의 차선이 있다고 가정해보겠습니다.통과하는데 걸리는 시간을 L (=Latency), 한시간동안의 통과량을 T (=Throughput) 이라고 계산해보겠습니다. * 사진 11차선 도로가 있고, 차가 시속 100km/h 로 간다고 합니다.L 은 0.5 라는 값이 나옵니다.T 는 2 라는 값이 나..
테이블이나 인덱스같은 저장공간의 데이터블록에 설정 가능한 옵션입니다. INITRANS 와 MAXTRANS * INITRANS1. 데이터 블록에 동시에 접근 가능한 트랜잭션의 초기 수를 의미합니다.2. 트랜잭션이 많이 발생하는 경우 MAXTRNAS 까지 늘어나며, PCTFREE 로 확보된 영역에 추가 확장됩니다. * MAXTRANS1. 데이터 블록에 접근 가능한 최대 트랜잭션 수를 의미합니다.2. 접근하는 트랜잭션 수가 MAXTRNAS 값을 초과하는 경우, 앞의 트랜잭션이 COMMIT 혹은 ROLLBACK 을 해야 다음 트랜잭션이 접근 가능합니다. 그렇다면 INITRANS 를 많이 설정해도 되지 않을까 라는 생각을 하게 되는데,INITRANS 을 위한 슬롯도 블록에 공간을 차지하며, 트랜잭션이 많지 않은 ..