DBMS 동향 및 큐브리드 로드맵

Download Report

Transcript DBMS 동향 및 큐브리드 로드맵

CUBRID 소개
(Object 개념)
서비스 사업부 / 기술지원팀
목차
 구조
 일반적 특징
 객체지향 특징
 ORDB 개념을 이용한 스키마
 ORDB 개념을 이용한 질의
구조
일반적 특징
 RDBMS 계승
–
–
–
–
성능과 안정성
보편성 및 확장성
SQL-2 (ANSI SQL 92)
default, not null, unique, primary key 등 각종 constraint
지원
– view 지원
– trigger 지원
일반적 특징(계속)
 대용량
– 멀티볼륨 DB
– DB 개수/크기, 테이블 개수/크기 무제한
– 컬럼개수:6,400, 컬럼크기:2G, 색인개수:6,400
 확장성
–
–
–
–
멀티볼륨 DB – 볼륨추가
멀티쓰레드서버 – 멀티 CPU 사용 최적화
복제(replication) – 서버 추가
분할(partition) – 데이터 확장 대처
일반적 특징(계속)
 고성능 서버 구조
–
–
–
–
–
멀티쓰레드, 멀티 서버
cost based optimizer(CBO)
질의 플랜 캐쉬
복제(replication) – 질의 분산
분할(partition) – 질의분할 최적화
 고성능 클라이언트 구조
– broker 미들웨어 포함
• 쓰레드 풀 관리
• 자동 부하 최적화 기능
– 객체 메모리 캐쉬
일반적 특징(계속)
 트랜잭션
– 완벽한 트랜잭션 ACID 보장
• commit, rollback, savepoint
– 시스템/DB 장애시 트랜잭션 일치성 보장
– 복제간 트랜잭션 일치성 보장
– 다중 단위 잠금
• DB, 테이블, 객체(레코드)
– 교착상태(deadlock) 자동 해결
– 분산 트랜잭션 지원
• JAVA, C-API
일반적 특징(계속)
 백업/복구
– 트랜잭션 일치성 보장
– on-line/off-line 백업 지원
– 3단계 백업 레벨 지원
• full, incremental-1, incremental-2
–
–
–
–
장애발생시점 또는 특정시점으로의 복구 지원
병렬 백업/복구 지원
실시간 압축 백업 지원
다양한 3rd-party 백업 시스템과의 연동
• BackupXcelerator(Ncerti)
• Lagato NetWorket(EMC)
• Netvault(BakBone)
 복제
– 트랜잭션 일치성 보장
일반적 특징(계속)
 보안 및 권한 관리
– 사용자 권한 관리
• 사용자, 그룹, 개체, 권한
 풍부한 개발 환경
– 표준 API
• ODBC, JDBC, OLD DB, PHP, Ruby, Python, E-SQL
– Native API
• CAS-CCI, C-API
 JAVA stored procedure
일반적 특징(계속)
 큐브리드 매니져
– 플랫폼과 무관하게 사용(JAVA 로 개발됨)
– 관리,질의,진단,튜닝 통합도구
객체지향 특징
 ORDBMS (Object-Relational DBMS)
– RDBMS 계승
• 성능과 안정성
• 보편성 및 확장성
• SQL-2 (ANSI SQL 92)
– Object 확장
•
•
•
•
사용자 정의 데이터 타입(User Defined Data Type)
집합형 데이터 타입(Collection Data Type)
메소드(Method)
상속(Inheritance)
객체지향 특징(계속)
 OID (Object IDentifier)
– Database 내 class 또는 record 에 대한 IDentifier
• 물리적 위치 정보(volumn ID, page ID, slot ID)
– 검색을 하지 않으므로 데이터에 대한 빠른 접근 보장
• 재구성되지 않는한 변경되지 않음
• 사용자정의 데이터타입 사용시 해당 컬럼에 저장되어 지는 값
스키마 정보
 게임 캐릭터 정보에 대하여 간단한 구조로 설계
– 고려사항
• 사용자 정보 : 1개의 캐릭터를 가짐.
• 캐릭터 정보 : 여러 개의 아이템을 가짐.
• 아이템 정보 : 아이템 이름만 가짐
사용자정보
캐릭터정보
이름 char(10)
캐릭터 캐릭터정보
이름 char(10)
아이템 multiset(아이템정보)
아이템정보
이름 char(10)
스키마 정보(계속)
 스키마 생성 구문
create class 아이템정보 (
이름
char(10)
)
create class 캐릭터정보 (
이름
char(10),
아이템
multiset(아이템정보)
)
create class 사용자정보 (
이름
char(7),
캐릭터
캐릭터정보
)
질의
 입력
– 동시 입력
• 캐릭터정보의 아이템은 한 개만 가진 것으로 간주
insert into 사용자정보(이름,캐릭터) values('사용자1',
(insert into 캐릭터정보(이름,아이템) values('캐릭터1',
{(insert into 아이템정보(이름) values('아이템1'))} )
)
)
질의(계속)
 입력
– 입력후 OID 를 얻어 입력
• 캐릭터정보의 아이템은 두개를 가진 것으로 간주
insert into 아이템정보(이름) values('아이템1') to :item1;
insert into 아이템정보(이름) values('아이템2') to :item2;
insert into 캐릭터정보(이름,아이템) values('캐릭터1', {:item1,:item2}) to :char1;
insert into 사용자정보(이름,캐릭터) values('사용자1', :char1)
질의(계속)
 입력
– 검색을 통하여 OID 를 얻어 입력
• 캐릭터정보의 아이템은 두개를 가진 것으로 간주
insert into 아이템정보(이름) values('아이템3');
insert into 아이템정보(이름) values('아이템4');
select 아이템정보 into :item1 from 아이템정보 where 이름 = '아이템3';
select 아이템정보 into :item2 from 아이템정보 where 이름 = '아이템4';
insert into 캐릭터정보(이름,아이템) values('캐릭터2', {:item1,:item2}) to :char1;
insert into 사용자정보(이름,캐릭터) values('사용자2', :char1)
질의(계속)
 검색
– 기본적인 검색
select * from 사용자정보;
select * from 캐릭터정보;
select * from 아이템정보
질의(계속)
 검색
– OID 를 이용하여 해당 레코드의 필드값 보기
– 큐브리드 매니져의 OID 탐색기(도구메뉴) 사용
질의(계속)
 검색
– path expression 을 이용한 검색
select 이름, 캐릭터.이름 from 사용자정보;
질의(계속)
 검색
– set derived table 을 이용한 검색
select 이름,item.이름 from 캐릭터정보, table(아이템) as t(item)
질의(계속)
 수정
– 사용자의 캐릭터 정보를 새로운 캐릭터(가진 아이템은 없음)를
만들고 그 캐릭터로 변경
insert into 캐릭터정보(이름,아이템) values('캐릭터10', {}) to :char10;
update 사용자정보 set 캐릭터 = :char10 where 이름 = '사용자1‘
질의(계속)
 수정
– 캐릭터의 아이템을 하나 제거
select 아이템정보 into :item1 from 아이템정보 where 이름 = '아이템3';
update 캐릭터정보 set 아이템 = 아이템 - {:item1} where 이름 = '캐릭터2'
질의(계속)
 수정
– 캐릭터의 아이템을 하나 추가
insert into 아이템정보(이름) values('아이템5') to :item5;
update 캐릭터정보 set 아이템 = 아이템 + {:item5} where 이름 = '캐릭터2'
Beyond Software!