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