【Java】H2 Database Engine【GCJ】

このエントリーをはてなブックマークに追加
1NAME IS NULL
フリーの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/
2NAME IS NULL:2006/12/04(月) 01:46:38 ID:???
2get!!
Derbyから乗り換えたけど、いいよ、これ。
2006-11-20版で若干仕様が変わって混乱したけど無問題!
3NAME IS NULL:2006/12/09(土) 00:19:45 ID:???
誰か何か書いておくれ。
あだち充のマンガみたいだが、根はいい奴なんだ。
4NAME IS NULL:2006/12/09(土) 00:23:08 ID:???
JPAとの相性はいいかもな。
速い+遅い=普通みたいな感じで。
5NAME IS NULL:2006/12/12(火) 20:30:53 ID:???
HSQLDB使ってるけど、HSQLDB->H2に移行するメリットってなんかあるの?
6NAME IS NULL:2006/12/12(火) 20:34:28 ID:???
やっぱ速度じゃねーかな。最近はJava技術でDB関連の連載するときに良く登場してる。
7NAME IS NULL:2006/12/12(火) 20:49:45 ID:???
>>6
そっかー、thx。

DerbyよりH2のが使いやすかったカンジはあったんだけど、
HSQLDB<->H2との差異がイマイチわからなかったから・・・。
今度よくドキュメント見てみようかな。
8NAME IS NULL:2006/12/13(水) 01:03:41 ID:???
H2 Database Engineは、HSQLDBの系統だったっけ?
ライセンスは違うけど作者は同じだったような・・・
単純なテキスト検索だと大差ないけど、LOBデータを
使うならH2はマジお勧め。
9NAME IS NULL:2006/12/13(水) 01:04:43 ID:???
Hypersonicのころに脱退してHSQLに変わった後H2を興したんじゃなくて?
10NAME IS NULL:2006/12/17(日) 17:33:39 ID:c8T56vdc
フリーソフトに是非組み込みたい。
11NAME IS NULL:2006/12/17(日) 23:56:25 ID:???
CLOGがLIKEで使えるってのは新鮮だな。確かOracleじゃできなかったはず。
でもBackupでOutOfMemoryしやすいって話だし
そこらへんが解決すればOOoもこっちに移行するかもね。
12NAME IS NULL:2006/12/23(土) 05:20:55 ID:???
Version 1.0 が出てるね。
そろそろ乗り換えるか。
13NAME IS NULL:2006/12/23(土) 20:36:35 ID:???
CLOG → CLOBだった。
まあこんなスレ誰も見てないだろうからいっか。
14NAME IS NULL:2006/12/31(日) 03:23:00 ID:7TDC6eJ8
ODBC誰かまともにしてあげて!
15NAME IS NULL:2007/01/08(月) 21:10:35 ID:C5Ln50HE
正式リリースしたのでさわってみたがかなりいいな

HSQLDBやDerbyで仕事してきたからH2だけダントツに出来がいいのがわかる
DerbyはSQLまわりが想像以上に悪い出来だったのにびっくりで運用にはきついものがあったし
HSQLDBはマルチユーザで使い物にならなかったからね

クラスタはまだ試してないけど、どんな感じだろう
16NAME IS NULL:2007/01/08(月) 21:39:45 ID:???
あとMVCCと行ロックがサポートされれば。。。
17NAME IS NULL:2007/01/09(火) 00:04:08 ID:???
ロックがサポートされただけでもかなり改善
まずは組み込み時のパフォーマンス重視ってことかな
トップページがベンチマークだもんな

とりあえず基幹システムに使うかどうかまじめに考えてるのでなんかわかったら書き込む
Derbyに比べれば運用がすごい楽そうだ
18NAME IS NULL:2007/01/19(金) 23:39:25 ID:???
embeddedなH2のが性能がいいのなら
Web/DBサーバが同じな最小構成のときは
web.xmlにembeddedなサーバを動かすservletをかますのがベスト?
19NAME IS NULL:2007/02/13(火) 18:47:08 ID:???
H2のページのベンチだと、C-SでもMySQL,PostgreSQLより上になってんだけど
これマジっすか?
20NAME IS NULL:2007/02/18(日) 15:34:34 ID:???
Javaのベンチマークは、delete相当分が無視されてる可能性あるからなぁ・・・
少なくても、Embeddedでは圧倒してるんじゃない。
最近のJVMは内部で非同期IO使いまくりだし相当いい線行ってる。
21NAME IS NULL:2007/03/07(水) 04:22:27 ID:???
いつのまにかバージョン上がってるね。

Version 1.0 / 2007-03-04
・System sequences (automatically created sequences for IDENTITY or AUTO_INCREMENT columns) are now random (UUIDs) to avoid clashes when merging databases using RUNSCRIPT.
・The precision for linked tables was not correct for some data types, for example VARCHAR. Fixed.
・Many problems and bugs in the XA support (package javax.sql) have been fixed.
・Now the server tool (org.h2.tools.Server) terminates with an exit code if a problem occured.
・The JDBC driver is now loaded if the JdbcDataSource class is loaded.
・After renaming a user the password becomes invalid. This is now documented.
・XAResource.recover didn't work. Fixed.
・XAResource.recover did throw an exception with the code XAER_OUTSIDE if there was no connection. Now the code is XAER_RMERR.
・SCRIPT did not work correctly with BLOB or CLOB data. Fixed.
・BACKUP TO 'test.zip' now works with encrypted databases and CLOB and BLOB data.
・The function CASE WHEN ... didn't convert the returned value to the same data type, resulting in unexpected behavior in many cases. Fixed.
・Truncating a table is now allowed if the table references another table (but still not allowed if the table is references by another table).
・ORDER BY picked the wrong column if the same column name (but with a different table name) was used twice in the select list.
・When a subquery was used in the select list of a query, and GROUP BY was used at the same time, a NullPointerException could occur. Fixed.
・ORDER BY did not work when DISTINCT was used at the same time in some situations. Fixed.
・When using IN(...) on a case insensitive column (VARCHAR_IGNORECASE), an incorrect optimization was made and the result was wrong sometimes.

結局、
・リンクテーブルの不整合対処
・XA関連対処
・SCRIPTのときにBLOB/CLOBもいけるように
・CASE文強化
あたりが目玉?
22NAME IS NULL:2007/03/07(水) 16:08:29 ID:???
どうも、XA周りがまだ弱い感じ?
正式リリースで触り始めた人たちが
うまくXA出来てないってこと出してきたってとこかな?
23NAME 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
24NAME 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
25NAME IS NULL:2007/03/14(水) 21:52:50 ID:???
JBossのDefaultDSを適当に定義書いてHypersonicをH2に差し替えてみた。
意外と動くもんだ。
体感ではパフォーマンス差はないかなぁ。
26NAME IS NULL:2007/04/08(日) 09:11:32 ID:0rem41aM
あげ
27NAME IS NULL:2007/04/11(水) 00:03:23 ID:???
embeddedだと管理コンソールとアプリの並行作業みたいのができないのな。
まあファイルロックしてんだから、あったりまえか。

てかこいつの日本での採用事例とかあったら知りたい。
28NAME IS NULL:2007/04/14(土) 04:14:34 ID:UbYRqDio
俺は採用したよ!! ものすンげぇシステムなんだよ!!

まぁそれはさておき、1.0 Stableは2006-08-31版から更新されないのかね。
1.0 Currentで開発進めちゃって、ちょっと青ざめてる。
秋までに新Stable版が出れば良いのだけど・・・
29NAME IS NULL:2007/04/15(日) 01:04:53 ID:???
Derbyが運用のこと考えられてないのでH2しか組込み系での強力なDBはないな
小型軽量組込みならHSQLDBでいいしDerby中途半端だよ

ただ、Sunがサポートやる気出してるのはちとうらやましい
H2のほうがはるかに便利なんだけどなー
30NAME IS NULL:2007/04/15(日) 07:49:50 ID:???
H2:性能重視
HSQLDB:軽量重視
Derby:SDK・IDE連携重視

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

やれみんなで民主的開発だーってやると途端に足が遅くなるからな
32NAME IS NULL:2007/04/17(火) 18:52:13 ID:???
DerbyってかJavaDBはJDBC4の参照実装だからね。
H2に対応の予定はあるんかいねぇ、あれは凄いよ。
33NAME IS NULL:2007/04/18(水) 10:46:47 ID:???
IDがSQL

734 名前:山師さん@トレード中[sage] 投稿日:2007/04/18(水) 10:46:15 ID:SQLb5up50
>>729
永田農法は儲かりませんよ^^
34NAME IS NULL:2007/04/20(金) 21:50:17 ID:???
Windowsで使ってるんだけど
管理コンソールのデータって何処に保存されてるの?
レジストリかと思ったんだけど探し方が悪いのか分からなかった
35NAME IS NULL:2007/04/27(金) 21:02:51 ID:???
>>31
んなこたーない
DBそのものをいじってもらうのではな組込んでもらったりするだけ
NetBeansからはPointBaseとかTomcat、Glassfishのコントロールが容易だったが
Sunがさわったことによっておかしくなったわけではないだろう

しかし、元商用DBから真っ当なものかと思ってたが、完全に期待はずれだった>Derby
他のDBとかち合わないからサポートしやすかったのかもね
36NAME IS NULL:2007/05/27(日) 01:38:15 ID:zCv2Gcn3
たまにはage
37NAME IS NULL:2007/05/31(木) 19:56:39 ID:7dqK9g8t
>>34
\Documents and Settings\USERNAME\.h2.server.properties
38NAME IS NULL:2007/08/06(月) 18:29:08 ID:???
8/2付で更新が来ている訳だが。

独自のODBCがデリられているな。
PostgresSQLのプロトコルをしゃべれるようにしたから、
そっちのODBCドライバを使え、ってことか。
まぁ構わんのだがなんだかなw
39NAME IS NULL:2007/08/07(火) 12:49:35 ID:???
cnet記事更新ktkr!!

でも、ドキュメントとWebが日本語化されたことに
触れてあげた方が良かったと思うんだ。
40NAME IS NULL:2007/08/07(火) 13:09:10 ID:???
あー、すまん、cnetじゃないねmycomだねorz
41NAME IS NULL:2007/09/13(木) 18:16:28 ID:???
あーうー、なぜかwindowsのサービスで実行すると、C直下に.h2.server.propertiesファイルができる。
42NAME IS NULL:2007/09/25(火) 08:56:23 ID:???
まだHSQLDB使ってる。
乗り換えた方がいいんかね?
43NAME IS NULL:2007/09/25(火) 11:03:14 ID:ifNTHzMz
もちょっと人気出てもいいと思うんだけどね。

コンソール、使いやすい。データベース初心者に超やさしいよ。
44NAME IS NULL:2007/09/25(火) 13:36:41 ID:???
>>43
俺もすごい使いやすいと思った。
45NAME IS NULL:2007/09/25(火) 17:20:11 ID:ifNTHzMz
H2 のコンソールって、
クラスパスにjar を登録すると、他のデータベースも
使えるんだね。

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

Execute Queryとかの汎用ツールがあるのは知っているが、
登録するだけでめんどくさ過ぎて、やってられない。
46NAME IS NULL:2007/09/25(火) 17:38:08 ID:???
前から"jdbc:h2:file:C:\〜"って形式でアクセスしてたんだが、ある日急にエラーが出始めた。
原因を探ると、どうやら前日に設定したbaseDirオプションのせいだということに気づいたんだが、
これって仕様なんだろうか?結構致命的なバグだと思うので、
必要なら報告せねばと思ってるんだが、いまいち踏ん切りがつかない。
47NAME 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 もちろん、いつもとは限らないけど。
(最初は本当に驚いた。あちらの方でこのような方は前例が
 ないような気がするがなぁ)
48NAME 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:\〜 という形式でアクセスする必要は
ないのではないだろうか…。不安定になるなら、なおさら。
49NAME IS NULL:2007/09/25(火) 20:05:54 ID:???
>>48
レスthx.
確かにほとんどEnbeddedで動かしてるから、必要ないんだけど、
ドライブまたいだ、たとえばDドライブ内にDBファイルを作ろうとすると、絶対パスでないとできないんだよねえ。
おk、サポートで聞いてみるよ。
50NAME IS NULL:2007/09/26(水) 02:41:51 ID:???
Javaクライアント界のSQLiteを目指して頑張って欲しい
51NAME IS NULL:2007/09/26(水) 13:29:02 ID:???
>>50
ライバルは、SQLiteJDBCか!
>>49
Embeddedなら実行ディレクトリをデータファイルの場所に動かせば、
fileスキームの指定は要らなくなるんじゃなかったっけ?
複数ディレクトリにばらけてるなら、しかたないかもしれんけど。
52NAME IS NULL:2007/09/26(水) 20:03:22 ID:iAGNNJNN
ライバルは、使いやすさでは SQLite。
機能では、MySQL と PostgreSQL ということでしょ。

もっとみんなに触ってほしいよ。
一度試してみれば、使いやすくて高機能というのが
分かってくれるはずなんだけどなー。
53NAME IS NULL:2007/09/29(土) 13:54:00 ID:???
使うのが簡単で、機能も一通りそろってて、それでいて速いので気に入って使ってます。
ブラウザベースのコンソールも便利だけど、readline対応のCLIも欲しいな。
54NAME IS NULL:2007/10/03(水) 00:39:21 ID:s1PZV8oW
>>52

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

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

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

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



55NAME IS NULL:2007/10/08(月) 13:07:03 ID:rhsQ/m1u
本家HomePage の日本語訳部分が大幅に増えましたね。
56NAME 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 の実体はこれであってますか?
57NAME 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
58NAME IS NULL:2007/11/07(水) 15:27:01 ID:9AOs1HeU
>>57
レスどうもありがとうございます。FAQ見逃してた・・・理解しました。
5956: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

なんてコメントがあるのでドキュメント化されるとうれしいですね。
60NAME IS NULL:2007/11/09(金) 15:25:07 ID:???
=FALSEの間違いじゃ?

あと、無指定でAutoCommitなのはJDBC仕様でしょ
6156:2007/11/09(金) 15:33:13 ID:???
>>60
すみません、コピペ元のソースを間違えました

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

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

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

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

しばらく遊ぶことにしよう。
62NAME IS NULL:2008/02/26(火) 23:11:09 ID:YBMRSqIg
grails-1.0内蔵のデータベースはまだHSQLDBだった。
63NAME IS NULL:2008/04/02(水) 22:21:03 ID:APbDJlUh
>>62
     オハヨー!!
    ∧∧ ∩
    (`・ω・)/
   ⊂  ノ
    (つノ
     (ノ
 ___/(___
/  (___/
 ̄ ̄ ̄ ̄ ̄ ̄
64NAME 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
65NAME IS NULL:2008/06/17(火) 20:49:40 ID:???
あのさ・・・・JBossのDataSourceとしてH2を設定できたやつっている?
何か、EOFExceptionから逃げられない・・・・
hsqldb-ds.xml を書き換えたりして、やってみようとしてるんだけど・・・・
66NAME 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件のデータをデータベースに登録するのに一晩では終わらなかったです
67NAME IS NULL:2008/07/08(火) 23:07:40 ID:???
Turion 64 X2 TL-60 2.0GHz Vistaで試してみたけど
1,000件で150ms
10,000件で650msだったよ、
68NAME IS NULL:2008/07/09(水) 02:26:35 ID:???
>>67
早速のご回答ありがとうございます。
やっぱり私のは遅すぎるようですね…10倍近く違うとは
何かどこかで変な事をやってる臭いですね
再度ソースを洗ってみます

ところで、MERGEはEXPLAINできないんですね。怒られました
6966:2008/07/09(水) 12:37:33 ID:???
アプリから該当のCREATE TABLEとMERGEだけ抜き出して
ダミーのmainに貼り付けてダミーデータで実行したら>>67と同等の結果が出ました
何が悪いんだろう…
考えられるのは、他の、DB全体の要因などでしょうか?
例えばテーブル数が多すぎて参照に時間が掛かっているとか…
問題のテーブル以外にも外部キー設定したテーブルが100近くあります
これからテーブル数を変更してテストしてみます
70NAME IS NULL:2008/08/01(金) 22:11:10 ID:???
最近のバージョンアップでも地味に機能が追加されてるな
ついに行ロックのコードも入りはじめたみたいだし
71NAME IS NULL:2008/08/03(日) 11:21:01 ID:???
行ロックに対応したら有り難いなあ
用途が広がりそう
72NAME IS NULL:2008/08/03(日) 12:56:14 ID:ZzfOsO6b
ほんと使えるなぁコレ。
73NAME IS NULL:2008/10/07(火) 23:49:21 ID:iBo0WhZL
スクリプト流し込む時どんなツール使ってる?
74NAME IS NULL:2008/10/10(金) 21:06:50 ID:???
>>73
俺はExecute Queryってツールを使ってるよ。
http://executequery.org/index.jsp


そういえば、1.0.79で行レベルロック機能が有効になったと思ったら、
そのすぐ後に1.1.100も出てきて、ここしばらく動きが速いね。
75NAME IS NULL:2008/10/15(水) 01:29:56 ID:n9DCCDo6
>>74 さんくす
ほほん、、、え、えいごかぁ
76NAME IS NULL:2008/10/15(水) 10:08:35 ID:???
eclipse 使ってるなら DBViewerプラグインが良いよ。
ttp://www.ne.jp/asahi/zigen/home/plugin/dbviewer/about_jp.html
77NAME IS NULL:2008/10/15(水) 22:09:03 ID:???
なんか "GROUP BY" がおかしくない?

CREATE TABLE TESTTBL(
A INTEGER NOT NULL
, B INTEGER NOT NULL
, PRIMARY KEY(A, B)
);

INSERT INTO TESTTBL (A, B) VALUES (1, 1);
INSERT INTO TESTTBL (A, B) VALUES (1, 2);
INSERT INTO TESTTBL (A, B) VALUES (2, 1);
INSERT INTO TESTTBL (A, B) VALUES (2, 2);

SELECT B FROM TESTTBL GROUP BY B;

DROP TABLE IF EXISTS TESTTBL;

これで期待する結果は

1
2

なのに

1
2
1
2

が返されるだけど…
78NAME IS NULL:2008/10/15(水) 22:26:30 ID:???
DISTINCT
79NAME IS NULL:2008/10/15(水) 23:33:36 ID:???
>>78
う〜ん、そうなんだけど…
80NAME IS NULL:2008/10/16(木) 14:23:40 ID:???
普通に2件返るよ。
ver1.0.67でちょっと古いけど。
81NAME IS NULL:2008/10/16(木) 22:49:53 ID:???
なるねぇ

> SELECT B FROM TESTTBL GROUP BY B;
> B
> 1
> 2
> 1
> 2
> (4 行, 0 ms)

@H2 1.1.100(2008-10-04)
82NAME IS NULL:2008/10/16(木) 23:20:36 ID:???
Oracle10i で2件、Postgres8.3で2件、H2 1.1.100で4件なのを確認した。
83NAME IS NULL:2008/10/17(金) 00:18:39 ID:???
うーん、公式に投げた方が良い気がする。どこで変わったんだろう。
84NAME IS NULL:2008/10/18(土) 00:54:02 ID:???
うお、人が居る!

すんません、>>77です。
ゴメンナサイ、これは言葉が足らなかった…

>>77の様な場合に2件返すタイプのDBも、4件返すタイプのDBも存在します、たしか…
4件返すタイプはDB2とかだっけなぁ、忘れちゃった
個人的に4件返すタイプのDBが嫌いなので書いちゃっただけです…

古いバージョンは知らないのですが、
Version 1.0.73、 Version 1.1.100 共に同じ結果で
4件返されます

贅沢言わせて貰えれば、"SET MODE"でこの辺も反映してもらえると最高!

てっ、ゆーかもうバージョン上がってるし…

最新は Version 1.1.101 (2008-10-17) の模様
まだ未確認だけど
85NAME IS NULL:2008/12/08(月) 02:34:53 ID:???
そして誰も居なくなった…

個人的感想をチラ裏にメモ

まだオプティマイザがお馬鹿ちゃんなのかな?

簡単な場面ですぐにテーブルスキャンにいってしまう
っていうか、テーブルスキャンが他のDBより極端に遅いかもしれない
特にデータ量が多い場合に顕著な気がする

もしかしたらキャッシュが効いてる場合と、
そうでない場合のギャップがすさまじいのかも

良く言えば、
単テーブルを対象としたクエリの場合はとても素直なので、
インデックスの勉強にはいいかもしれない…
良く言えばだが…

特に、結合した場合はうまくインデックスを利用できてないっぽいし、
多量のデータを対象とした集計を行う場合にも、
どうしようもない位遅い…
悲しい程に…

期待age
8666:2008/12/08(月) 09:24:11 ID:???
そうそう、素でオプティ米座に頼ると遅いね

キリキリ自分でチューンすると何とか動かせるレベルになるけど
経験無いと辛いかもしれん
87NAME IS NULL:2008/12/09(火) 04:08:31 ID:iw0aazLl
知らない間にまたバージョンが上がっていたよ、パトラッシュ…

Version 1.1.104 (2008-11-28)なんだって…
最近バージョンアップが頻繁なんだよ…

ぼくは H2 を気に入っているんだ…
だから心配なんだよ…

stable のリリース時期が決まっていないのに
unstable を次々リリースしている事に…

僕には unstable を追っかけるのは無理だったんだ…

パトラッシュ…
僕なんだかとっても眠いんだ…
88NAME IS NULL:2008/12/09(火) 04:24:21 ID:iw0aazLl
ってゆか
書きたかった事を忘れてた…

Version 1.1.100 (2008-10-04)では問題の無かった"LINKED TABLE"関連(多分ストアドとか"ALIAS"も)

Version 1.1.103 (2008-11-07)で壊れているのかも…

正確に言うと jdbc ドライバ等、つまりはクラスパス関連が調子悪いかもね…

でも、期待age
89NAME IS NULL:2008/12/16(火) 23:16:53 ID:???
以前のバージョンで普通に動いていたWindows サービス化が
ビタイチ動かねえとサービス実行ユーザやら権限やら散々確認して、
ふと確認したwrapper.confのjar名がh2.jarで最近のh2-1.1.x.jarみたいな
バージョン後置のファイル名に追随してないだけだと気付いた際の脱力感について。
90NAME IS NULL:2008/12/25(木) 20:01:13 ID:???
JPのGoogleGroupのオーナーの知り合いって
いないんですかね?

Thomasが
>I like to delete the spam messages
>in this forum. The person / company that started this Japanese Forum
>does not respond unfortunately.
http://groups.google.co.jp/group/h2-database-jp/browse_thread/thread/8a5714506a4b3145#

ってスパム消したいけど・・・って困ってるみたいなんですけど。
91NAME IS NULL:2009/01/04(日) 01:59:54 ID:???
というか自前でフォーラム建てろよ…
もちろんバックエンドを H2 でさぁ…
組込み特化だけで終わる気なら別にいいんだけどさぁ…
つか、開発自体にパワーを割きたいのはわかるけどさぁ…
フィードバック自体が少な過ぎるのも問題だよ…
92NAME IS NULL:2009/01/07(水) 22:32:29 ID:???
>>90
オーナーと連絡取れたみたいですね
よかったです
でも、Thomas、マネージャになってもいいと思うんだけどメンバーだよねぇ・・・
93NAME IS NULL:2009/01/09(金) 23:54:25 ID:???
>>91
>自前でフォーラム
>>23という経緯があるから難しいんじゃないかな
94NAME IS NULL:2009/02/14(土) 23:59:13 ID:MzWx8IKc
最近存在を知りました。期待age
95NAME IS NULL:2009/02/18(水) 19:45:09 ID:V5MyxaOb
>>63
  ∧,,∧
 ( `・ω・) ウーム…ここは?
 / ∽ |
 しー-J
96NAME IS NULL:2009/03/13(金) 00:06:00 ID:???
try
{
net.2ch.pc11.test.read.db.H2DB.currentThread.getUser();
}
catch (NullPointerException e)
{
System.err.println("ぬるぽ");
System.err.println(e.toString());
}
97NAME IS NULL:2009/04/05(日) 00:56:15 ID:???
Version 1.1.110 (2009-04-03) released

ttp://www.h2database.com/html/changelog_ja.html
98NAME IS NULL:2009/04/16(木) 21:05:00 ID:ERAG7UWu
99923:2009/04/16(木) 21:07:11 ID:TozpFWZO
大きいトランザクションを実装したとき問題になることって何でしょうか?
100NAME IS NULL:2009/04/19(日) 01:45:43 ID:twRaraWu
>>99
本当に、こんな大きいトランザクションが必要なのか?

実装中にそんな事を考え続け、
眠れない夜を過ごすのは大いに問題

その後、過去の自分の実装を思いだし、
こうしとけば良かった、ああしとけば良かった、
と思い悩み、悶々し続けるのも問題
101NAME IS NULL:2009/04/19(日) 03:23:23 ID:???
トランザクションが終わらないのが問題なのかどうか判明するまで時間がかかる

まぁ、デバッガで接続してるときはトランザクション開いたままだから
タイムアウト気にするけどね。
普通は、大きなトランザクションを作らないようにするのが問題少ないって。
102NAME IS NULL:2009/04/21(火) 21:36:58 ID:???
H2を利用して初めてWebアプリを開発してます。
H2の利用は初めてじゃありません。
で、いろいろWebで調べるとH2のJarファイルを、例えばTomcatだと
common/libの下に入れるのがセオリーっぽいのだけど、アプリケーションコンテキストの
WEB-INF/libの下に入れて開発されている方いらっしゃいますか?
また、WEB-INF/libの下に入れることによるデメリットをご存知の方、教えてもらえないだろうか…。
103NAME IS NULL:2009/04/22(水) 22:02:28 ID:???
>102
Tomcatのデータソースを使うならばcommon/lib下で。
使わないならWEB-INF/libでもいいかと。JDBC直呼びの場合など。

参考までに、オープンソースのグループウェア「GROUP SESSION」は
WEB-INF/lib下にh2.jarを配置する構成でした。
104NAME IS NULL:2009/04/22(水) 22:59:04 ID:???
>>103
アドバイスありがとうございます。
とりあえず、WEB-INF/libの下に置いてのんびり開発してます。
なにか問題があったら報告します。

H2がもっと活気付くといいなぁ…。他力本願はよくないか^^;
105NAME IS NULL:2009/04/27(月) 02:53:27 ID:???
個人的にはリンク機能に注目してる
あんま検証してないけどね…
ACCESSみたいなフロントエンド作ろうかなぁ
106NAME IS NULL:2009/05/04(月) 01:11:37 ID:???
107NAME IS NULL:2009/05/22(金) 21:55:57 ID:SASQ5DbM
>>95
  ∧ ∧   一人一個まで
 ( ´・ω・)
 ( ∪ ∪  ,.-、   ,.-、   ,.-、   ,.-、     ,.-、      ,.-、    ,.-、
 と__)__) (,,■)  (,,■)  (,,■)  (,,■)    (,,■)      (,,■)   (,,■)
       梅干  高菜 おかか こんぶ ごはんですよ わさび漬け 焼たらこ
          ,.-、   ,.-、     ,.-、      ,.-、   ,.-、   ,.-、    ,.-、
          (,,■)  (,,■)    (,,■)     (,,■)  (,,■)  (,,■)   (,,■)
          鶏飯 明太子 ちりめんじゃこ ゆかり  柴漬  塩辛 牛肉しぐれ
      ,.-、   ,.-、     ,.-、    ,.-、    ,.-、   ,.-、    ,.-、   ,.-、
     (,,■)  (,,■)    (,,■)   (,,■)   (,,■)  (,,■)   (,,■)  (,,■)
      鮭 鶏ごぼう  野沢菜  天むす ツナマヨ エビマヨ 鮭マヨ 具なし
108NAME IS NULL:2009/06/04(木) 16:32:48 ID:???
1.1.114から、JRE 1.5 必須になったね。
JRE 1.4 で動かすなら Retrotranslator 使えってことらしい。
109NAME IS NULL:2009/07/02(木) 12:31:38 ID:???
いつの間にか 1.1.115 が来てた。
“The new storage mechanism”って、今までのものと何が違うんだろ?
110NAME IS NULL:2009/07/05(日) 00:13:20 ID:/zwYoFwe
Version 1.1.115 (2009-06-21)
ttp://www.h2database.com/html/changelog.html


>>109
なんか pageStore とか言うエンジンを作ってるっぽい
まだアルファっぽい

ページング出来るインメモリストレージエンジンみたいな感じ?
HSQLDB で言う CACHED に近いものかな?
111109:2009/07/08(水) 14:33:52 ID:???
>>110
色々調べてたら、↓こんなのが引っかかった。

「Re: Java 1.5, but still support Java 1.4 using Retrotranslator, Retroweaver, or using -target jsr14」
http://www.mail-archive.com/[email protected]/msg01773.html
>> The performance on Flash (NAND) file systems is also fairly poor
>> mostly because of the large number of small write operations executed
>> by H2.

> This should be solved in the new storage mechanism ('page store').

SSDに最適化したストレージ機構を別途作るってことっぽいね。
ファイルへの書き込みを細切れに行わず、ある程度まとまった単位で行うことで、
SSD使用時のパフォーマンス劣化を防ぐ……んだと思う。
112NAME IS NULL:2009/07/23(木) 09:50:08 ID:???
1.1.116来てるね。

Page Store については
> still experimental, and the file format will change, but it is quite stable now.
らしい。
113NAME IS NULL:2009/10/19(月) 09:26:01 ID:0c2k2osu
Version 1.2.121 age
114NAME IS NULL:2009/11/16(月) 02:33:19 ID:gLSep6AL
Version 1.2.122 (2009-10-28)

* The native fulltext search now supports streaming CLOB data.
* If the database URL ends with ;PAGE_STORE=TRUE and a database in the old format exists,
it is automatically converted to the new page store format if possible. A backup of the database is created first.
Automatic conversion is not supported if the database was not closed normally (if it contains uncommitted transactions).
* Dropping the current user is now allowed if another admin user exists.
* Values of type BINARY or BLOB could not be converted to the data type OTHER.
* SHUTDOWN COMPACT now fully compacts the database.
* New system properties h2.maxCompactCount and h2.maxCompactTime to allow changing the default behavior (at most 2 seconds compacting when closing the database).
* New sorted insert optimization (see Performance / Database Performance Tuning).
* Issue 116: The files h2*-sources.jar and h2*-javadoc.jar are now in the Maven repository.
* Page store: opening a large database was slow if it was not closed before.
* Page store: new write and read counters in the meta data table.
Use SELECT * FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME IN( 'info.FILE_WRITE_TOTAL', 'info.FILE_WRITE', 'info.FILE_READ', 'info.CACHE_MAX_SIZE', 'info.CACHE_SIZE')
* The SQL syntax is documented using (railroad) diagrams. The diagrams are HTML.
* The documentation is no longer available in Japanese because the translation was too much out of sync.
Please use the Google translation instead.
* Certain queries were not sorted if subselect queries were involved
* More bugs in the server-less multi-connection mode have been fixed: 90097 The database is read only,
caches must be cleared on reconnect, etc.
115NAME IS NULL:2009/11/16(月) 02:35:28 ID:gLSep6AL
Version 1.2.123 (2009-11-08)

* Page store: new databases can not be opened with older versions.
* Page store: updating large rows (rows with more than 2000 bytes of data) could corrupt the database.
* Page store: inserting very large rows failed with ArrayIndexOutOfBoundsException.
* When using multi-threaded kernel mode,
setting disabling locking (LOCK_MODE=0) will now throw an exception.
At this time this combination will result in corruption when multiple threads try to update the same table.
* The fulltext search methods and fields are now protected instead of private, to make the classes more easily extensible.
* The Lucene fulltext search now also returns the score.
* New function SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger.
* Statement.getGeneratedKeys() returned the wrong value if a trigger changed the identity value after inserting the row.
* Improved error messages: identifiers and values are now quoted.
* Improved error message when casting a value failed: the column name and type is included in the message.
* Improved support for GAE for Java thanks to Vince Bonfanti.
116NAME IS NULL:2009/11/18(水) 23:34:29 ID:bJWt2MSL
Recursive Queryに対応してほしい。
117NAME IS NULL:2009/11/21(土) 06:22:05 ID:q6pvm/q4
Version 1.2.124 (2009-11-20)

* Clustering: there is now a way to detect which cluster instances are running.
* ConvertTraceFile: the SQL statement statistics are better formatted (newline are removed).
* The file lock thread is now stopped when the database is closed.
* Issue 140: the Script tool now supports writing to a stream.
* Issue 138: the trace output of Statement.execute(String, int) and executeUpdate was incorrect.
* Page store: new databases can not be opened with older versions.
* Page store: multi-column indexes didn't work if the cache was very small.
* Page store: opening a database could theoretically result in an endless loop.
* Page store: adding large indexed columns could get very slow.
* Page store: after a duplicate key exception,
an ArrayIndexOutOfBoundsException could be thrown (only for very large rows).
* Page store: the recover tool sometimes generated a script file that contained duplicate data.
* Page store: sometimes opening a read-only database failed.
* Page store: opening a database sometimes failed if large rows where updated,
or if a table was truncated before.
* Page store: when using a very small page size (128 bytes or smaller),
writing a large row could result in an endless recursion. This is only a theoretical problem, as the page size is 2 KB.
* Page store: getting the min value from a descending index with NULL entries could return the wrong result.
* Page store: improved auto-recovery after power failure.
* The JDBC client did not detect that it was not talking to an H2 server.
This could result in strange exceptions when trying to connect to another kind of server.
* User defined functions can be created with source code.
Example: CREATE ALIAS HI AS 'String hi() { return "Hello"; }'
* Database file lock: the exception "lock file modified in the future" is longer thrown; instead,
opening the file will be delayed by 2 seconds.
* Inserting LOBs got slower each time the process was restarted.
It could loop endlessly after about 1000 process restarts.
* Issue 117: Multi-version concurrency: concurrent MERGE statements now work.
* Improved read-only database detection.
118NAME IS NULL:2009/12/09(水) 23:10:14 ID:OerOAmFx
Version 1.2.125 (2009-12-06)

* Lucene fulltext search:
the Lucene field names now match the table column names,
except if the column names start with _ (in which case another _ is prepended).
Unfortunately this change means existing fulltext indexes need to be re-built.
* The shell tool now has a very simple statement history.
* The zip file system implementation now supports the '~' home directory prefix.
Example database URL: jdbc:h2:zip:~/test.zip!/test
* Right outer joins on tables that were already 'inner joined' was processed incorrectly.
* Temporary files from LOB objects were not deleted early enough when using the server mode.
* Trying to alter a temporary table threw a strange exception.
It is still not possible to do that, but the exception message is better now.
* When the system property h2.maxMemoryRowsDistinct was set,
and using SELECT DISTINCT, the temporary table was not correctly dropped.
This could cause problems in recovery when the process was killed.
* Trigger that are called before a select statement are now supported.
This allows to create tables that work like materialized views.
* Non-row based triggers were called even if the action didn't match the declared action
(INSERT triggers were also called when deleting rows).
This has been changed. The MERGE statement calls both INSERT and DELETE triggers.
* Statements with IN(..) conditions could produce the wrong result or a data conversion error (since version 1.2.120).
Examples: index on id, name, condition: id=1 and name in('Hello', 'x');
index on id, query: select * from (select * from test) where id=1 and name in('Hello', 'World').
* The CompressTool was not multithreading safe.
Because of this, the following database operations where also not multithreading safe (even when using different databases):
the SCRIPT command (only when using compression), the COMPRESS function,
and storing CLOB or BLOB data (only when compression is enabled).
* The compression algorithm "LZF" is now about 33% faster than before when compressing small block (around 2 KB).
It is much faster than Deflate, but the compression ratio is lower.
Some of the optimizations are from Sam Van Oort, thanks a lot!
* Compressing large blocks of data didn't work when using the "Deflate" compression algorithm.
Compressing a lot of data could run out of heap memory.
* The test cases don't access the file system directly,
this simplifies GAE for Java testing. Thanks to Vince Bonfanti.
* More bugs in the server-less multi-connection mode have been fixed.
* When running against an old database,
the SCRIPT statement could generate a SQL script that contained duplicate indexes (PRIMARY_KEY_E).
* JdbcConnectionPool.getConnection() could throw a NullPointerException.
* User defined functions: the source code is now available using SELECT SOURCE FROM INFORMATION_SCHEMA.FUNCTION_ALIASES.
* User defined functions with source code didn't work after re-opening the database.
* The newsfeeds are now Atom 1.0 standard compliant.
* The database is now closed after an out of memory exception, because the database could get corrupt otherwise.
* Better error message if both AUTO_SERVER and SERIALIZED parameters are set to TRUE.
* Drop table did not delete lob files in old file store (not PAGE_STORE).
119NAME IS NULL:2009/12/11(金) 00:32:10 ID:???
よーがんばっとるみたいだね。
120NAME IS NULL:2009/12/19(土) 15:58:51 ID:kF2PnjXl
Version 1.2.126 (2009-12-18)
http://www.h2database.com/html/changelog.html
121NAME IS NULL:2010/01/17(日) 16:39:50 ID:vXAIrE+O
Version 1.2.127 (2010-01-15)
http://www.h2database.com/html/changelog.html
122NAME IS NULL:2010/01/19(火) 02:12:07 ID:NE/IZJ6Y
ちょっとスレ違いな話かもしれませんけど、
RDBの最適化について質問させてください。

主キーがint型のテーブルで、10億個のデータが入っているとします。
このときに、次のどちらが効率的だと思いますか?

・一つのデータベースに10億個のデータを入れておいて、
主キーで検索した場合。

・2つデータベースに5億づつデータを入れておいて、
検索するキーが5億未満の場合はデータベースAを、
検索するキーが5億以上の場合はデータベースBを
検索するように分岐する場合。

単純に量が多い場合は後者が効率的だと思うのですが、
それは正しいでしょうか?
123NAME IS NULL:2010/01/19(火) 04:10:05 ID:???
検索は前者、更新は後者が効率的。
パーティショニング機能のあるRDBMSを探して
その質問スレへどうぞ。
124NAME IS NULL:2010/01/31(日) 18:09:36 ID:lpFADVU5
Version 1.2.128 (2010-01-30)
http://www.h2database.com/html/changelog.html
125NAME IS NULL:2010/02/19(金) 18:40:30 ID:/jEQDPoc
テーブルの使用済みバイト数とか、使用率なんかを見る方法を知りませんか?
INFOMATION_SCHEMAを見てもそれらしいのが見当たらなくて。
126NAME IS NULL:2010/02/22(月) 15:52:09 ID:APCLaY3d
最新入荷情報!
高額ビジネスソフトが激安にて!
http://surprise.hostrator.com
127NAME IS NULL:2010/02/23(火) 01:35:22 ID:VGe+DBrl
Version 1.2.129 (2010-02-19)
http://www.h2database.com/html/changelog.html
128NAME IS NULL:2010/02/27(土) 19:58:44 ID:???
1.2.130が出てる
129NAME IS NULL:2010/02/28(日) 18:56:39 ID:I1cOSBEw
Version 1.2.130 (2010-02-26)
http://www.h2database.com/html/changelog.html
130NAME IS NULL:2010/03/06(土) 17:13:41 ID:???
Version 1.2.131 (2010-03-05)
http://www.h2database.com/html/changelog.html

・Older versions of H2 (version 1.2.127 and older) could not connect to a new version
(version 1.2.129 and newer). The connection blocked when trying to connect. Now the
connection no longer blocks, instead a SQL exception is thrown.

・In versions 1.2.129 and 1.2.130, a database could not be opened sometimes after
dropping tables or indexes, and then creating new indexes for existing tables. The
exception contained the text "parent not found" (version 1.2.129) or "Table not found"
(version 1.2.130).


今回のバージョンアップは、下位バージョンとの互換性という点では要注意っぽいね。
131NAME IS NULL:2010/03/11(木) 13:37:02 ID:???
画像ファイルをJavaでString(byte[])に変換して
VARCHAR(max)にいれてみたいんだけど
H2DBのVARCHARってどのくらい入れられる?
MByteのデータ入れられるといいんだけど。。。
132NAME IS NULL:2010/03/13(土) 15:35:45 ID:???
なぜVARCHAR?
BINARYかBLOBにしとけよ
133NAME IS NULL:2010/03/13(土) 21:25:28 ID:???
固定長の方がいいのか
134NAME IS NULL:2010/03/14(日) 18:07:22 ID:???
>>131
http://www.h2database.com/html/datatypes.html#varchar_type
> The maximum precision is Integer.MAX_VALUE.
※Integer.MAX_VALUEは 2^31-1 ね。


個人的には、なぜバイナリーデータである画像データを、
本来文字列を入れるために用意されたVARCHAR型に入れようとしてるのか、
その理由が知りたいな。

本来なら、バイナリーデータを格納するという用途には
BLOB型かBINARY型を選択するところだと思うけど……
135NAME IS NULL:2010/03/15(月) 00:32:14 ID:???
>>134

varcharは圧縮されて容量が多少すくなくなるらしいんだ

それでメディアファイル(画像とかmp3)をいれるとして
小さなメディア、大きなメディアファイルが混在する
数メガのカラムがあるとしたら圧縮された方がいいかなっと

でも本当の理由はバイトデータをbase64の文字列にして
保存するってwebのどっかで見かけて見かけたのが発端
136NAME IS NULL:2010/03/15(月) 00:43:41 ID:???
画像データをそれ以上圧縮するのは難しい
逆にBASE64の分だけ膨らんでしまうよ
137134:2010/03/15(月) 11:28:26 ID:???
>>135
DBにデータを格納する時点でバイナリーをシリアライズ(今回はBase64)する
必要性ってドコにあるんだろうかと、ちょっと考えてみた。

例えばに画像うpろだみたいに、DBへのデータ挿入に比べて、DBからのデータ取得が
圧倒的に多いような場合で、「DBからバイナリーでデータ取得した後のBase64変換処理が惜しい」
というような非機能要求があるなら、VARCHARにシリアライズ済みデータを持つというアイディアも
“アリ”なのかな、とは思う。実際にどの程度効果があるかについて検証する必要はあるけど。


ともかく、なぜ“シリアライズ後のデータ”を「DBに」持たせるのかについて、
もう少し詳細に考えてみた方がいいような気はする。個人的にはどうも、セオリーから外れた
DB設計をしている印象がぬぐえないっスよ。
138NAME IS NULL:2010/03/21(日) 00:10:44 ID:???
質問者だけどBLOBかURLで
画像データを扱うことにするよ

ありがとな
139NAME IS NULL:2010/03/23(火) 08:57:15 ID:PnKNmZYE
Version 1.2.132 (2010-03-21)
http://www.h2database.com/html/changelog.html

・The implementation of a Java to C (source code level) converter has been
started. The plan is: it should be possible to convert H2 (or a part of it) to C so
that the database can be run without a JVM. This will be a long term project (it
may take a year or so).


がんがれー!
140NAME IS NULL:2010/03/23(火) 22:12:52 ID:???
ディスクIOがボトルネックになっている場合は、
256上限のカラムをバイナリ指定で1バイトとかにした方が良いのかな?
インデックス効きづらくなったりする?
141NAME IS NULL:2010/03/23(火) 22:15:30 ID:???
レコードが大量にあるテーブルの話ね
142NAME IS NULL:2010/03/24(水) 01:47:06 ID:???
試してみたけど、検索遅い気がする
143NAME IS NULL:2010/03/26(金) 02:16:18 ID:???
Cで書き直したら他のDBとガチ勝負になるな
144NAME IS NULL:2010/03/31(水) 17:00:20 ID:???
>>139
Cで動かすと重くなったりしそうなんだけど
DBって結構低レベルなロジックが多いからパフォーマンス出たりするかな?
GCがあって、ネイティブが書き出せるGoへのコンバートとか
出来たら面白いような気もする。
145NAME IS NULL:2010/04/11(日) 22:45:02 ID:K0jggL2q
Version 1.2.133 (2010-04-10)
http://www.h2database.com/html/changelog.html
146NAME IS NULL:2010/04/27(火) 00:28:12 ID:ncuyX2pq
Version 1.2.134 (2010-04-23)
http://www.h2database.com/html/changelog.html
147NAME IS NULL:2010/05/10(月) 17:05:42 ID:???
Version 1.2.135 (2010-05-08)
http://www.h2database.com/html/changelog.html
148NAME IS NULL:2010/05/22(土) 00:07:55 ID:YYhA0N2D
javaから起動終了したいんだけど
シャットダウンでExceptionになるんだ。
間違ってる?

String port = "9999";
Server server = Server.createTcpServer("-tcpPort", port);
server.start();
Server.shutdownTcpServer("tcp://localhost:" + port, password, false);
149NAME IS NULL:2010/05/22(土) 01:28:37 ID:o0WlONLE
150NAME IS NULL:2010/05/22(土) 14:51:55 ID:???
>>148
server.stop()じゃいかんの?
リモートからシャットダウンしたいの? passwordはあってる?
なんにしてもExceptionの内容をまず貼らないとw
151NAME IS NULL:2010/05/22(土) 16:20:05 ID:VMLsDlO4
152NAME IS NULL:2010/05/23(日) 00:18:34 ID:???
>>150
start()と対になるのはstop()なの?
stopとshutdownの違いが分からないや
javadocに何も書いてないしわけわかめ
153NAME IS NULL:2010/05/23(日) 02:24:09 ID:???
>>152
ttp://www.h2database.com/html/tutorial.html#using_server
チュートリアルのここら辺?
154NAME IS NULL:2010/05/23(日) 03:50:42 ID:ZNJMLgIF
155NAME IS NULL:2010/05/25(火) 10:28:48 ID:???
H2はシェルスクリプトからsql実行という方法はできますか?
156NAME IS NULL:2010/05/25(火) 13:46:18 ID:???
157NAME IS NULL:2010/05/25(火) 13:47:55 ID:???
Version 1.2.136 (2010-05-24)
http://www.h2database.com/html/changelog.html
158NAME IS NULL:2010/05/26(水) 09:04:05 ID:???
全文検索あるのね。知らなかった
159NAME IS NULL:2010/06/07(月) 01:25:59 ID:???
Version 1.2.137 (2010-06-06)
http://www.h2database.com/html/changelog.html
160NAME IS NULL:2010/06/08(火) 18:39:40 ID:???
バージョンアップ頻繁すぎるんだよな。
161NAME IS NULL:2010/06/17(木) 19:30:15 ID:9pwjp9vx
RoadMapにはあるけど、
sum() over(...) を始めとするWindow関数が実装されると
ほんと使いやすいコンパクトデータベースになりますよね。
今でも重宝してますが。

何個かのSQLの結果をそれぞれ取ってきて、H2DBに入れといて
最終的な結果はH2DBでさらにSQLを投げて取得するような2段階
の処理が便利です。
162NAME IS NULL:2010/06/25(金) 20:27:49 ID:???
>>139
H2 のいいところは、実装が Java なので、サンプルとかプロトタイプを作ったときに、

・アプリケーションとデータベースそのもの(DBのデータファイル含む)を1つの jar なり war にして、
 それごと人に配布して起動したらアプリがすぐ利用できる
・渡す人のマシンがWindows でも Linux でも、変更する必要がない

だと思っているので、このまま Java 路線で行って欲しいなぁ

# もちろん使い方は人それぞれなので、↑であげた点以外にも H2 のいいところは
# いっぱいあると思いますが
163NAME IS NULL:2010/06/28(月) 04:44:30 ID:???
Version 1.2.138 (2010-06-27)
http://www.h2database.com/html/changelog.html
164NAME IS NULL:2010/06/30(水) 12:38:16 ID:???
>>162
でもLinuxでVMの実行権限がないユーザ(レン鯖契約者等)は、
H2がjava以外でも実装されないと動かないよ。
165NAME IS NULL:2010/06/30(水) 21:56:11 ID:???
Javaなんか自力インストール出来るだろw
166NAME IS NULL:2010/07/07(水) 17:06:47 ID:???
ところで聞きたいんだが、組み込みモードでクラスタリングってできるのかい?
167NAME IS NULL:2010/07/07(水) 20:28:21 ID:???
the embedded mode does not support clustering
168NAME IS NULL:2010/07/08(木) 09:10:20 ID:???
>>167
おっと。その記述が見つけられなかった余寒。
ありがとう。
169名無しさん@そうだ選挙に行こう:2010/07/10(土) 23:36:00 ID:pV4fjNv/
Version 1.2.139 (2010-07-10)
http://www.h2database.com/html/changelog.html
170NAME IS NULL:2010/07/13(火) 02:08:03 ID:???
HSQLDB の後継(?)となる HyperSQL というのが出たそうだが、
H2 と比べてパフォーマンスはどっちがいいのだろう?
http://journal.mycom.co.jp/articles/2010/07/09/hypersql/

H2 はツール、webベースのコンソールも使いやすいので、
H2 を使い続けるつもりだが・・・

H2 の作者は、HSQLDB の元開発者の一人なんだっけ?

171NAME IS NULL:2010/07/13(火) 06:22:23 ID:ZBPj4E9w
>>170
HyperSQL(HSQLDB)2.0が出た直後(一月くらい前)あたりに、
H2のperformanceページが更新されてたりするんだぜ。

http://www.h2database.com/html/performance.html
172170:2010/07/13(火) 10:17:53 ID:???
>>171
どうもありがとう、H2 のサイトにそのページがあるのは知っていたが、
もう一度見直すべきだった。
H2 がんばれ
173NAME IS NULL:2010/07/26(月) 03:06:20 ID:dO3E9bpz
Version 1.2.140 (2010-07-25)
http://www.h2database.com/html/changelog.html
174NAME IS NULL:2010/07/29(木) 07:16:16 ID:JfU7t+Xv
このDBは関数インデックスは使えないんですか?
CREATE INDEX index_hoge ON t_hoge(UPPER(hoge))
とかやるとエラーになります
175NAME IS NULL:2010/07/29(木) 09:00:08 ID:???
176NAME IS NULL:2010/07/29(木) 11:21:54 ID:???
>>175 
やっぱりそですか。ありがとうございます。
そのページは見てたんですが、そもそもそこに書かれてない関数とかも対応してたりしますよね。
たとえばPostgresのSERIAL型が使えたり(IDENTITYのシンタックスシュガーでしょうが)。
なのでなにかないもんかと思ったのでうが。
177NAME IS NULL:2010/08/22(日) 17:48:32 ID:5FS5lYcn
Version 1.2.141 (2010-08-22)
http://www.h2database.com/html/changelog.html

今回ちょっと間が開いたな
178NAME IS NULL:2010/09/01(水) 03:39:47 ID:cbLecwgT
Version 1.2.142 (2010-08-31)
http://www.h2database.com/html/changelog.html

前回、間が開いた分今回は早いなw
179NAME IS NULL:2010/09/01(水) 04:28:36 ID:???
いまだにFULL OUTER JOIN できないのはなんかこだわりがあるんですかね
180NAME IS NULL:2010/09/08(水) 01:01:14 ID:???
知らないだけかも?

俺は知らんかったぜ・・・
FULL OUTER JOIN

無くても誤魔化せるけど
あった方がシンプルな SQL 書けるねぇ・・・
181NAME IS NULL:2010/09/19(日) 00:49:45 ID:7EI+5zsU
Version 1.2.143 (2010-09-18)
http://www.h2database.com/html/changelog.html

定期age
182NAME IS NULL:2010/09/30(木) 22:07:43 ID:???
H2てUNIONよりORDER BYのが強いのな。
183NAME IS NULL:2010/10/16(土) 03:51:04 ID:PrAtOw15
Version 1.2.144 (2010-10-15)
http://www.h2database.com/html/changelog.html

更新大目、内容は知らん。
changelogのバージョンと日付、コピペミスってるw
184NAME IS NULL:2010/11/02(火) 15:45:41 ID:8+++z4cb
Version 1.2.145 (2010-11-02)
http://www.h2database.com/html/changelog.html
185NAME IS NULL:2010/11/09(火) 14:52:33 ID:vcKi3ofg
Version 1.3.146 Beta (2010-11-08)
http://www.h2database.com/html/changelog.html

1.3ベータ来ました、変更点はリンク先から。
186NAME IS NULL:2010/11/09(火) 20:31:14 ID:???
h2って.netで使える?組み込みで
187NAME IS NULL:2010/11/22(月) 03:45:40 ID:Vakivs7i
Version 1.2.147 (2010-11-21)
http://www.h2database.com/html/changelog.html
188NAME IS NULL:2010/12/02(木) 09:14:31 ID:???
Webアプリで使おうと思うんだけど
ファイルモードで使うときの注意点ってある?

Connectionを1つだけつくって使いまわさないといけない、
JTAトランザクションつかえない、
とかなんかあったらおしえてちょ
189NAME IS NULL:2010/12/02(木) 09:19:15 ID:???
>>187
○×が使えなくなりましたばっかだな
190NAME IS NULL:2011/03/03(木) 10:31:56.91 ID:???
ちんぽっぽ鈴木
191NAME IS NULL:2012/09/11(火) 00:21:31.57 ID:KdChHPhq
Version 1.3.169 (2012-09-09)
http://www.h2database.com/html/changelog.html
192NAME IS NULL:2012/12/14(金) 00:26:04.76 ID:WtR2Fva/
Version 1.3.170 (2012-11-30)
http://www.h2database.com/html/changelog.html
193NAME IS NULL:2013/01/04(金) 23:43:49.72 ID:Sqpm8/Gi
犯罪者個人に対して告訴状を違法派遣・偽装請負・偽装出向・多重派遣の被害者が作成(刑事告訴は無料) or 司法書士が代筆(料金は5万円ぐらい)※コピペ歓迎

告訴状を【検察の直告班】に郵便局の内容証明付で送付(疎明資料・証拠にはICレコーダー、スマホによる録音が適しています)

審査 → 不受理 → 告訴状再提出または刑法 第193条で訴えを起こす

受理 → 告訴事実を認め示談交渉(↓) →示談成立 → 法廷相場50〜100万円の示談金 ※示談拒否が良い
↓                ↓
事案化← 前科あり ←示談不成立(↓)→ 示談外交渉→ 犯罪者の年収半額×最大懲役年数の和解金支払い※推奨
↓                ↓
↓               起訴 →公判 → 罰金刑=前科(起訴事実を認めてるため)→追討ち民事訴訟
↓                    
審査 → 起訴(強制捜査・留置場)→ 公判 → 懲役刑などの厳罰(反省が認められないため)→追討ち民事訴訟

不起訴、起訴猶予

検察審査会法第30条(検察審査会へ申し立て)→ 起訴 → 起訴後は同上
刑法 第193条(公務員職権濫用)で検察事務官を刑事告訴 → 同上

◎告訴→告訴受理→示談交渉→厳罰を求め示談不成立→示談外交渉→和解金支払い・和解契約(公正証書・即決和解で秘密保持契約)
◎偽装請負・出向・違法派遣事件では派遣・出向先両方の代表者、役員、現場責任者に告訴できます。
前科がついた犯罪者が法人の代表であれば公的な入札からの排除、取引先や顧客との契約解除など社会的制裁・批判に晒されることから辞職または解任が妥当、役員・社員であれば懲戒を想定。
◎事業者内部の加害関係者による刑事告発(刑事訴訟法239条1項)も可能です。
加害者本人、管理間接部門の社員が刑事告発に踏み切る場合も和解金による解決が妥当です。

注意:告訴が受理されない理由
●3年間(※)の時効が過ぎたもの ※違法派遣
●同一事実について過去に告訴取消しがあったもの
●関連する民事訴訟を有利に導く目的の場合
●証拠が希薄なもの ※被害者が契約時に違法派遣・偽装請負・多重派遣と知っていても刑事告訴は有効です。
194NAME IS NULL:2013/01/17(木) 20:06:41.32 ID:EwS78HY0
パワハラ犯罪にたいする刑事罰(※本投稿のコピペ歓迎です)
人事原則
1 現行法では、社員が仕事を怠けたり、能力不足、就業規則違反、目標を達成できなくても解雇をしたり叱責することは違法です。どんな駄目社員、嘘つき社員、怠け者も定年まで解雇が違法なのが現行の正社員制度です。
2 パワハラは社風にあわない社員、成績の振るわない社員を自主退職に追い込む言わば人事的措置として用いられることが多い。
※違法な解雇の和解金相場は、労働審判で3ヶ月、通常裁判で1年以上の報酬、さらに社員が和解を拒めば復職が可能です。弁護士への着手金は12〜15万円、和解拒否なら20〜50万円程度。

人事部・ホットライン・御用組合へ直訴
メリット: 一時的緩和や人事異動
デメリット: 役員へ情報筒抜け、危険分子の烙印(情報漏洩がホットライン直訴者に多いのは人事部の常識)、パワハラ放置で自主退職に追い込まれる

民事訴訟・調停・労働審判
メリット: 損害賠償
デメリット: 裁判費用、解雇措置、民事不介入で刑事事案化を阻止、長期係争、パワハラ上司の継続雇用

刑事告訴
メリット: 1パワハラ上司の解雇・懲戒、または2多額の和解金、1と2どちらでも被害者の雇用は維持
デメリット: 人事異動(出世コースから外れる)
◎録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
◎告訴受理後の和解金は加害者の資産・収入に応じて変えてください。犯罪者の昨年の年収の半額程度×最大懲役年数が妥当です。
◎パワハラの被害についての告訴は1侮辱罪2脅迫罪3強要罪4威力業務妨害罪5傷害罪の順序で行ってください。警察・検察の協力(犯罪者の自宅・職場の強制捜査、留置所勾留)により罪の立証が楽になります。
◎刑事告訴した社員を解雇したり処遇面で著しい差別を行うことはないでしょうが、出世や管理職以上の昇進の可能性はあきらめるべきでしょう。
◎刑事告訴は民事訴訟と違って裁判による被害者への2次被害にありません。検察庁が被害者に代わって訴えをおこすので、無料で、時間と手間も告訴状をかくことと音声録音を残すだけです。
◎和解契約(公正証書・即決和解)では告訴した事実は秘匿事項となります。犯罪者が秘密保持契約を違反した場合の損害賠償金は、最低5000万円〜にしましょう。
195NAME IS NULL:2013/05/27(月) 12:40:36.68 ID:???
これって、データベースファイルは単一? 複数?
196NAME IS NULL:2013/05/27(月) 16:15:41.96 ID:???
基本的にはひとつだけどBLOB/CLOB毎にもファイルができる

ttp://www.h2database.com/html/features.html#database_file_layout
197NAME IS NULL 転載ダメ©2ch.net:2014/10/28(火) 19:51:37.45 ID:???
Version 1.4.182 Beta (2014-10-17)

まだ続いてたんやね、このデータベースの開発。
198NAME IS NULL:2014/12/21(日) 16:33:13.35 ID:???
>>197
いつまで続くのかな
199NAME IS NULL
Version 1.4.185 Beta (2015-01-16)

開発は結構活発なのね
最近はずっとベータ付きだけど