-
[Database] H2 DB 개념 및 3가지 모드와 사용법Database 2024. 3. 19. 22:50
📌 목차
- H2 ( DBMS ) 의 개념
- H2 의 3가지 모드 ( Server Mode / Embedded Mode / In-Memory Mode )
- Spring Boot 에서의 H2 사용법
📌 H2 ( DBMS ) 의 개념
H2 는 자바로 작성된 오픈소 관계형 데이터베이스 관리 시스템(RDBMS)이다.
자바 애플리케이션에 임베드하거나 클라이언트-서버 모드에서 구동할 수 있다.
SQL 표준의 일부가 지원된다. 주 프로그래밍 API는 SQL과 JDBC이지만 데이터베이스 또한 PostgreSQL 서버처럼 동작하기 위해 PostgreSQL ODbC를 사용하여 지원한다.
"쉽게 말하자면 우리가 일반적으로 알고있는 Mysql, Oracle 등과 같은 관계형 데이터베이스이며,로컬 환경과 같이 규모가 크지 않은 프로젝트에서 편리하게 사용이 가능한 데이터베이스라고 생각하면 될 것 같다. "
⚡ H2 RDBMS의 특징 및 장단점
▪️ 장점
- 별도의 설치 없이 작은 용량으로 사용이 가능하여 가볍고 빠르다.
- ANSI 표준 SQL 로 DB2 / Derby / HSQLDB / MS SQL Server / MySQL / Oracle / PostgreSQL / Ignite 등 기본적인 DB 와 호환이 가능하다.
- 설정이 간편하다. ( Spring Boot 의 경우 application.yml 파일을 통해 설정이 가능하다. )
▪️ 단점
- 규모가 큰 프로젝트의 경우 안정성과 성능이 부족하다.
- 백업 및 복구 등에 대한 기능이 부족하다.
- Unit Test 등에서 활용을 많이 하지만 Mock 을 이용하는 것이 더 좋은 편이다.
📌 H2 의 3가지 모드 ( Server Mode / Embedded Mode / In-Memory Mode )
H2 DB 에는 3가지 모드가 있다.
각 모드 별 URL 또는 상세 내용은 공식 문서를 통해 확인 가능하다.
Mode 설치 여부 접속 방식 DB 저장 위치 Server Mode O 외부 Local ( 파일 시스템 ) Embedded Mode X Spring Local ( 파일 시스템 ) In-Memory Mode X Spring RAM ⚡ Server Mode
- H2 실행 파일을 다운로드하여 사용 할 수 있다.
- 외부에서 터미널을 통해 H2 서버를 실행해야 한다.
- 서버를 실행하면 Spring에서 application.properties 에 서버 주소를 입력하여 접속한다.
- H2 DB 데이터를 로컬에 직접 저장하고 사용한다.
⚡ Embedded Mode / In-Memory Mode
- H2 실행 파일을 다운로드 할 필요가 없다.
- build.gradle 및 application.properties 설정을 통해 실행 가능하다.
- Spring Boot Application 을 실행 할 때 함께 H2가 실행된다.
- H2 DB 데이터를 Embedded ( Local ) / In-Memory ( RAM ) 에 직접 저장하고 사용한다.
📌 Spring Boot 에서의 H2 사용법
Spring Boot Project 의 경우 resources / application.yml 파일의 설정을 통해 H2 사용을 조작할 수 있다.
- 위의 설정 중 datasource 부분은 생략해도 default 값으로 설정되기 때문에 생략해도 무관하다.
- http://localhost:8080/h2-console/ 를 통해 접속 할 수 있다.
- 접속 후 JDBC URL 항목에 설정한 url 또는 Default 사용 시 콘솔 창에 지정된 값을 이용하여 접속하면 된다.
⚡ 정리
1. JUnit 과 같은 테스트에서 임시로 편리하게 사용할 경우, 따로 설치 없이 Embedded 를 사용할 수 있다.
2. 사용을 위해 간편하게 application.yml 또는 properties 파일에서 속성을 설정 할 수 있다.
3. h2-console 에 접속하여 ANSI SQL 기준으로 사용할 수 있다.
📌 Reference
@choidongkuen.log - H2 DB 개념 및 사용 방법에 대해 알아봅시다
https://velog.io/@choidongkuen/
@Jinny - H2 DB의 3가지 모드와 사용법 - Server Mode, Embedded Mode, In-Memory Mode
https://velog.io/@jinny-l/posts
'Database' 카테고리의 다른 글
[Database] QueryDSL 개념 및 사용 방법 (0) 2024.03.24