1概要

インメモリデータベースは、データを格納するためのディスクスペースではなく、システムメモリに依存しています。メモリアクセスはディスクアクセスより速いので、当然これらのデータベースは速いです。

もちろん、データを永続化する必要がないアプリケーションやシナリオ、またはテストをより迅速に実行する目的でのみ、インメモリデータベースを使用できます。これらは埋め込みデータベースとして実行されることが多く、プロセスの開始時に作成され、プロセスの終了時に破棄されるため、外部データベースを設定する必要がないため、テストに非常に快適です。

次のセクションでは、Java環境で最も一般的に使用されるインメモリデータベースと、それぞれに必要な設定について説明します。


2 H2データベース


H2

は、組み込みデータベースとスタンドアロンデータベースの両方に対して標準SQLをサポートする、Javaで書かれたオープンソースデータベースです。これは非常に高速で、わずか1.5 MBのJAR内に含まれています。


2.1. Mavenの依存関係

アプリケーションで

H2

データベースを使用するには、次の依存関係を追加する必要があります。

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.194</version>
</dependency>



H2

database

の最新バージョンをダウンロードすることができます。 Maven Centralから。


2.2. 構成


H2

インメモリデータベースに接続するには、プロトコル

mem、

の後にデータベース名が続く接続

String

を使用できます。

driverClassName、URL、username

、および

password

の各プロパティを

.properties

ファイルに配置して、アプリケーションで読み取ることができます。

driverClassName=org.h2.Driver
url=jdbc:h2:mem:myDb;DB__CLOSE__DELAY=-1
username=sa
password=sa

これらのプロパティにより、アプリケーションの起動時に

myDb

データベースが自動的に作成されます。

デフォルトでは、データベースへの接続が閉じられると、データベースも閉じられます。 JVMが実行されている限りデータベースを存続させたい場合は、プロパティ

DB

CLOSE

DELAY = -1

を指定できます。

データベースをHibernateで使用している場合は、Hibernateの方言も指定する必要があります。

hibernate.dialect=org.hibernate.dialect.H2Dialect


H2

データベースは定期的に管理されており、http://www.h2database.com/html/main.html[h2database.com]でより詳細なドキュメントを提供します。


3

HSQLDB



HyperSQL

データベース)


HSQLDB

は、リレーショナルデータベースを表すオープンソースプロジェクトで、これもJavaで書かれています。 SQLおよびJDBCの標準に準拠しており、ストアドプロシージャやトリガなどのSQL機能をサポートしています。

インメモリモードで使用することも、ディスクストレージを使用するように設定することもできます。


3.1. Mavenの依存関係


HSQLDB

を使用してアプリケーションを開発するには、Maven依存関係が必要です。

<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.3.4</version>
</dependency>

__httpsの最新バージョンを見つけることができます。 Maven Central


3.2. 構成

必要な接続プロパティは次の形式です。

driverClassName=org.hsqldb.jdbc.JDBCDriver
url=jdbc:hsqldb:mem:myDb
username=sa
password=sa

これにより、データベースは起動時に自動的に作成され、アプリケーションの実行中メモリに常駐し、プロセスの終了時に削除されます。


HSQLDB



Hibernate

方言プロパティは次のとおりです。

hibernate.dialect=org.hibernate.dialect.HSQLDialect

JARファイルには、GUI付きのデータベースマネージャも含まれています。詳細については、http://hsqldb.org/[hsqldb.org]Webサイトを参照してください。


4 Apache Derbyデータベース


Apache Derby

は、

Apache Software Foundation

によって作成されたリレーショナルデータベース管理システムを含む別のオープンソースプロジェクトです。


Derby

はSQLおよびJDBC標準に基づいており、主に組み込みデータベースとして使用されますが、

Derby Network Server

フレームワークを使用してクライアントサーバーモードで実行することもできます。


4.1. Mavenの依存関係

アプリケーションで

Derby

データベースを使用するには、次のMaven依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>10.13.1.1</version>
</dependency>

最新バージョンのhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22derby%22%20AND%20g%3A%22org.apache.derby%22[

Derby

database]Maven Centralで見つけました。


4.2. 構成

接続文字列は

memory

プロトコルを使用します。

driverClassName=org.apache.derby.jdbc.EmbeddedDriver
url=jdbc:derby:memory:myDb;create=true
username=sa
password=sa

データベースが起動時に自動的に作成されるようにするには、接続文字列に

create = true

を指定する必要があります。データベースはJVMの終了時にデフォルトでクローズされ、ドロップされます。

データベースを

Hibernate

で使用する場合は、方言を定義する必要があります。

hibernate.dialect=org.hibernate.dialect.DerbyDialect


Derby

データベースの詳細についてはhttps://db.apache.org/derby/[db.apache.org/derby]をご覧ください。


5 SQLiteデータベース


SQLite

は、メモリ内またはファイルとして保存された埋め込みモードでのみ実行されるSQLデータベースです。 C言語で書かれていますが、Javaでも使用できます。


5.1. Mavenの依存関係


SQLite

データベースを使用するには、JDBCドライバJARを追加する必要があります。

<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.16.1</version>
</dependency>


sqlite-jdbc

依存関係はダウンロード可能です。 Maven Centralから。


5.2. 構成

接続プロパティは、接続文字列に

org.sqlite.JDBC

ドライバクラスと

memory

プロトコルを使用します。

driverClassName=org.sqlite.JDBC
url=jdbc:sqlite:memory:myDb
username=sa
password=sa

データベースが存在しない場合は、

myDb

データベースが自動的に作成されます。

現在、

Hibernate



SQLite

の方言を提供していませんが、将来的にはそうなるでしょう。

SQLite



Hibernate

と一緒に使用したい場合は、

HibernateDialect

クラスを作成する必要があります。


SQLite

の詳細については、https://www.sqlite.org/index.html[sqlite.org]を参照してください。


6. Spring Bootのインメモリデータベース

Spring Bootは、インメモリデータベースの使用を特に簡単にします –

H2



HSQLDB、

、および

Derby

の設定を自動的に作成できるためです。

Spring Bootで3つのタイプのいずれかのデータベースを使用するために必要なことは、その依存関係を

pom.xml

に追加することだけです。フレームワークがクラ​​スパスへの依存関係に遭遇すると、データベースを自動的に設定します。


7. 結論

この記事では、Javaエコシステムで最も一般的に使用されているメモリー内データベースとその基本構成について簡単に説明しました。

これらはテストには役立ちますが、多くの場合、元のスタンドアロンの機能とまったく同じ機能を提供しないことに注意してください。


Githubについて

で使用しているコード例を見つけることができます。