콘텐츠로 이동

5.컬렉션 옵션#

CollectionOptionsBuilder를 사용하면 컬렉션 생성시 필요한 세부 옵션을 지정할 수 있다. 옵션은 메서드 체이닝 방식으로 지정한다.

주요 옵션#

옵션 설명 기본값
jsonColumnType JSON 저장 타입 (VARCHAR/CLOB/JSON) JSON
tableName 물리 테이블 이름 컬렉션 이름과 동일
shared 공유 컬렉션 여부 false
keyColumn.name 키 컬럼 이름 _ID
keyColumn.type 키 타입 (VARCHAR/INT/BIGINT 등) VARCHAR
keyColumn.size 키 크기 (VARCHAR/CHAR 필수) 40
keyColumn.generationType 키 생성 방식 (UUID/CLIENT) UUID

JSON 컬럼 타입 옵션 설정#

.jsonColumnType(JsonColumnType.VARCHAR)

컬렉션에 저장될 JSON 데이터의 컬럼 타입을 지정한다. 아래 표에서 용도에 따라 VARCHAR, CLOB, JSON 중 하나를 지정할 수 있다. 기본값은 JSON이다.

JsonColumnType#

타입 설명 용도
VARCHAR VARCHAR(32000) 32KB 이하 문서
CLOB CLOB 대용량 문서
JSON Altibase JSON 타입 네이티브 JSON

Caution

JSON 저장 컬럼에 함수 기반 인덱스를 생성하려면 반드시 VARCHAR로 설정해야 한다.

키 컬럼 옵션 설정#

.keyColumn()
    .name("_ID")                  //키 컬럼 이름
    .type(KeyColumnType.VARCHAR)  //키 컬럼 타입
    .size(40)                     //키 컬럼 이름
    .generationType(KeyGenerationType.UUID) //키 생성 방식
.endKeyColumn()

키 컬럼에 대한 세부 설정으로 키 컬럼 이름, 키 카입, 키 크기, 키 생성 방식을 정의할 수 있다.

  • 키 컬럼 이름
.name("_ID")
  • 키 컬럼 타입
.type(KeyColumnType.VARCHAR)

키 컬럼 타입은 VARCHAR, CHAR, INT, SMALLINT, BIGINT 를 선택할 수 있으며, 기본값은 VARCHAR 이다.

타입 Java 타입 크기 필수 UUID 지원
VARCHAR String O O (최소 32)
CHAR String O O (최소 32)
INT Integer X X
SMALLINT Short X X
BIGINT Long X X
  • 키 컬럼 크기
.size(40)
  • 키 생성 방식
.generationType(KeyGenerationType.UUID)

키 생성방식은 UUID, CLIENT 중 선택할 수 있으며, 기본값은 UUID 이다.

  • UUID : API가 자동으로 UUID 생성 (기본값)
  • CLIENT : 클라이언트가 직접 키 제공

테이블 이름 옵션 설정#

.tableName("user_table_name")

물리 테이블이름을 설정하는 옵션으로, 기본값은 컬렉션 이름과 동일한 값이다.

공유 컬렉션 여부 옵션 설정#

.shared("false")

공유 컬렉션 여부를 설정하는 옵션으로 기본값은 false 이다.

예제: UUID 키로 컬렉션 생성#

import com.altibase.document.util.CollectionOptionsBuilder;
import com.altibase.document.api.JsonColumnType;
import com.altibase.document.api.KeyColumnType;
import com.altibase.document.api.KeyGenerationType;

AltibaseDocument options = new CollectionOptionsBuilder()
    .jsonColumnType(JsonColumnType.VARCHAR)
    .keyColumn()
        .name("_ID")
        .type(KeyColumnType.VARCHAR)
        .size(40)
        .generationType(KeyGenerationType.UUID)
    .endKeyColumn()
    .build();

AltibaseCollection books = db.createCollection("books", options);

// 문서 삽입 시 키 자동 생성
AltibaseDocument doc = books.createDocument("{\"title\": \"책 제목\"}");
InsertResult result = books.insertOne(doc);
System.out.println("자동 생성된 키: " + result.getStringKey());

예제: 클라이언트 제공 키로 컬렉션 생성#

AltibaseDocument options = new CollectionOptionsBuilder()
    .jsonColumnType(JsonColumnType.VARCHAR)
    .keyColumn()
        .name("ISBN")
        .type(KeyColumnType.VARCHAR)
        .size(20)
        .generationType(KeyGenerationType.CLIENT)
    .endKeyColumn()
    .build();

AltibaseCollection books = db.createCollection("books", options);

// 문서 삽입 시 키 직접 제공
AltibaseDocument doc = books.createDocument("978-89-123-4567-8", "{\"title\": \"책 제목\"}");
books.insertOne(doc);

예제: 정수 키로 컬렉션 생성#

AltibaseDocument options = new CollectionOptionsBuilder()
    .jsonColumnType(JsonColumnType.VARCHAR)
    .keyColumn()
        .name("SEQ")
        .type(KeyColumnType.BIGINT)
        .generationType(KeyGenerationType.CLIENT)
    .endKeyColumn()
    .build();

AltibaseCollection logs = db.createCollection("logs", options);

// Long 타입 키로 문서 삽입
AltibaseDocument doc = logs.createDocument(1001L, "{\"message\": \"로그 메시지\"}");
logs.insertOne(doc);

예제: 대용량 문서용 CLOB 컬렉션#

AltibaseDocument options = new CollectionOptionsBuilder()
    .jsonColumnType(JsonColumnType.CLOB)  // 32KB 이상 문서 지원
    .keyColumn()
        .name("_ID")
        .type(KeyColumnType.VARCHAR)
        .size(40)
        .generationType(KeyGenerationType.UUID)
    .endKeyColumn()
    .build();

AltibaseCollection largeDocs = db.createCollection("large_documents", options);