2. DBMS이야기/04. CUBRID

03. CUBRID 저장구조와 데이터 타입

OSSW(Open Source System SoftWare 2014. 9. 20. 23:30

안녕하세요~


오늘은 저장구조 및 데이터 타입을 알아볼게요~


오라클에서 블럭 (최소 단위)에 해당 하는 Page는 2KB, 4KB(기본), 8KB, 16KB, 32KB로 구성할 수 있고,

구성후에는 변경이 불가하니 신중하게 구상해야 해요, 데이터베이스 내에는 동일한 크기를 가집니다.


오라클에서 테이블스페이스 정도에 해당하는 Volume에는 Generic (SYSTEM 정도), DATA, INDEX, TEMP 들로 구성되어 있어요


오라클의 Redo Log 파일에 해당 하는 Active Log File이 있고, offline된 Active Log 파일은 Archive Log File이 됩니다.



다음은 데이터 타입의 특징을 알아볼게요


1. 테이블

   개수 무제한

   이름에 한글, 영문자, 숫자, _, #, % 사용 가능, 첫글자는 문자(영문, 한글)

   이름 최대 길이는 255자, 대소문자 구분 없음 (오라클은 30자예요~)


2. 컬럼

   테이블 당 최대 6,400 개 생성 가능

   이름에 한글, 영문자, 숫자, _, #, % 사용 가능, 첫글자는 문자(영문, 한글)

   이름 최대 길이는 255자, 대소문자 구분 없음 (오라클은 30자예요~)


3. index

   테이블 당 최대 6,400 개 생성 가능

   이름지정 가능

   제약조건


4. NULL: NULL 값을 허용

   NOT NULL : NULL 값을 허용하지 않음

   unique : 중복된 값 허용하지 않음, default 와 같이 선언 불가

   primary key / foreign key


5. 특징

   예약어 사용시 ""로 감싸주어야 함. 예) "date"

   데이터베이스 이름 최대 길이 : 128자, 대소문자 구분

   db_root = 오라클의 dual

   논리형

      - boolean: 지원 않함


6. 문자형

   byte단위 처리

   입력되는 codeset 유지

     - 내부적으로 codeset 지정하지 않음

   char: 고정길이형

     - 다른 컬럼과 같이 저장

     - 길이가 일정하거나 인덱스로 사용될 때

     - select시 rtrim() 필요

    varchar: 가변길이형

     - 최대1G(string) (오라클은 최대 4000 Byte)

     - 오라클의 LONG, CLOB 처럼 쓰이네요

     - 다른 컬럼과 다른 곳에 저장

     - 데이터길이와 저장된 위치에 대한 포인터 저장에 대한 overhead

     - update시 길이 변하는 경우 overhead


7. 숫자형

   smallint: 2bytes, -32768 ~ 32767

   integer: 4bytes, -2147483648 ~ 2147483647

   bigint: 8bytes, -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

   numeric: numeric(10), numeric(10,2), numeric(38)

     - 오라클의 number와 같은 기능입니다

   float:-10e38 ~ 10e38, 유효자리수 초과하는 수치 정밀도 보장 불가

   double:-10e308 ~ 10e308, float 와 마찬가지로 유효자리수 문제

   Binary data

   GLO: CUBRIDOID in JAVA, etc

   BIT Varying : FileInputStream in JAVA

     - 오라클의 BLOB 기능이네요


8. 날자/시간형

   '' 값 허용 않함, NULL 또는 표현 가능한 값 입력 허용

   date:날자만 저장, 기본형 mm/dd/yyyy

   time:시간만 저장, 기본형 hh:mi:ss

   datetime: 1/100초, 'mm/dd[/yyyy] hh:mi[:ss.ff]' 또는 '[yyyy-]mm-dd hh:mi[:ss.ff]'

   timestamp:1970/1/1 09:00:00 이후 경과한 초, 최대 2038/1/19 03:14:07

   to_char() 등 사용시 인덱스 사용 불가, 상수 사용시 기본형 사용 권장

      예) where reg_date = ‘12/25/2009’ and reg_time = '18:32:50'


9. NULL is not '' (empty string)

 string_field = ''

 string_field is null

 string_field is not null

 string_field = null (결과 예상 못함)


 엄격한 데이터 형 비교

  - where 1 = '1' : 에러 (오라클에서는 내부적으로 형변환을 해주었지만, CUBRID는 쓰는 사람이 챙겨야해요~)

  - select 1 + '1' : 에러


다음 시간에는 시스템 카타로그 (오라클의 딕셔너리뷰)에 대해 알아볼게요~


출처 : 큐브리드 교육메뉴얼                                              (by 진준호 2014.09.20)