ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • H2 Database 란?
    Others 2024. 4. 18. 20:09

     

     

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

    • 백엔드 개발자는 API 개발 부터, 네트워크 및 인프라 구성 및 파일 스토리지 구성등 기본적인 서버 관련 업무 뿐만 아니라 서비스 운영을 위한 로그 수입, 서버 모니터링, 캐싱 등 여러 서비스에 관여하는 개발자이다.
    • 그러므로 영속성이 필용한 정보들을 저장해놓을수 있는 공간이 필요하다.

     

    H2 Database란?

    • H2 DB는 자바 기반의 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다.
    • 테스트 단계 또는 작은 규모의 프로젝트에서 많이 사용됩니다.
    • Gradle 또는 Maven에 의존성만 추가해 주면 쉅고 빠르게 H2 DB를이용할수 있습니다.
    • H2 DB는 In-Memory Mode, Embedded Mode, Server Mode 총 세가지의 모드를 지원해 줍니다

    H2 특징

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

     

    H2 장점

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

     

    H2 단점

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

    In-Memory Mode

    • 애플리케이션(WAS) 구동 시 H2 DB 데이터를 메모리에 올려서 관리하는 방식입니다.
    • 애플리케이션이 종료되면 메모리에 올라가 있던 모든 데이터는 사라집니다.
    • 즉, 휘발성이기 때문에 간단한 테스트에 사용하기 좋습니다.

     

    Embedded Mode

    • 애플리케이션(WAS) 구동 시 H2 DB 데이터를 PC에 저장해서 관리하는 방식입니다. 
    • In-Memory와는 달리 데이터가 사라지지 않는 비휘발성 모드이기 때문에 개발 초기 단계에 사용하기 좋습니다.
kimjihoon