728x90
반응형
안녕하세요, 어느덧 6월말이네요.
패스트캠퍼스에 참여한지도 어느덧 3주차입니다. 첫번째 프로젝트 이후 두번째 프로젝트는 오픈소스 라이브러리 만들기가 주어졌습니다.
라이브러리 만들기에 앞서 유의사항
모듈화, 의존성 없애기(spring 의존성 최소화)
이 라이브러리가 '자동화'인지 '편의성' 인지에 따라 달라진다.
또한 라이브러리를 버전업을 했을때 문제점 등을 고려해야한다 라고 말씀해주셨어요
자바 21을 사용해서 라이브러리 만들때 문제점
Java 21은 새로운 문법과 JVM 바이트코드 변경 포함 되어서 기존의 사용자 혹은 일부 빌드 와 호환 되지 않는 문제점이 있습니다.
또한 kafka 혹은 elasticsearch 와 같은 주요 오픈소스와의 호환이 괜찮은 자바 17 혹은 11로 하는것을 추천하더라고요.
제가 만들려는 라이브러리를 소개해드리겠습니다.
개요
MySql2Flink는 기존 MySQL SQL 문법을 분석하여 Apache Flink에서 바로 실행 가능한 형식으로 변환해주는 도구입니다.
특히 실시간 스트리밍 분석이 필요한 시스템에서 유용하며, 다음과 같은 환경을 지원합니다:
- Flink SQL 문법
- Flink Table API(Java)
- Flink CEP 패턴(Java 또는 JSON)
- MySQL SQL을 Flink SQL 및 Table API로 변환
- WHERE 조건을 기반으로 Flink CEP 패턴 자동 생성
- SQL → Flink SQL → CEP Pattern → 실시간 룰 등록 자동화
🧩 핵심 모듈 구성
모듈설명
MySQLParser | MySQL SQL을 내부 객체(SqlQuery)로 파싱 |
FlinkSQLConverter | Flink SQL 문법으로 변환 |
TableAPIConverter | Java Table API 코드로 변환 |
CEPPatternConverter | WHERE 조건을 기반으로 CEP 패턴 생성 |
FlinkTableDDLGenerator | Kafka/JDBC 테이블 생성 SQL 자동 생성 |
RuleExporter | CEP 룰을 Java 또는 JSON 형식으로 출력 |
📌 활용 시나리오
- ✅ 사용자 입력 (MySQL SQL):
SELECT user_id FROM transactions WHERE amount > 10000 AND region = 'KR';
🔄 변환 처리:
Flink SQL로 변환
WHERE 조건을 기반으로 CEP 패턴 생성
🚀 출력 예시 (CEP Java 코드):
import org.apache.flink.cep.pattern.Pattern;
import org.apache.flink.cep.pattern.conditions.SimpleCondition;
Pattern<Event, ?> pattern = Pattern.<Event>begin("start")
.where(new SimpleCondition<Event>() {
@Override
public boolean filter(Event event) {
return event.getAmount() > 10000 && "KR".equals(event.getRegion());
}
});
{
"pattern": "start",
"conditions": [
{
"field": "amount",
"op": ">",
"value": 10000
},
{
"field": "region",
"op": "==",
"value": "KR"
}
]
}
728x90
반응형
'잡담' 카테고리의 다른 글
[Inner Circle] 패스트캠퍼스 4기 - 1주차 후기 (1) | 2025.06.18 |
---|---|
[Inner Circle] 패스트캠퍼스 4기 OT 후기 (9) | 2025.06.09 |
TIL(Today I Learned) #3 이야기 (0) | 2024.11.09 |
아파치 스톰 과 아파치 카프카 (0) | 2024.07.16 |
JDBC -1 (0) | 2022.01.13 |