H2가 MySQL, PostgreSQL와의 차이
1. 개요
H2 Database
- 경량·오픈소스 Java 기반 RDBMS (jar 크기 ≈1.5 MB)
- JDBC API 및 일부 ODBC 지원
MySQL/PostgreSQL
- C/C++ 기반, 대규모 서비스용으로 설계
- 풍부한 기능(파티셔닝, 복제, 고가용성 등) 지원
2. 운영 모드
| 구분 | H2 | MySQL/PostgreSQL |
|---|---|---|
| 임베디드(Embedded) | 애플리케이션 JVM 안에서 직접 구동, 가장 빠름 | 불가 (서버-클라이언트 구조) |
| 서버(Server) | 별도 JVM 프로세스에서 실행, 다중 클라이언트 접속 가능 | 표준 서버 모드 (다중 클라이언트 지원) |
| 혼합(Mixed) | 첫 연결은 임베디드, 이후 서버 모드로 전환 | – |
→ 요약: H2는 임베디드(In-JVM), 서버, 혼합 모드 모두 지원하지만, MySQL/PostgreSQL은 서버 모드만 제공.
3. 기능 및 데이터 타입
데이터 타입
- H2: 기본 SQL 타입 + 제한된 함수 집합
- PostgreSQL: 다양한 고급 타입(JSONB, 지리공간 등) 및 방대한 함수 지원
트랜잭션·동시성
- H2: MVCC, 테이블 락, 2단계 커밋 지원
- PostgreSQL: 완전한 MVCC, 표준 분산 트랜잭션, 세밀한 동시성 제어
SQL 방언
- H2는 표준 SQL 지원하나 MySQL/PostgreSQL 고유 방언(함수, 키워드)과 차이 존재
4. 성능 및 용도
속도
- H2: 인메모리 모드에서 극히 빠름 (개발·테스트용)
- MySQL: 높은 동시 읽기 성능, 대용량 OLTP에 강함
- PostgreSQL: 복잡한 분석 쿼리도 빠르게 처리
용도
- H2: 개발·테스트 환경에 최적화(무설정, 빠른 기동)
- MySQL/PostgreSQL: 프로덕션 서비스(가용성·안정성)
5. 관리·운영 측면
설치·운영 편의성
- H2: jar 하나로 실행, 웹콘솔 내장
- MySQL/PostgreSQL: 패키지 설치 및 데몬 관리 필요
클러스터링·복제
- H2: 제한적(서버 모드 클러스터링 지원하나 규모·신뢰성 낮음)
- MySQL/PostgreSQL: 다양한 복제·샤딩·고가용성 솔루션 존재
보안
- H2: 암호화(AES, XTEA), SSL/TLS 지원
- MySQL/PostgreSQL: 인증·권한·네트워크 보안 강력
결론
개발·테스트용으로는
- H2의 임베디드 모드가 빠르고 설정이 없어 편리
Production용으로는
- 기능·안정성·확장성 면에서 MySQL 혹은 PostgreSQL이 적합
필요에 따라 개발 시 H2 → 프로덕션 시 MySQL/PostgreSQL 전환 전략을 많이 사용
728x90
'WIL' 카테고리의 다른 글
| 개발 환경에서 프론트-백 서버 분리 이유 (0) | 2025.06.19 |
|---|---|
| 크래프톤 정글 학습 13주차: Spring Boot로 CRUD 게시판 API 서버 구축기 (0) | 2025.06.18 |
| [Python] 딕셔너리(Dictionary) 문법 (0) | 2025.03.29 |