snp-batch-validation/src/main/java/com/snp/batch/global/partition/PartitionConfig.java
HeungTak Lee 6af2fccbf0 [신규 기능]
- aisTargetImportJob: S&P Global AIS API 연동 (매 분 15초)
- AIS Target 조회 API (MMSI/시간/공간/폴리곤/WKT 검색)
- 항해 조건 필터 검색 API (SOG/COG/Heading/Destination/Status)
- Caffeine 캐시 적용 (TTL 120분, 최대 30만건)
- partitionManagerJob: 매일 1회 일별,월별 파티션 자동 생성

[개선]
- API context-path: /snp-api로 변경 (다른 API 서비스의 Proxy 설정 충돌 방지)
- BaseApiReader 상태 초기화 로직 추가 (재실행 시 0건 버그 수정)
- logback-spring.xml: 로그 파일 분리 및 롤링 정책 적용
2025-12-02 16:24:57 +09:00

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