H2 DB 개념 및 사용 방법에 대해 알아봅시다.

최동근·2022년 12월 16일
0

데이터베이스

목록 보기
1/5


다양한 스프링 관련 프로젝트를 진행하면서 많은 선배 개발자분들이 로컬 환경에서 테스트를 위해 H2 데이터베이스를 사용하는 것을 보았습니다.
스프링 프레임워크 개발 환경에서 H2는 최고의 데이터베이스라는 말을 듣고 H2 에 대해 깊게 공부해 보고 싶어 이 글을 작성하였습니다.🚀

오늘은 백엔드 개발자라면 꼭 알아야 할 관계형 데이터 베이스 관리 시스템(RDBMS)인 H2 DB에 대해 알아보려고 합니다. 🤔

목차 📚

  1. 백엔드 개발자에게 데이터베이스란?
  2. H2 데이터베이스란?
  3. H2 데이터베이스 사용법

💡 1. 백엔드 개발자에게 데이터베이스란?

개발자라면 당연히 데이터베이스에 대해 어느 정도의 지식이 필요하다고 생각하지만, 특히 백엔드 개발자는 데이터베이스에 대한 기본 지식이 무조건 꼭 필요하다고 생각합니다 ❗️


<출처 https://leehyungi0622.github.io/2021/06/05/202106/210605-data-flow/>

백엔드와 DB에 대한 연관성을 한번 떠올려 볼까요?
백엔드 개발자는 눈에는 보이지 않는 API 개발 부터, 네트워크 및 인프라 구성 및 파일 스토리지 구성 등 기본적인 서버 관련 업무 뿐만 아니라 서비스 운영을 위한 로그 수입, 서버 모니터링, 캐싱 등 여러 서비스에 관여하는 개발자입니다.
그렇기 때문에 영속성이 필요한 정보들을 저장해놓을수 있는 공간이 필요합니다. 만약 영속성이 필요한 정보들이 가벼운 메모리 공간에 저장된다면 서버가 중지되거나 하드웨어 운영체제의 결함으로 소중한 데이터들이 모두 날아가버릴수가 있습니다.(😱)

영속성이 생소하다면 제가 게시한 글 영속성(Persistence)란?을 참고해주세요 😎

💡 2. H2 데이터베이스 (feat. Java 를 위해 태어난 데이터베이스)

일반적으로 관계형 데이터베이스를 처음 배울때 Mysql, Oracle 와 같은 대중적인 데이터베이스를 가장 먼저 접하게 됩니다.
데이터베이스를 공부하는데 있어 가장 좋은 방법이고, 개발자를 꿈꾸는 많은 사람들이 이런 단계로 데이터베이스에 대해 공부하기 시작합니다.

하지만 로컬 환경에서 규모가 크지 않은 프로젝트에서 DB 선택시 H2 데이터베이스는 최고의 선택이 될 수 있습니다.

H2 는 자바로 작성된 관계형 데이터베이스 관리 시스템이다.

자, 그럼 본론으로 들어가서 H2 DB 의 특징을 알아보겠습니다.

H2 특징 📚

  • 인 메모리 DB 입니다.(일반적인 데이터베이스와 달리 프로그램 구동시 메모리(RAM) 에 데이터 저장)
    - 애플리케이션이 종료되면 모든 메모리가 삭제됩니다.(휘발성)
  • 개발 단계에 활용하거나 테스트 코드에서 자주 활용 됩니다.
    - 자바로 작성된 RDBMS 입니다.
  • 임베디드 모드와 서버 모드 둘다 구동 됩니다.
  • 브라우저 기반 콘솔 프로그램 입니다.

H2 장점 👍

  • 별도의 설치가 필요 없으며 2MB 정도의 적은 용량을 필요로 하는 프로그램이며 매우 가볍고 빠릅니다.
    -하드 디스크가 아니라 메모리에서 Data CRUD 연산을 함으로 상대적으로 빠릅니다.
  • ANSI 표준 SQL로 여러 호환성 모드를 지원 합니다.
    - DB2, Derby, HSQLDB, MS SQL Server, MySQL, Oracle, PostgreSQL, Ignite 등의 기본적인 데이터베이스 벤더와 호환 가능합니다.
  • 설정이 단순합니다.
    - application.properties(yml) 설정이 단순합니다.

H2 단점 🤔

  • 대규모 프로젝트에서는 안정성과 성능이 부족
    - 아무래도 Mysql, Oracle 과 같은 성능이 뛰어나고 대중적인 RDBMS 에 비해 안정성 면에서나 성능 면에서나 떨어지는 것이 당연합니다.
  • 백업, 복구 등에 대한 기능 부족
    - 인 메모리 RDBMS 이다 보니, 백업, 복구 기능이 부족합니다.
  • Unit Test 에서 활용되지만 Mock 을 이용하는 것이 더 좋은 편입니다.

💡 3. H2 데이터베이스 사용법

resources 폴더에 존재하는 application.yml 파일 설정

참고로 설정 파일에서 datasource 부분을 생략해도 무방합니다.
하지만 url을 설정하지 않았기에, 실행시킬 때마다 인텔리제이 콘솔창에 난수로 출력되는 url 주소를 복사하여 접속해야 한다는 수고로움이 있습니다. 따라서 되도록이면 해당 설정파일과 비슷하게 설정하여 H2 데이터베이스를 실행합시다! 🚨

자, 위와 같이 파일 설정을 완료한 후 스프링을 실행시켜 볼까요?

해당 이미지는 실행 후, 인텔리 제이 콘솔창에 한 부분입니다.
이해를 해보자면, /h2-console 이라는 주소로 H2 데이터베이스를 브라우저 콘솔로 접속할 수 있으며
'jdbc:h2:mem:dividends' jdbc url 로 접속이 가능하다는 뜻으로 이해 할 수 있습니다.

해당 이미지는 브라우저 창에 localhost:8080/h2-console 을 입력한 결과입니다.
약간 구식의 콘솔창이 뜨는게 보이시죠? 여기서 저희가 application.yml 파일에 설정한 정보를 입력해주시면

제가 생성한 테이블 정보가 뜨는게 보이시죠?~
해당 공간에서 사용하는 쿼리문을 작성하면 일반적인 RDBMS 기능을 사용 할 수 있습니다.🚀🚀

참고

H2 위키백카
H2 DB란?

profile
비즈니스가치를추구하는개발자

0개의 댓글