H2 데이터베이스의 Connection mode
2023. 7. 4. 12:55ㆍDB
728x90
H2 데이터베이스 콘솔을 실행시켜보면, Save Settings에 Embedded와 Server라 써있는 것을 본적 있을 것이다.
그렇다면, Embedded와 Server는 각각 어떤 장단점이 있을까???
Embedded 모드
애플리케이션이 JDBC를 사용하여 동일한 JVM 내에서 데이터베이스를 연다.
이 방식의 특징은 다음과 같다.
- 가장 빠르고 쉬운 연결 모드이다.
- 한 번에 하나의 가상머신 및 클래스 로더에서만 열릴 수 있다.
- 다중 스레드 환경에서 동시에 여러 작업을 수행하기가 어렵다.
- 다중 스레드 환경은 동시에 여러 개의 스레드가 실행되는 환경인 데, 이를 쉽게 말해면 동시에 여러 작업이 처리된다. == 즉, 동시에 여러 요청이 들어온다!
- 다중 스레드 환경에서 동시에 여러 작업을 수행하기가 어렵다.
- 애플리케이션의 스레드가 데이터베이스에 대한 입출력 작업을 수행한다.
- 스레드가 데이터베이스에 대한 입출력 작업을 수행 중 종료된다면, 데이터베이스의 무결성을 해칠 수 있다.
- 예외 발생 시 또는 강제적으로 서버가 종료될 때 등등..
- 스레드가 데이터베이스에 대한 입출력 작업을 수행 중 종료된다면, 데이터베이스의 무결성을 해칠 수 있다.
Embedded모드를 사용할 때는 아래와 같은 형식의 url을 사용한다.
jdbc:h2:mem:test
그리고, 서버를 돌린 후 아래의 url로 접속하면 h2 console이 나온다.
http://localhost:8080/h2-console
Server 모드
서버 모드는 애플리케이션이 JDBC 또는 ODBC API를 사용하여 원격으로 데이터베이스를 연다.
이 방식의 특징은 다음과 같다.
- 여러 애플리케이션을 해당 데이터베이스에 동시적으로 연결할 수 있다.
- 모든 데이터 처리가 TCP/IP를 통하여 전송되기때문에 Embedded 모드보다 상대적으로 느리다.
Server 모드를 사용할 때는 아래와 같은 형식의 url을 사용한다.
jdbc:h2:tcp://localhost/~/test
결론
그렇다면, 로컬에서 개발시에는 어떤 모드를 사용해야할 까??
현재 필자는 카카오에서 주관하는 카카오테크캠퍼스(부트캠프??)에서 공부 중이다.
카카오테크캠퍼스 실습 매니저님께 다음과 같은 질문을 하였다. 그리고 아래와 같은 답변을 받았다.
로컬에서 개발 시에는 Embedded 모드를 사용하자!!
728x90
'DB' 카테고리의 다른 글
한 테이블에 클러스터형 인덱스와 보조 인덱스가 동시에 있다면 어떤 구조일까? (0) | 2023.09.07 |
---|---|
MySQL이 인덱스를 이용하는 방법 (0) | 2023.09.07 |
인덱스 키 값의 크기가 조회에 영향을 미치는 요소 (0) | 2023.09.05 |
테이블 설계의 기본 정규화 (1) | 2023.06.27 |
mysql - 인덱스에 대하여 (0) | 2022.07.05 |