백엔드

내장형 DB (인메모리 데이터베이스) 동기화

CyberI 2022. 12. 21. 16:43

안녕하세요

 

이번 글에서는 내장형 DB (인메모리 데이터베이스) 종류와 Scale-Out 또는 HA 구조에서의 내장형 DB 동기화 기술 구현 방식에 대해 설명드리도록 하겠습니다.

 

내장형 DB (In-memory DB) 란?

디스크 베이스 DB와 반대로 메모리에 데이터를 저장하는 것을 인메모리 DB라고 합니다. 외부 저장 장치에 데이터를 저장하지 않고 메모리에서 데이터를 읽고 쓰기 때문에 디스크 베이스 DB 대비 데이터 이용 속도가 빠른 것이 특징입니다.

 

Java에서의 내장형 DB 엔진은 일반적으로 Jar 파일 안에 포함되어 있으며 애플리케이션이 실행되는 동안 동일한 JVM 내에서 동작합니다. 내장형 DB 관련 기술을 구현하는 경우 데이터 저장 방식, 네트워크 구조 등 여러 데이터베이스 환경을 고려하여 데이터 공유를 위한 최적의 방안을 선택할 필요성이 있습니다.

 

DBMS 특징과 장점

1. derbyDB

- Apache에 오픈소스로 공개되어 있어 간단하게 구성할 수 있고 안정성이 높음

- 내장모드 & 서버모드 모두 지원

- 다른 JVM 클라이언트의 TCP/IP 연결 허용

- JDBC 및 ANSI/ISO SQL 스펙과 같은 데이터베이스 표준 준수

- JDBC 연결 시 URL 형태 : jdbc:derby://{IP}:{Port}/{DB생성디렉토리}/{DB명};create=true

*DB생성디렉토리 : DB파일이 생성되는 디렉토리를 지정하고 싶으면 여기에 설정함, 절대경로 입력가능하며 default로는

JVM을 실행하는 디렉토리의 하위로 생성됨

*DB명 : DB생성디렉토리 하위에 DB명으로 데이터파일이 저장됨

 

2. H2

- 자바 기반의 오픈소스 RDBMS

- 브라우저 기반의 콘솔모드를 이용할 수 있으며 설치과정이 불필요

- 인메모리 DB를 지원하며 디스크 테이블도 생성 가능

- 내장모드 & 서버모드 모두 지원

- 가성비가 좋으나 안정성 문제로 소규모 프로젝트의 테스트용으로 사용

- JDBC 연결 시 URL 형태 : jdbc:h2:[file:][<path>]<databaseName>

 

3. HsqlDB (HyperSQL)

- 자바 기반의 오픈소스 RDBMS

- 인메모리 DB를 지원 / 디스크 테이블도 생성이 가능

- 내장모드 & 서버모드 모두 지원

- 초소형 웹서버, GUI 관리도구 및 데모 예제를 포함하고 있음

- JDBC 연결 시 URL 형태 : jdbc:hsqldb:hsql://{IP}:{Port}/{DB명}

 

4. Berkley DB

- key-value 방식의 DB로 SQL을 사용하는 RDBMS 와는 차이가 있음

- C언어로 작성되었으며 다른 프로그래밍 언어을 위한 API 바인딩 지원

- 컴파일 시 애플리케이션에 링크되어 메모리 어드레스를 함께 사용함

- Locking, 로그관리, 메모리관리 등 기본적인 작동이 라이브러리 내에서 수행

 

데이터 동기화 방식

1. 아키텍처 개념도 (실시간)

실시간으로 데이터의 변경이 발생할 때마다 DML 정보를 전송하여 데이터를 동기화 함

 

 

2. 아키텍처 개념도 (배치)

데이터가 변경되면 로그파일에 적재하며 일정 시간마다 파일을 전송하여 데이터를 동기화 함

 

 

지금까지 내장형 DB (인메모리 데이터베이스) 종류와 데이터 동기화 방식에 따른 내장형 DB 개념도를 알아보았습니다.

 

DBMS별 참고 사이트

- https://db.apache.org/derby/

- https://www.h2database.com/html/main.html

- https://hsqldb.org/

- https://www.oracle.com/database/technologies/related/berkeleydb.html