h2database - 高速軽量PureJavaRDB

トップ > チップス > h2database - 高速軽量PureJavaRDB
2012-02-13, h2

/tips/java/h2 **HSQLDBとの相違点 -通常、終了時にSHUTDOWNコマンドを実行する必要がない。 -テーブルのロックが厳しい。 -ResultSet.getObjectの挙動(調査中) -CREATE ALIAS構文 :CREATE ALIAS foo FOR "jp.co.xxx.Function.foo(java.langString)";

**エラーコード ,*コード,*メッセージ,*対策 ,HYC00-44,Feature not supported,謎 ,90037-44,View ___ not found,ビューが存在していますか? ,HYT00-44,Timeout trying to lock table ___,排他ロックを複数取得しようとしていませんか?

**チップス ***バックアップとリストア 以下のコマンドを実行すると、カレントディレクトリに「backup.sql」という名前で現在のデータベースのスクリプト形式のダンプが出力されます。backup.sqlを安全な場所に保管すれば、バックアップになります。 :$ java -cp h2.jar org.h2.tools.{strong:Script} -url jdbc:h2:foo -user sa

以下のコマンドを実行すると、カレントディレクトリの「backup.sql」スクリプトを実行します。つまり、空のデータベースに対してこのコマンドを実行すれば、リストアを行うことができます。 :$ java -cp h2.jar org.h2.tools.{strong:RunScript} -url jdbc:h2:foo -user sa

上記2つのコマンドは太字の部分を除いて、非常によく似ています。h2ではバージョン間にデータベースファイルの互換性がない場合がありますが、そのような場合、古いバージョンで作成したbackup.sqlを新しいバージョンの(空の)データベースで実行することで、容易に移行が可能です。

また、古いバージョン(1.0.60頃)のh2は使い続けていると、インデックスファイルが肥大化する不具合があるものが存在するようです。データベースの動作が妙に重くなったり不安定な場合も、バックアップ&リストアを行って、動作速度やデータベースファイルのサイズを比べてみるとよいかもしれません。

***条件文に正規表現を使う REGEXPという演算子が用意されています。これを使うとLIKEなどよりも複雑な条件を指定することができます。以下は、useridという列の値に「少なくとも1文字以上の、アルファベット小文字またはアンダースコア」のみを認める場合のCHECK構文の例です。

:userid VARCHAR CHECK path REGEXP '^[a-z_]+$',

***ランダムに行を取り出す ORDER BY句にrand関数を指定すると、結果(行)がランダムに並びます。例えば先頭の一行だけが欲しい場合などはLIMIT句などを組み合わせるとよいでしょう。

:ORDER BY rand() LIMIT 1

**参考リンク -{link:http://www.h2database.com}

この記事は役に立ちましたか?