51 lines
1.3 KiB
Java
51 lines
1.3 KiB
Java
|
|
package com.snp.batch.global.partition;
|
||
|
|
|
||
|
|
import lombok.Getter;
|
||
|
|
import org.springframework.stereotype.Component;
|
||
|
|
|
||
|
|
import java.util.List;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 파티션 관리 대상 테이블 설정
|
||
|
|
*
|
||
|
|
* Daily 파티션: 매일 실행
|
||
|
|
* Monthly 파티션: 매월 말일에만 실행
|
||
|
|
*/
|
||
|
|
@Getter
|
||
|
|
@Component
|
||
|
|
public class PartitionConfig {
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Daily 파티션 대상 테이블 (파티션 네이밍: {table}_YYYY_MM_DD)
|
||
|
|
*/
|
||
|
|
private final List<PartitionTableInfo> dailyPartitionTables = List.of(
|
||
|
|
// 추후 daily 파티션 테이블 추가
|
||
|
|
);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Monthly 파티션 대상 테이블 (파티션 네이밍: {table}_YYYY_MM)
|
||
|
|
*/
|
||
|
|
private final List<PartitionTableInfo> monthlyPartitionTables = List.of(
|
||
|
|
new PartitionTableInfo(
|
||
|
|
"snp_data",
|
||
|
|
"ais_target",
|
||
|
|
"message_timestamp",
|
||
|
|
2 // 미리 생성할 개월 수
|
||
|
|
)
|
||
|
|
);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 파티션 테이블 정보
|
||
|
|
*/
|
||
|
|
public record PartitionTableInfo(
|
||
|
|
String schema,
|
||
|
|
String tableName,
|
||
|
|
String partitionColumn,
|
||
|
|
int periodsAhead // 미리 생성할 기간 수 (daily: 일, monthly: 월)
|
||
|
|
) {
|
||
|
|
public String getFullTableName() {
|
||
|
|
return schema + "." + tableName;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|