Locked History Actions

H2

H2 Database

データ型

自動採番

フィールドを自動採番にするには、identity型としておく。これはJava側ではLong型になる。 このフィールドは1から採番が行われるが、途中に値が強制されて挿入されたレコードが存在する場合、その値は飛ばされ、エラーになることはない。

create table sample (ide identity, value integer);
insert into sample (value) values (1); // id=1になる。
insert into sample (id,value) values(2, 2); 
insert into sample (value) values (3); // id=3になる。

バックアップ

上記ONLINE BACKUPの訳

SQL文「BACKUP」とバックアップツールは共にデータベースファイルが格納されたzipファイルを生成する。この中身はヒューマンリーダブルではない(バイナリということ)。

得られるバックアップはトランザクション一貫性がある、つまり一貫性ルールとアトミックルールが適用されている。

BACKUP TO 'backup.zip'

バックアップツール(org.h2.tools.Backup)はオンラインバックアップの作成には使用できない。このプログラムを起動する際には、データベースが使用中であってはならない。

データベースが使用状態でのデータベースファイルコピーによるバックアップはサポートされていない。ただし、ファイルシステム自体がスナップショット生成をサポートしている場合を除く。それ以外のファイルシステム上では、データが正しい順序でコピーされることを保証はできない。

上記BACKUP文の訳

データベースファイルを.zipファイルにバックアップする。「オブジェクト」のロックはされないが、トランザクションログもコピーされるため、バックアップはトランザクション一貫性がある。このコマンドを実行するにはadmin権限が必要である。

例:

BACKUP TO 'backup.zip'

サーバモード

一つのVMにてデータベースサーバを起動し、複数のクライアントVMからそのサーバに接続してデータベースを操作する形になる。 以下はバージョン3.171にて、tcpサーバのみを起動し、サーバへの接続はローカルホストからしか許さない場合。

java -cp h2-1.3.171.jar org.h2.tools.Server -tcp

Javaプログラムから、F:ドライブの\foo\bar\database.h2.dbに接続するためのURLは、

jdbc:h2:tcp://localhost/f:/foo/bar/database

もし、先のサーバがFドライブにて起動したのであれば、f:の指定は省略できる。

jdbc:h2:tcp://localhost//foo/bar/database

参考