もう2時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]萌え猫写真館が復活。[PR]  

【Java】H2 Database Engine【GCJ】

1 :NAME IS NULL:2006/12/04(月) 01:14:17 ID:???
フリーのJava製データベースエンジン H2 について語れや。

・とっても速い、誰でも利用可能、ソース同梱
・Java製。LinuxならGCJでコンパイル可能。
・組込用にも、サーバ用にも、そしてクラスタモードも利用可能
・JDBC対応、一部ODBC対応。Webクライアント付属。

公式(要Javascript)
ttp://www.h2database.com/


■ 紹介ページ
使ってみようH2 Database Engine - 最強の呼び声もあるすごいヤツ
ttp://journal.mycom.co.jp/articles/2006/10/12/h2/
Hibernate - H2とExecute Queryで体験、定番の"Core"
ttp://journal.mycom.co.jp/articles/2006/10/21/hibernate/


■関連スレ
【Pure】HSQL database engine【Java】
ttp://pc8.2ch.net/test/read.cgi/db/1060970234/

【PureJava】 Derby 1 【OpenSource】
ttp://pc8.2ch.net/test/read.cgi/db/1128799341/

23 :NAME IS NULL:2007/03/09(金) 03:07:28 ID:???
The H2 forum was hacked by a person in Vietnam.
This Google Group is a (may be temporary) solution for this problem.

うはwwwwww
それでもビタイチ動揺せずに淡々と質問をポストするPavelたんワロスwww

24 :NAME IS NULL:2007/03/14(水) 05:37:25 ID:???
むぅ……
org.h2.jdbc.JdbcConnection#translateSQL(String)
がドライバ側なのにやたらグダグダ処理をしてる
(そしてそのわりに'{'が無いだけで処理自体をスキップしてる)
から何かと思ったら、
{d 'yyyy-mm-dd'}やら、{t 'hh:mm:ss'}、{ts 'yyyy-mm-dd hh:mm:ss.f . . .'}やらの
Escape Syntaxの処理かよ……

>The JDBC API supports ISO standard format for the syntax of these literals,
>using an escape clause that the driver translates to native syntax.

マジすかorz


25 :NAME IS NULL:2007/03/14(水) 21:52:50 ID:???
JBossのDefaultDSを適当に定義書いてHypersonicをH2に差し替えてみた。
意外と動くもんだ。
体感ではパフォーマンス差はないかなぁ。

26 :NAME IS NULL:2007/04/08(日) 09:11:32 ID:0rem41aM
あげ

27 :NAME IS NULL:2007/04/11(水) 00:03:23 ID:???
embeddedだと管理コンソールとアプリの並行作業みたいのができないのな。
まあファイルロックしてんだから、あったりまえか。

てかこいつの日本での採用事例とかあったら知りたい。

28 :NAME IS NULL:2007/04/14(土) 04:14:34 ID:UbYRqDio
俺は採用したよ!! ものすンげぇシステムなんだよ!!

まぁそれはさておき、1.0 Stableは2006-08-31版から更新されないのかね。
1.0 Currentで開発進めちゃって、ちょっと青ざめてる。
秋までに新Stable版が出れば良いのだけど・・・

29 :NAME IS NULL:2007/04/15(日) 01:04:53 ID:???
Derbyが運用のこと考えられてないのでH2しか組込み系での強力なDBはないな
小型軽量組込みならHSQLDBでいいしDerby中途半端だよ

ただ、Sunがサポートやる気出してるのはちとうらやましい
H2のほうがはるかに便利なんだけどなー

30 :NAME IS NULL:2007/04/15(日) 07:49:50 ID:???
H2:性能重視
HSQLDB:軽量重視
Derby:SDK・IDE連携重視

で住み分けられるような気がする

31 :NAME IS NULL:2007/04/17(火) 04:19:25 ID:???
>>29
いや、サポートされるってことは身軽じゃなくなってることだから
プロジェクトとしてのH2の身軽さは暫くこのままであって欲しい
開発者も増えすぎないのが重要

やれみんなで民主的開発だーってやると途端に足が遅くなるからな

32 :NAME IS NULL:2007/04/17(火) 18:52:13 ID:???
DerbyってかJavaDBはJDBC4の参照実装だからね。
H2に対応の予定はあるんかいねぇ、あれは凄いよ。

33 :NAME IS NULL:2007/04/18(水) 10:46:47 ID:???
IDがSQL

734 名前:山師さん@トレード中[sage] 投稿日:2007/04/18(水) 10:46:15 ID:SQLb5up50
>>729
永田農法は儲かりませんよ^^

34 :NAME IS NULL:2007/04/20(金) 21:50:17 ID:???
Windowsで使ってるんだけど
管理コンソールのデータって何処に保存されてるの?
レジストリかと思ったんだけど探し方が悪いのか分からなかった

35 :NAME IS NULL:2007/04/27(金) 21:02:51 ID:???
>>31
んなこたーない
DBそのものをいじってもらうのではな組込んでもらったりするだけ
NetBeansからはPointBaseとかTomcat、Glassfishのコントロールが容易だったが
Sunがさわったことによっておかしくなったわけではないだろう

しかし、元商用DBから真っ当なものかと思ってたが、完全に期待はずれだった>Derby
他のDBとかち合わないからサポートしやすかったのかもね

36 :NAME IS NULL:2007/05/27(日) 01:38:15 ID:zCv2Gcn3
たまにはage

37 :NAME IS NULL:2007/05/31(木) 19:56:39 ID:7dqK9g8t
>>34
\Documents and Settings\USERNAME\.h2.server.properties


38 :NAME IS NULL:2007/08/06(月) 18:29:08 ID:???
8/2付で更新が来ている訳だが。

独自のODBCがデリられているな。
PostgresSQLのプロトコルをしゃべれるようにしたから、
そっちのODBCドライバを使え、ってことか。
まぁ構わんのだがなんだかなw

39 :NAME IS NULL:2007/08/07(火) 12:49:35 ID:???
cnet記事更新ktkr!!

でも、ドキュメントとWebが日本語化されたことに
触れてあげた方が良かったと思うんだ。

40 :NAME IS NULL:2007/08/07(火) 13:09:10 ID:???
あー、すまん、cnetじゃないねmycomだねorz


41 :NAME IS NULL:2007/09/13(木) 18:16:28 ID:???
あーうー、なぜかwindowsのサービスで実行すると、C直下に.h2.server.propertiesファイルができる。

42 :NAME IS NULL:2007/09/25(火) 08:56:23 ID:???
まだHSQLDB使ってる。
乗り換えた方がいいんかね?


43 :NAME IS NULL:2007/09/25(火) 11:03:14 ID:ifNTHzMz
もちょっと人気出てもいいと思うんだけどね。

コンソール、使いやすい。データベース初心者に超やさしいよ。

44 :NAME IS NULL:2007/09/25(火) 13:36:41 ID:???
>>43
俺もすごい使いやすいと思った。

45 :NAME IS NULL:2007/09/25(火) 17:20:11 ID:ifNTHzMz
H2 のコンソールって、
クラスパスにjar を登録すると、他のデータベースも
使えるんだね。

試しに derby を登録してみたら、確かに使えた。
もっともパラメータが違いますとか出て、微妙に問題は
あるけど、こなれてくればこのコンソールは非常に使いやすいので、
かなり便利に使えそう。

Execute Queryとかの汎用ツールがあるのは知っているが、
登録するだけでめんどくさ過ぎて、やってられない。

46 :NAME IS NULL:2007/09/25(火) 17:38:08 ID:???
前から"jdbc:h2:file:C:\〜"って形式でアクセスしてたんだが、ある日急にエラーが出始めた。
原因を探ると、どうやら前日に設定したbaseDirオプションのせいだということに気づいたんだが、
これって仕様なんだろうか?結構致命的なバグだと思うので、
必要なら報告せねばと思ってるんだが、いまいち踏ん切りがつかない。

47 :NAME IS NULL:2007/09/25(火) 18:03:02 ID:ifNTHzMz
>>46
デフォルトは、テスト用の jdbc:h2:~/test だよねぇ。
で、通常は jdbc:h2:MyDB という感じの形式が推奨されてるみたいだけど。
自分にはそれ以上よく分からないや。

サポートのH2 Database-JP で聞いてみれば?
ttp://groups.google.co.jp/group/h2-database-jp

作者の Thomas Mueller さんは、ときどき日本語の質問に
英語で答えてくれてるよw もちろん、いつもとは限らないけど。
(最初は本当に驚いた。あちらの方でこのような方は前例が
 ないような気がするがなぁ)

48 :NAME IS NULL:2007/09/25(火) 20:02:18 ID:ifNTHzMz
>>46
 >>47 の補足だけれど、
通常推奨されてる jdbc:h2:MyDB というは、
H2 のフォルダに中のファイル MyDB.data.db に対応しているようだね。
僕の場合は、
C:\Program Files\H2\bin\MyDB.data.db
の位置にある。

jdbc:h2:file:C:\〜 という形式でアクセスする必要は
ないのではないだろうか…。不安定になるなら、なおさら。

49 :NAME IS NULL:2007/09/25(火) 20:05:54 ID:???
>>48
レスthx.
確かにほとんどEnbeddedで動かしてるから、必要ないんだけど、
ドライブまたいだ、たとえばDドライブ内にDBファイルを作ろうとすると、絶対パスでないとできないんだよねえ。
おk、サポートで聞いてみるよ。

50 :NAME IS NULL:2007/09/26(水) 02:41:51 ID:???
Javaクライアント界のSQLiteを目指して頑張って欲しい

51 :NAME IS NULL:2007/09/26(水) 13:29:02 ID:???
>>50
ライバルは、SQLiteJDBCか!
>>49
Embeddedなら実行ディレクトリをデータファイルの場所に動かせば、
fileスキームの指定は要らなくなるんじゃなかったっけ?
複数ディレクトリにばらけてるなら、しかたないかもしれんけど。

52 :NAME IS NULL:2007/09/26(水) 20:03:22 ID:iAGNNJNN
ライバルは、使いやすさでは SQLite。
機能では、MySQL と PostgreSQL ということでしょ。

もっとみんなに触ってほしいよ。
一度試してみれば、使いやすくて高機能というのが
分かってくれるはずなんだけどなー。

53 :NAME IS NULL:2007/09/29(土) 13:54:00 ID:???
使うのが簡単で、機能も一通りそろってて、それでいて速いので気に入って使ってます。
ブラウザベースのコンソールも便利だけど、readline対応のCLIも欲しいな。

54 :NAME IS NULL:2007/10/03(水) 00:39:21 ID:s1PZV8oW
>>52

 SQLiteもホントは良いんだろうけど
重厚長大なRDBMSを使った事ある人には
割り切りれるかがポイントですね。

やはり、スキーマレス、型レスというのは
私は駄目でした。

H2は上記はもちろん既存のRDBMSを意識して
作られているので各方言にも配慮しています。

あとcsv表関数は便利ですよ〜





55 :NAME IS NULL:2007/10/08(月) 13:07:03 ID:rhsQ/m1u
本家HomePage の日本語訳部分が大幅に増えましたね。

56 :NAME IS NULL:2007/11/06(火) 21:54:20 ID:sFgm7o4t
H2のサイトに行って h2-2007-10-20.zip を落としてきて、本家の QuickStart、Installation、Tutorial
を読んで動かしてみました。
zip を c:\java\h2 に展開し、bin\h2.bat を実行してブラウザから
create table TEST、
insert into TEST ・・・・・
で適当にデータを突っ込んだあと、ブラウザからシャットダウンしました。
(このとき drop table TEST はしていない)

もういちど h2.bat を実行して、ブラウザでコンソールにログインすると、先ほどの TEST テーブルが残っています。
実際のデータベース(テーブル)のファイルはどこに置かれているのでしょうか?

>>46 さんのように、ブラウザで接続するときに、特にパスを指定しているわけではありません。

>>34 >>37 をみてみて、c:\documents and settings\USERNAME\直下に test.*.db というファイルが
直近のタイムスタンプでできていましたが、DB の実体はこれであってますか?

57 :NAME IS NULL:2007/11/06(火) 22:58:40 ID:???
>>56
c:\documents and settings\USERNAME\直下に test.*.dbで合ってるよ。
思いっきりFAQにも書いてあるけど。
http://www.h2database.com/html/frame.html?faq_ja.html%23database_files&main

58 :NAME IS NULL:2007/11/07(水) 15:27:01 ID:9AOs1HeU
>>57
レスどうもありがとうございます。FAQ見逃してた・・・理解しました。


59 :56:2007/11/09(金) 15:10:07 ID:???
おれの作業メモ

自作プログラムから↓でつないだとき、autocommit は true になっている。

 Connection conn
  = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
 System.out.println(conn.getAutoCommit());

autocommit を off でつなぎたいときは、JDBC URL を以下にする。

 Connection conn
  = DriverManager.getConnection("jdbc:h2:~test;AUTOCOMMIT=TRUE", "sa", "");

JDBC URL に指定できるパラメータは、org.h2.engine.ConnectionInfo.java の
static ブロックに書いてある。

// TODO document these settings

なんてコメントがあるのでドキュメント化されるとうれしいですね。


60 :NAME IS NULL:2007/11/09(金) 15:25:07 ID:???
=FALSEの間違いじゃ?

あと、無指定でAutoCommitなのはJDBC仕様でしょ

61 :56:2007/11/09(金) 15:33:13 ID:???
>>60
すみません、コピペ元のソースを間違えました

> あと、無指定でAutoCommitなのはJDBC仕様でしょ

そうなのか、知らなかった

どうでもいいですが、スレそのものの勢いは少ないけど、結構見ている方いるんですね。

Webインターフェースも ajax でオートコンプリートしたり、CSE や OsqlEdit(OsqlGrid) みたいに select してきた
結果表のマトリックスを直接いじって編集もできるし、すごいなこれ。

しばらく遊ぶことにしよう。

62 :NAME IS NULL:2008/02/26(火) 23:11:09 ID:YBMRSqIg
grails-1.0内蔵のデータベースはまだHSQLDBだった。

63 :NAME IS NULL:2008/04/02(水) 22:21:03 ID:APbDJlUh
>>62
     オハヨー!!
    ∧∧ ∩
    (`・ω・)/
   ⊂  ノ
    (つノ
     (ノ
 ___/(___
/  (___/
 ̄ ̄ ̄ ̄ ̄ ̄


64 :NAME IS NULL:2008/05/11(日) 21:14:38 ID:???
ん〜、だめだ。
こいつの使いやすさに慣れてしまうと、他のRDBMSが面倒に思えてきてしまう。

JRE と h2.jar あればどうにでもなっちまうし、
CSVRead/Write でデータ作成・取り出しが鬼のようにも楽だ。


なんかまとめっぽいサイト見つけたんで、貼っておく
ttp://homepage2.nifty.com/yoks/TechNote/H2/H2_MnFrm.htm

65 :NAME IS NULL:2008/06/17(火) 20:49:40 ID:???
あのさ・・・・JBossのDataSourceとしてH2を設定できたやつっている?
何か、EOFExceptionから逃げられない・・・・
hsqldb-ds.xml を書き換えたりして、やってみようとしてるんだけど・・・・

66 :NAME IS NULL:2008/07/08(火) 12:33:53 ID:06ycm9Xn
H2とJ2Seの各最新版でembeddedなアプリつくってて1.6GHzのXPのPCで
INTの5列の単純なテーブル(インデックスはprimaryと個別に2カラムのの計2個)に
PrepareStatementで新規データをMERGEをしようとしています
ListからループでsetしてaddBatchしてexecuteBatchしてcommitすると
executeBatchのところで、100件なら100ms、1000件なら1000msかかるんだけど
遅すぎませんか?こんなものなの?もちろんautoCommitはオフにしてます
でも、batchを止めて、1件ごとにexecuteUpdateしても、ほぼ同じ時間が掛かる
Batchの使い方間違えてるのかな…
1000データ×40タイプ×5000件のデータをデータベースに登録するのに一晩では終わらなかったです


67 :NAME IS NULL:2008/07/08(火) 23:07:40 ID:???
Turion 64 X2 TL-60 2.0GHz Vistaで試してみたけど
1,000件で150ms
10,000件で650msだったよ、

68 :NAME IS NULL:2008/07/09(水) 02:26:35 ID:???
>>67
早速のご回答ありがとうございます。
やっぱり私のは遅すぎるようですね…10倍近く違うとは
何かどこかで変な事をやってる臭いですね
再度ソースを洗ってみます

ところで、MERGEはEXPLAINできないんですね。怒られました

69 :66:2008/07/09(水) 12:37:33 ID:???
アプリから該当のCREATE TABLEとMERGEだけ抜き出して
ダミーのmainに貼り付けてダミーデータで実行したら>>67と同等の結果が出ました
何が悪いんだろう…
考えられるのは、他の、DB全体の要因などでしょうか?
例えばテーブル数が多すぎて参照に時間が掛かっているとか…
問題のテーブル以外にも外部キー設定したテーブルが100近くあります
これからテーブル数を変更してテストしてみます

70 :NAME IS NULL:2008/08/01(金) 22:11:10 ID:???
最近のバージョンアップでも地味に機能が追加されてるな
ついに行ロックのコードも入りはじめたみたいだし

71 :NAME IS NULL:2008/08/03(日) 11:21:01 ID:???
行ロックに対応したら有り難いなあ
用途が広がりそう

72 :NAME IS NULL:2008/08/03(日) 12:56:14 ID:ZzfOsO6b
ほんと使えるなぁコレ。

22 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]

取りに行ったけどなかった。次は一時間後に取りに行くです。
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.0.7.8 2008/09/25 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)