인프런 커뮤니티 질문&답변
상용 시스템에서 Spring Batch H2 DB
작성
·
27
1
킬구형
우리 매니저는 무슨 이유인지 mysql, postgres처럼 RDB를 무지무지 싫어해, 어떤 말을 해도 RDB는 절대 안된다고 하걸랑
그런데 하필이면 Spring Batch가 RDB를 필요로 한단 말이지!
매일 밤마다 상용 서버의 로그 데이터를 분석하고 다른 데이터 소스로 보낼 정도로만 쓰려고 하는데, Spring Batch RDB로 H2 file mode나 sqllite로 Spring Batch를 돌려도 문제가 없을까 헝헝... 나 슬퍼
답변 2
2
반갑다 형 사실 나도 h2쓴다 💀
잘 생각해봐라 성능도 성능이지만 관시 복잡도가 너무 올라간다
배치6부터는(정확히는 5.x.x) 인메모리 기반으로도 쓸 수 있다
12월에 만나자 그럼 이만 💀0
안녕하세요, 인프런 AI 인턴입니다.
gyuyoung park님, Spring Batch가 RDB를 필요로 하는 상황에서 H2 DB 또는 SQLite를 사용하는 것에 대한 고민이 있으시군요. 아래에서 가능성과 주의할 점에 대해 설명드리겠습니다.
Spring Batch와 H2 DB/SQLite 사용
Spring Batch는 배치 메타데이터를 저장하기 위해 데이터베이스를 필요로 하는데, 이는 배치 작업의 상태, 이력 및 관리 등에 사용됩니다. 꼭 MySQL이나 PostgreSQL과 같은 RDBMS를 사용해야 하는 것은 아니지만, 몇 가지 고려사항이 있습니다.
H2 Database:
- File Mode: H2는 메모리 모드와 파일 모드로 사용할 수 있습니다. 파일 모드는 실제 파일에 데이터를 저장하므로 시스템 재시작 시에도 데이터가 유지됩니다.
- 장점: 가벼운 무게, 빠른 설치 및 설정, 개발과 테스트 환경에서의 높은 유연성을 제공합니다.
- 한계: 대규모 데이터나 트랜잭션 빈도가 높은 배치 작업에는 적합하지 않을 수 있습니다.
- File Mode: H2는 메모리 모드와 파일 모드로 사용할 수 있습니다. 파일 모드는 실제 파일에 데이터를 저장하므로 시스템 재시작 시에도 데이터가 유지됩니다.
SQLite:
- SQLite는 C로 작성된 경량의 데이터베이스로, 파일 기반 접근을 제공합니다.
- 장점: 설치가 필요 없고 독립적으로 작동합니다.
- 한계: 동시 접근 처리 능력이 제한적이며, 고부하 환경에서는 성능 문제를 초래할 수 있습니다.
- SQLite는 C로 작성된 경량의 데이터베이스로, 파일 기반 접근을 제공합니다.
권장 구성
- 데이터 규모 및 트랜잭션 빈도가 크지 않다면 H2 또는 SQLite를 사용할 수 있습니다. 단, 상용에서의 사용은 신중하게 결정해야 하며, 실제 배포 전 테스트 환경에서 충분히 검증하시기 바랍니다.
- 상용 시스템에서 긴밀한 트랜잭션 관리를 요구한다면, 내부 정책 및 요구 사항에 맞추어 장기적으로는 완성된 RDBMS로의 전환을 고려해 보실 것을 권장드립니다.
참고
관련된 추가적인 정보는 Spring Batch 메타데이터 저장에 대해 깊이 있는 자료를 찾아보시기 바랍니다. 다음 링크도 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




