HSQLDB

トップ > チップス > HSQLDB
2012-02-13, hsqldb

/tips/java/hsqldb *HSQLDB いわずと知れたPure Javaデータベース。付加的な情報をここに記載して行きます。 -{link:http://hsqldb.org} **長所 -高速。軽快。組み込みに向いている。 -Javaの静的関数をそのままエイリアスに登録して呼び出せる(詳細は後述)。

**短所 -「FULL JOIN」構文を持たない。 -「UPDATE」構文が単純。他テーブルの値を参照しながらの更新ができない。 -「SELECT .. INTO ..」構文を使うと、対象テーブル(入出力)を全てCACHEDにしているにも関わらずメモリ内で処理を進めようとし、「out of memory」エラーで落ちる。 ***バグ? テーブルのリネーム後、変更前のテーブルと同名のテーブルを作成できません。2006-1-19発見。 :CREATE TABLE a (id INTEGER); :ALTER TABLE a RENAME TO b; :CREATE TABLE a (id INTEGER); -- テーブルが生成されない!

**リンク

-{link:http://jamie.ideasasylum.com/notebook/index.php?id=4}{br}hsqldbとMySQLなどのベンチマーク -{link:http://hsqldb.org}

**コマンドライン サーバモードで起動する。 :$ java -cp lib/hsqldb.jar org.hsqldb.Server -database.0 database/mydb -dbname.0 mydb ,-database.X,データベースのパス ,-dbname.X,アクセスに利用する名前

***server.properties 起動フォルダに置いておくと読み込んでくれます。HSQLDBマニュアルに載っている記載例は間違っているので注意! :server.port=9001 :server.database.0=test :server.dbname.0=... : ... :server.database.n=... :server.dbname.n=... :server.silent=true

***shutdown :$ java -cp lib/hsqldb.jar org.hsqldb. ??

**SqlTool 対話型コマンドラインインタフェース。HSQLDBのみならず様々なデータベースへのアクセスが可能(らしい)。 ***sqltool.rc (デフォルトでは)ホームディレクトリに置かれた「sqltool.rc」という名前のファイルから、接続設定を読み込みます。rcの書式サンプルは以下の通り。「#(シャープ)」で始まる行はコメントです。

:# A personal Memory-Only database. :urlid mem :url jdbc:hsqldb:mem:memdbid :username sa :password

***コマンド

***注意点 -更新クエリ発行後、COMMIT及びSHUTDOWNコマンドを打たないでツールを終了すると変更がロールバックされてしまう。

**エイリアスの登録 Javaのクラスに定義した静的メソッドをHSQLDBのクエリから呼び出して使うことができます。パッケージ修飾及びクラス名、関数名を指定して直接呼び出すこともできますが、エイリアス(別名)を登録しておけば、さらに便利に利用できます。 :package sample; : :class Functions\{ : public static int plus(int i,int j)\{ : return i+j; : \} :\}

:CREATE ALIAS plus FOR "sample.Functions.plus"; 利用例: :CALL plus(3,5) -- 結果:8 :CALL plus(NULL,10) -- 結果:NULL

利用例からも分かるように、プリミティブ型引数にNULLが渡されると、関数の処理自体がスキップされ、結果としてNULLを返します。また、可変長引数や配列は利用できませんが、メソッドのオーバーロードには対応可能です。

**システムテーブル一覧 ,SYSTEM_ALIASES,the aliases defined within this database ,SYSTEM_ALLTYPEINFO,a description of all non user-defined data types known to this database and the level of support for them in various capacities ,SYSTEM_BESTROWIDENTIFIER,for each accessible table defined within this database\, the optimal set of visible columns that uniquely identifies a row ,SYSTEM_CACHEINFO,the current state of the system row caching mechanism ,SYSTEM_CATALOGS,the accessible catalogs defined within this database ,SYSTEM_CHECK_COLUMN_USAGE,one row for each column identified by a contained in the of a check constraint\, domain constraint\, or assertion. ,SYSTEM_CHECK_CONSTRAINTS,one row for each domain constraint\, table check constraint\, and assertion. ,SYSTEM_CHECK_ROUTINE_USAGE,one row for each SQL-invoked routine identified as the subject routine of either a \, a \, a \, or a contained in an \, a \, or a . ,SYSTEM_CHECK_TABLE_USAGE,one row for each table identified by a
simply contained in a
contained in the of a check constraint\, domain constraint\, or assertion. ,SYSTEM_CLASSPRIVILEGES,the visible user level access permissions for each Java class providing implementation for each accessible callable procedure\, SQL function\, trigger body and UDT method defined within this database ,SYSTEM_COLUMNPRIVILEGES,the visible user level access permissions of each visible column of each accessible table defined within this database ,SYSTEM_COLUMNS,the visible columns of each accessible table defined within this database ,SYSTEM_CROSSREFERENCE,a description of how the accessible tables defined within this database import visible columns to enforce referential integrity ,SYSTEM_INDEXINFO,information about the indicies of each accessible table defined within this database ,SYSTEM_PRIMARYKEYS,the visible columns of the primary key of each accessible table defined within this database ,SYSTEM_PROCEDURECOLUMNS,a description of the return type\, parameters and result columns of each accessible callable procedure\, SQL function\, trigger body and UDT method defined within this database ,SYSTEM_PROCEDURES,the procedures\, SQL functions\, trigger body routines and UDT methods defined within the database ,SYSTEM_PROPERTIES,the static and dynamic system properties and operating parameters of this database ,SYSTEM_SCHEMAS,the accessible schemas defined within this database ,SYSTEM_SEQUENCES,one row for each external sequence generator ,SYSTEM_SESSIONINFO,information about the current database session ,SYSTEM_SESSIONS,the visible sessions open in this database ,SYSTEM_SUPERTABLES,the table hierarchies defined in this database. Only the immediate super type/sub type relationship is modeled ,SYSTEM_SUPERTYPES,the user-defined type (UDT) hierarchies defined in this database. Only the immediate super type/sub type relationship is modeled ,SYSTEM_TABLEPRIVILEGES,the visible user level access permissions for each accessible table defined within this database ,SYSTEM_TABLES,the accessible tables defined within this database ,SYSTEM_TABLETYPES,the types of tables that can be created/found within this database ,SYSTEM_TABLE_CONSTRAINTS,one row for each table constraint associated with a table ,SYSTEM_TEXTTABLES,the data source descriptors of the accessibleTEXT TABLE objects defined within this database ,SYSTEM_TRIGGERCOLUMNS,the column usage of visible triggers defined within this database ,SYSTEM_TRIGGERS,the visible triggers defined within this database ,SYSTEM_TYPEINFO,a description of predefined table column data types known to this database ,SYSTEM_UDTATTRIBUTES,a description of the attributes of the user-defined types (UDTs) that are available in this database ,SYSTEM_UDTS,the user-defined types that are available within this database ,SYSTEM_USAGE_PRIVILEGES,one row for each usage privilege descriptor. ,SYSTEM_USERS,users defined within this database ,SYSTEM_VERSIONCOLUMNS,the visible columns of the accessible tables that are automatically updated when any value in a row is updated ,SYSTEM_VIEWS,the view descriptors of the accessible views defined within this database ,SYSTEM_VIEW_COLUMN_USAGE,one row for each column of a table that is explicitly or implicitly referenced in the of the view being described. ,SYSTEM_VIEW_ROUTINE_USAGE,one row for each SQL-invoked routine identified as the subject routine of either a \, a \, a \, or a contained in a ,SYSTEM_VIEW_TABLE_USAGE,one row for each table identified by a
simply contained in a
that is contained in the of a view

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