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);