完全なSQLデータベース
h2インプロセスSQLデータベースは非常に使いやすいです。これは、grailsがデフォルトで使用するデータベースエンジンと同じですが、Groovyスクリプトでも簡単に使用できます。
@GrabConfig(systemClassLoader=true)
@Grab(group='com.h2database', module='h2', version='1.3.167')
import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:h2:hello", "sa", "sa", "org.h2.Driver")
sql.execute("create table test (id int, value text)")
sql.execute("insert into test values(:id, :value)", [id: 1, value: 'hello'])
println sql.rows("select * from test")
この場合、データベースは。というファイルに保存されますhello.h2.db
。
シンプルな永続マップ
もう1つの代替手段は、ディスクでバックアップされた永続マップを提供するjdbmです。内部的には、Javaのシリアル化を使用します。プログラミングインターフェイスははるかに単純ですが、本格的なSQLデータベースよりもはるかに強力ではありません。同時アクセスはサポートされていませんが、同期されてスレッドセーフであるため、ロック要件によっては十分な場合があります。簡単な例を次に示します。
@Grab(group='org.fusesource.jdbm', module='jdbm', version='2.0.1')
import jdbm.*
def recMan = RecordManagerFactory.createRecordManager('hello')
def treeMap = recMan.treeMap("test")
treeMap[1] = 'hello'
treeMap[100] = 'goodbye'
recMan.commit()
println treeMap
これにより、マップが一連のファイルに保存されます。