【Pure】HSQL database engine【Java】
1 :
名無しさん@お腹いっぱい。 :
03/08/16 02:57 ID:enpQ5UvU 100% pure Java なデータベース HSQL について語ってくれたまえ。
Javaアプリケーションのデータ格納用に、PostgreSQL や
MSDE をインストールするのはちょっと面倒くさい、
Jet(mdb)みたいにセットアップできるデータベースが欲しい、
そんなあなたに HSQL。
http://hsqldb.sourceforge.net/
少々大きなテーブルを作ろうとすると、すぐOutOfMemoryで落ちちゃう。 TEXTかCACHEDを使えってことなんだろうけど、この2つをどの観点で切り分けて使えば いいのかイマイチ判断がつかない。「俺はこうしてる」ってのがあったらおながいします。
>>1 嬉しいねー。漏れもこのDB好きなんだ。地味に盛り上げたいね、このスレ。
>>2 そうなのか。いつもCACHEDなので気にしてなかったんだが。
10万件程度ならCACHEDだと全然問題ナッシングだったがなー。
JVMのメモリ割り当てを変えても駄目か?
>>3 漏れもこのDB結構気に入ってる。
JVMのオプション指定すればOKなんだけど、起動中に数十万単位でレコード数を
変えようとしてて、その時にエラーがでちゃったわけで。
#そもそもMEMORYテーブルでそういう使い方をしちゃダメなんだろうけど
テーブルの構造にもよるけど、オプション指定しなくても30万レコードくらいは
MEMORYテーブルに載ってくれる。レコード数が変わらない(所謂マスタ)ところ
にはMEMORYでそれ以外はCASHEDかTEXTとは思ってるんだけど、ドキュメントにも
「CASHEDはパフォーマンス落ちるからレコード数が多くなければMEMORYを使え」
とあったんで。
とりあえず、問題のテーブルはCASHEDにしてパフォーマンス見てみるよ。
5 :
3 :03/08/18 00:19 ID:???
>>4 そもそもMEMORYテーブルってレコードを永続化できないから
普段は使ってないんだけど、それだけのデータを起動時に外部から
取り込んでいるってこと? あとshutdown時に外部に吐き出してるの?
この辺の運用の仕方、すごく興味あるなー。
レコードの消失防止と起動時の復帰さえ手軽に出来れば、
かなり無敵感強いDBだと思ってるのだけど。
6 :
4 :03/08/19 23:12 ID:???
>>5 shutdown時に吐き出すってより、起動時にトランザクションログ(*.script)から
テーブルを作り直すという動作をしてるみたい。だからサイズがでかくなると、
起動も遅くなる。
>>6 なるほどIn-Memoryだとそういう動きをするのか。
CACHEDのリカバリと同じなんだな。
でもちゃんとそうやって復帰してくれるなら安心ではあるな。
HSQLって JDBC でしか接続できないのでしょうか。 ODBC ドライバとかあれば、試してみたいと思ったのですが。。
>>8 ODBCは直接は無理。海外だと有償のODBC-JDBCブリッジがあるらしいけど。
JDBCのType-1(JDBC-ODBCブリッジ)のちょうど逆だね。
ODBCから使えると本当に最高だと思うけど、仕方ないねー。
10 :
名無しさん@お腹いっぱい。 :03/08/24 12:19 ID:A8PFVsM7
>>6 逆に.scriptから復帰しないって方法はあるんかいのー?
別のDBのフロントキャッシュとしてだけ使うみたいな
ことが出来れば面白いと思うんだが。
>>10 URLをjdbc:hsqldb:.
で接続すれば、メモリ内だけですべてが完結する。
起動時にキャッシュするってのはありかもね。
>>11 なるほど完全にin-memoryモードで使うわけだね。
そういえばalpha_Oがリリースされてるね。
久々に活発になってきたようで嬉しい。
>>12 久々というほど活発だった時期があったとは思えんが(w
1すれ消費できるようになるなら、
それなりに認知されてきたってことなんだろうね。
2chが基準かよってきはするが。
14 :
名無しさん@お腹いっぱい。 :03/09/18 13:21 ID:T3nvntjU
そりゃまそうだけどさ(w 1.7.1のあと割と早く1.7.2系に取り組んで ぽろぽろと出てたジャン。その頃は結構 ワクワクしてたんよ、漏れ(w よーし頑張ってスレ消費するぞ〜(違
とか言ってたら、今alpha_Pが公開されたYO! OのバグFix版らしい。
>>14 1.7.2の新機能を1つずつ紹介してよ。
スレ消費できるで。(w
大量データでテストしてたら、 index作っても件数増えると遅くなるのな。 意味ねー!
>>16 んじゃ、数日で1つずつくらいのペースで(w
CHECKPOINT DEFRAGの実装によって、シャットダウンしなくても
.dataファイルをデフラグできるようになった。
shutown compatとは、また値五蘊脱毛。 そーすをみなさいの決のに名rそうやけど名。
HSQL を Windows で使っている人いる?
>>21 使ってるよ。
普通使うなら、Windowsやろ。
Linuxでつかうのは特別なケース。
Pure Javaだからプラットフォーム関係無いで。
>>21 漏れは開発時はWindowsだな。
本番はLinuxのことが多い。
>>23 本番って??? HSQL をユーザー納品してるの?
いずれは PostgreSQL, MySQL と同じ土俵にあがるのかな。
いまはそこまでの評価・評判・ユーザー数に達してないよね。。残念だけど。
>>24 HSQLを本番で使うのはさすがに無理だと思うが、
Accessを本番で使うやつもいるくらいだから、
ありなのかもしれん。
26 :
23 :03/09/26 11:13 ID:???
>>24-25 納品してるよ。別に本番ったって全部が全部
そんな規模のでかい話ばかりじゃないよね。
HSQLDBで済む程度のシステムだってあるさ。
うちはシステムの内容に応じて、
Oracle,PostgreSQL,HSQLDBを使い分けてる。
Alpha_Pリリースsage
Alpha_Qだった。どうも最近活発というよりも新しい奴でバグが出まくってる感じだな。 1.7.2の新機能つづき。 参照整合性制約に ON {DELETE | UPDATE} {CASCADE | SET DEFAULT | SET NULL}] が使えるようになった。
詳しい方教えてくだされ。 α-QでCHECKPOINTを実行すると、 .backupファイルの生成に時間がかかって えらくパフォーマンスが低下してしまうぞよ。 何とかなりませんかね。
alpha_Sが出てるね
よーしパパ、HSQLをネイティブコンパイルしちゃうぞ〜。
>>30 Zこえるとどうなるの。
Betaになるのか(w
>>32 どうなるんだろうねー。alpha_AAとかなのかな(w
いい加減Betaになってくれと思う今日この頃だなー。
最近妙に不安定だし。Mくらいのときのほうが安心できたよ。
>>31 よーしパパ期待しちゃうぞ−(w
34 :
NAME IS NULL :03/10/29 19:36 ID:S75h6IRs
データベースをCD-ROMに収めて使うことはできないのかなぁ・・・ ドキュメソトのAdvanced Topics辺りを見て、 Shutdown Compactして、*.propertiesをtrueに変えて データベースをCD-Rに焼いたんだけど、アクセスすると、 java.sql.SQLException: The database is already in use by another process: org.hsqldb.NIOLockFile@d9aa8fd3[file =h:\test.lck, exists=false, locked=false, valid=false, fl =null]: java.io.FileNotFoundException: h:\test.lck (このメディアは書き込み禁止になっています。) ってな例外がでまつ。なんでだろー? レコードが40万件位あるのでCACHED TABLEを使っているけど、 関係あるかな?
35 :
34 :03/10/29 19:40 ID:S75h6IRs
× *.propertiesをtrueに変えて ○ *.propertiesのreadonlyをtrueに変えて
36 :
34 :03/10/29 22:49 ID:S75h6IRs
hsqldb_1_7_2_ALPHA_T.zip を使っていたのが原因でした。 安定版(1.7.1)では発生しません。CVS版でも修正済みたいです。 昨日時点でSourceForgeに報告されてました。 [ 831711 ] .lck file created for read-only database
あぼーん
38 :
hsql :03/11/01 18:19 ID:RCfKS0Jk
39 :
NAME IS NULL :03/11/01 22:40 ID:s0QICZbG
>>38 おそらくパッケージの問題。
"package"について正しく理解してる?
ソースの在処とコンパイルのコマンドラインと
実行時のコマンドラインを晒してミソ。
>>39 サンプルとはいえ、クラス名を小文字で始めるとは、
なっとらん。
サンプルではない、JDBC関連もそうなんだけどね。
41 :
hsql :03/11/02 21:55 ID:L48Xzafc
42 :
NAME IS NULL :03/11/02 21:58 ID:L48Xzafc
java -classpath hsqldb.jar testdb.java
43 :
NAME IS NULL :03/11/02 22:00 ID:L48Xzafc
接続先は、localhostです。 サンプルソースの変更が必要なら修正箇所も指摘して下さい。 その他、いいサンプルがあれば記述してもらえますか? お願いします
44 :
hsql :03/11/02 22:02 ID:L48Xzafc
接続先は、localhostです。 サンプルソースの変更が必要なら修正箇所も指摘して下さい。 その他、いいサンプルがあれば記述してもらえますか? お願いします
45 :
NAME IS NULL :03/11/02 22:47 ID:+w7YG6vg
>>42 コンパイルは javac でそ!
カレントディレクトリに testdbディレクトリを
つくってなー、その中にtestdb.javaを置いてな─、
javac -classpath hsqldb.jar testdb\testdb.java
実行は
javac -classpath hsqldb.jar;. testdb.testdb
だべ。(Windows用)
hsqldb.jarはカレントディレクトリにないとだめよ。
つーか、hsqldbの話題じゃないじゃん。
まずはJDKの使い方を勉強しる!
46 :
hsql :03/11/03 09:02 ID:kWafL7rS
ありがとうございました。(神様)
47 :
NAME IS NULL :03/11/03 16:11 ID:pc2PxWMG
hsqlで、コマンドベースでsql文流せますか?(スプリプト/シェル) 例) SQL Server (osqlと同じような機能)
48 :
NAME IS NULL :03/11/03 16:23 ID:T4ks4co3
>>47 DatabaseManagerのメニューから
File|OpenScript
では嫌か?
50 :
NAME IS NULL :03/11/04 22:38 ID:vVoew7Yh
51 :
NAME IS NULL :03/11/09 09:45 ID:+oHXMfSp
これって、なんか軽くてサイコーっすね。 ところで、ユーザはDBごとに作るしかないんでしょうか? すいません。英語苦手なもので(^^; いや、実際試せって話もあるんですが、どーも良く分からなくって。
ユーザ作れるよ。以下ドキュメントより CREATE USER username PASSWORD password [ADMIN] ; Creates a new user or new administrator in this database. Empty password can be made using "". Only an administrator do this. See also: CONNECT, GRANT, REVOKE そういえばWEB+DB PRESSのVol.17にHSQLDBの記事が出てたYO
>>50 使えるのでしょうか?ってどゆこと?動かなかったの?
-script でスクリプトファイルの指定ができるね。
54 :
NAME IS NULL :03/11/09 15:06 ID:+oHXMfSp
>52 なるほど、ありがとう。 実は、その雑誌に載ってるのを見て試してます。雑誌でもここで実運用で使われたという話が有るのを見て 心強いです。とりあえず、社内ツールの一つに使ってみようかと思ってます。
alter tableでPRIMARY KEYは追加できないんだな。 作り直しかよ。 とりあえず、*.scriptを直接いじったがな。
56 :
NAME IS NULL :03/11/27 07:49 ID:osNDTSLq
げげーそーだったんか。>55 使えるSQL確認しないといかんな。むーん。 しかし、これ扱いが楽でいいよね。 JDBC学習用の教材で使おうかとおもっとる。
57 :
NAME IS NULL :03/12/17 15:17 ID:09dW1E6o
このHSQLってJ2EEサーバJBossにも含まれているんだね
58 :
NAME IS NULL :03/12/23 23:19 ID:AY0jSFYa
色んな奴に含まれているねHSQLって 手軽だからいいね
59 :
NAME IS NULL :04/01/03 02:01 ID:hMo7LGmt
1.7.2RC1きた!
60 :
NAME IS NULL :04/01/03 04:18 ID:v2ltVVTF
キタ
61 :
:04/01/04 20:21 ID:XHsDwE5w
Kさん 好循環 Aさん 悪循環 (健康体) (喘息) 1.(天国・霊界が喘息であるかないかを決める) 2.K 喘息でない人 A 喘息の人は は体力がある 体力がなくなる 3.K A 行動力、五感(嗅覚)が鈍り感性が変化する。 4.K&A 天国・霊界は異常な感性の人間は本来人に迷惑をかけ るから外に出てはいけないと思っている。 5.K 変化なし A アトピーになる 6.K 正常な感性 A 外に出なくなりさらに異常な感性になる。 7.K 正常な人間 A 異常な人間(レッテル) 8.K&A 死 9.K&A 来世 10.K&A 天国・霊界は異常な人間は人に迷惑をかけるので行動 を抑制する必要があると思っている。 11.K&A 天国・霊界が喘息であるかないかを決める 12.K 喘息でない A 喘息である 13.K&A 1.に戻る これは事実。広めようぜ 解決法:寝て起きて、やな気分でも、続けるけること。 体力をつけると感覚が正常に戻り、 アトピーも快癒に向かう。 目安としてグランドを10週くらい。 あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり 鼻に変な違和感があったり、気分の悪い時は、 お腹の中の空気を出さなくてはならない。 口をしっかり閉じたまま、口の中に空間を作り、 口の中にできた空気を吐き出す。 これを100回から200回。
test
63 :
NAME IS NULL :04/01/30 14:05 ID:we9a2zhw
保守age
64 :
NAME IS NULL :04/02/20 13:18 ID:pJNNKEPm
hsqldb Beginners Guideによると、Server Engineで起動した場合、 >Shut down with Interrupt signal, or "shutdown" command with either tool. とのことですが、INTシグナルを送っても無反応です。 TERMシグナルやHUPシグナルを送ると停止するのですが、 このときはログに何も吐かれてないため、強制終了されてるような気がします。 どなたかシグナルを送って安全に停止させる方法をご存知ないですか?
65 :
NAME IS NULL :04/02/25 22:56 ID:creIg8CF
rc2
66 :
64 :04/03/06 22:54 ID:???
調べてみたら、どこにもaddShutdownHook()が無かった。 INTシグナルで止まるってのは、Beginners Guideの記述ミスか内容が古かったからかな。 ラッパーを作ってshutdownを発行するようにしますた。
67 :
NAME IS NULL :04/03/08 16:01 ID:MTWZ1Jgw
68 :
NAME IS NULL :04/03/14 17:42 ID:mn/LcM3T
1.7.2rc3が出たage
69 :
NAME IS NULL :04/04/06 21:46 ID:GXxkLk8T
ほしゅ
RC5でてるね
71 :
NAME IS NULL :04/04/26 23:38 ID:VQfXvfRm
IBMのeclipseプラグインって自分でコンパイルせなあかんの? バイナリどっかにないすか?
さっき寝ぼけながら初インストールしてみたんですけど・・・・ まさか数十分でテーブル作ってJDBC繋げる所までできるとは(かなり適当臭いが)。 こんな簡単だったんですね。mysqlいらんわ。 つうかJ2SDKに標準添付して欲しいくらいだ。 で、使用上のコツやら役立ちサイトやらを皆さんが↓に書いてくれるのを期待して _∧∧__ / ̄ ̄ ̄ ̄ |( ゚д゚)| < 寝る! |\⌒~\ \____ \ |⌒⌒|
73 :
HSQL :04/04/27 20:25 ID:fES63bVJ
>>72 > つうかJ2SDKに標準添付して欲しいくらいだ。
同感だなー
ODBCが使えたら文句なしなんだけどな
75 :
NAME IS NULL :04/05/14 23:36 ID:/nzbV1K7
1.7.2 RC5 で、Server -? が動かないのは私だけ? 1.7.1 ではヘルプメッセージが出たのに、RC5 ではそのまま起動してしまう。
76 :
NAME IS NULL :04/05/20 17:19 ID:fuRs8H4J
JAVA
77 :
NAME IS NULL :04/05/20 17:20 ID:fuRs8H4J
ジャバ ショックウェブはどこでダウンロードするの?
78 :
NAME IS NULL :04/05/31 14:45 ID:ImmYcUYC
Final Release Candidate: 1.7.2 Release Candidate 6 (RC6a) (17MAY2004) age.
rc6bが出たわけだが
SELECT FOR UPDATE はありませんかそうですか ま、そういうところを削って高速化してるんだろうからしょうがないか。
81 :
NAME IS NULL :04/06/06 15:02 ID:Er4Up2UC
別に高速化のために削ってるわけではなくて 実装が追いついてないだけだがな。 あのインデックスの実装はどうにかならんかしかし。
そんなに変な実装かい?
Vectorで実装されててだからB-treeみたいになってないんだよ。 だから後ろのほうのレコードを引いてくるのに時間がかかる。 100万件くらい放り込んでやると目立ってくる。DESCは互換性だけで 何の効果も出さないって書いてるしな。高速化のためにインデックスを使おうと するとイライラしてくるよ。気に入らないのはそれだけだなHSQLDBは。
rc6cが出たわけだが
85 :
NAME IS NULL :04/06/20 23:14 ID:VdeUrfdH
すみませんおききしたいことがあります QueryToolクラスを使ってブラウザからHSQLを操作してるんですけど 起動時にどうしてもplaceテーブルだのCustomerテーブルだの 意図しないテーブルが作成されてご丁寧にデータまで挿入されます。 これを回避する設定方法があるのでしょうか。
86 :
NAME IS NULL :04/06/21 00:02 ID:gHOZk9SV
85です。 すいません解決しました テストモードで起動してたのがいけなかったみたいですね・・
rc6dが出たわけだが
藻前様方、1.7.2がでましたよ。 DL数が0なんてはじめて見ますた。 ……みんな、ここ、見てるよな?
バッチ処理でカウンタ処理されるらしいのでしばらく0だったりする hsqlの場合は特に目立つけどな
91 :
NAME IS NULL :04/08/03 07:47 ID:X/RIdBny
お、でたか。 どれどれー、落として評価すべかぁ。
>>92 Derbyは2MBほどあるってことなので
HSQLDBとは棲み分けられるんじゃないかな
と思ってたりする
保守
95 :
NAME IS NULL :04/09/02 00:26 ID:E31ifSsd
1.7.2以降、どうもメモリを馬鹿食いするようになった気がする。
>>95 そうなの? ソースコードを負ってみないといかんかな。
>>96 サーバモードで立ち上げて、プロセスの太り方を眺めてるだけでも、違う気がする。
一度参照したデータをメモリに持ちっぱなしにするみたいなんだけど、どうすれば消えるか知りませんか?
>>99 いや、それじゃなくて
CACHEDテーブルから一度SELECTしたデータを、
シャットダウンするまでキャッシュとしてVMのメモリに持ってるみたいなんだよ。
コミットとかチェックポイントしても解放しないし・・・
ひょっとすると
>>95 に関係あるかもしれない
>>100 Session#evict で開放されるはずなんだけど、手元のプログラムだと、どんどんプロセスが太るんだよなあ。
昔と違ってOutOfMemoryException連発になってしまった…orz
102 :
NAME IS NULL :04/09/22 18:40:22 ID:5eEYyWk6
それまずいやん。外部結合使いたいのに。 誰かメールすれ。
HSQLDBでテーブルの有無を確認するにはどういう方法があるでしょうか?
104 :
103 :04/09/28 18:21:21 ID:???
DROP TABLE文には IF EXISTS オプションが指定できるのに、 CREATE文には使えないのですね。うーむ。
>>103 SELECT * FROM SYSTEM_TABLES
WHERE TABLE_NAME = '確認したいテーブル名'
106 :
103 :04/09/29 17:04:23 ID:???
>>105 おお、確認できました。
ありがとうございました。
最近使い始めたんだけど… LIMIT句の位置がきもいね。
108 :
NAME IS NULL :04/10/28 07:34:37 ID:7oFN8QGu
環境:WinXPPro、Ver7.12 TEXTテーブル使おうとしてるんだが、日本語の文字化けがひどい。 エンコード指定して読み書きできないだろうか? 夕べから探してるんだが、見つからぬ……。
109 :
108 :04/10/28 18:02:27 ID:???
自己解決しました。 マニュアルにちゃんと書いてるじゃんorz
110 :
NAME IS NULL :04/11/11 22:34:07 ID:tdqjraOS
メモリーモードでも.scriptにデータ書くの?
どこに書くというのさ。
メモリでは?
1.7.2.8が出たね。 changelistより抜粋(日付を間違っているみたいね) --------------------------------------------------- 2004.11.25 UPDATED RELEASE 1.7.2.8 Fixed bug LIMIT and TOP with UNION Fixed bug running Database Manager as applet Enhancement to allow a table with a label used in DELETE and UPDATE Enhancement to reduce memory use when restoring long log with too many connections Enhancement to persist values set by SET LOGSIZE Minor internal enhancements and refactoring
115 :
NAME IS NULL :04/11/17 02:39:27 ID:Gq9nAr9b
1.7.8.2
116 :
NAME IS NULL :04/11/17 02:39:54 ID:Gq9nAr9b
間違えた。リリースおめ。
117 :
NAME IS NULL :04/11/17 02:40:52 ID:Gq9nAr9b
cloudscapeの方はあんま報告ないねぇ。
118 :
NAME IS NULL :04/11/19 00:21:31 ID:zEwlut0u
最近使っている。手軽でよい。
cloudscapeのほう?
120 :
118 :04/11/20 00:39:13 ID:???
>>120 ということは、「流れ嫁」ということだな。
後期から授業で使ってるよ。 まぁちょいと癖はあるが、Accessばかり触らせるよりよほど良いし、重宝してる。 校内のツールもこれ使おうかと画策中。
explain for XXX の結果をDBEditから見れない模様。 excel的なGUIで結果取得できる系のツールでは見れないものか。
124 :
NAME IS NULL :04/11/27 21:21:57 ID:Rl3008nY
JDBCに接続できるGUIツールないすか? DBEdit以外
Derby期待しちょるでよ。
127 :
NAME IS NULL :04/11/28 13:36:23 ID:Cjr1+7wn
hsqldb 1.7.2.9が出てましたよ。
>>127 changelistに記載がないけど、ざっくり眺めると import文を"*"使わないようにしたりといった
スタイルの変更?みたいなのが目につくね。自作プログラムで使ってみると、若干メモリ使用量が
減ったような気がします。
hsqldbで、 ORACLE でいう SELECT SYSDATE FROM DUALみたいなコネクションのヘルスチェックに 使えるSQLはないものでしょうか。
どっかにインデックスにハッシュ表じゃなくてリストを使っているというカキコが あったけど、アーキテクチャ解説のPDFではハッシュ表使っている、と 書いてある気がした。頭よい人よ、本当のことを教えておくれ。
>>129 システム表からなんか取れるんではないでしょうか。だめかな?
>>128 import * でメモリ量増えるの?
コンパイル時に適当に解決してくれないのかな。
>>132 さすがにそんなことはないと思う。コンパイル時に解決してるだろうし。
別の理由があると思うよ。ざっくり眺めて目についたとしか書いてないし。
いわゆる今のコードの流行だよ どういったクラスを使っているかを一目でわからせるためのね
>>132 そんな、importの意味をわかってない質問するとはずかしいよ。
>>135 importの意味を述べよ。ググるの禁止。
>>136 ソース中で、fqnではなくクラス名だけでクラスを示せるようになる。
HSQLDB1.7.3キタ━━━━(゚∀゚)━━━━ッ!!
1.7.2は大幅に改良されたが、今回の目玉はなんだろう 英語読めないとまったくわからねぇ
よめないんだよ
>>141 それを読む気がないというんだって。
英日辞書は日本語で書いてるし、1万から20万ぐらいで翻訳ソフトだって売ってるし。
やる気があるなら何とでもなる。
翻訳かけてもまともな日本語にならんよ、技術系は それに金がないやつはどうすれば
>>143 excite
あとは中学生レベルの英語がわかれば読める。
金がないなら辞書を引けばいいのに....
147 :
146 :04/12/13 23:46:23 ID:???
すまんかった、たった一つ前で既出だったか。
HSQLDBってJDBC1だけか・・・
それじゃ事実上使えないに等しいといってるようなもんじゃね?
SQL直書きなら大丈夫だが moveToInsertRowとかJDBC2の機能ははじかれるね 小規模ならいいとはいえ多少弱いな
hibernateする分にはOracleもHSQLDBも変わりない。
Oracle の rownum や PostgreSQL の limit に相応するの無いっすかね? hibernate 使わずに Spring の JDBC Template でやっちまおうと思ってるんですが。
155 :
NAME IS NULL :05/01/30 01:04:05 ID:htosOV6a
質問なのですが、 日付の引き算はどうしたらできるのでしょうか。考えても思いつかず。お願いします。
それは「HSQLDBではどうやるんですか?」という質問だと理解していいんだな?
157 :
NAME IS NULL :05/01/30 12:54:15 ID:D3mj7bnG
>>156 そうです。わかりづらい書き込みですみません。
>>157 ならば、 153が示したHTMLの"Built-in Functions and Stored Procedures"辺りに
答えがあるだろう?ちゃんと読んだか?
>>157 じゃあDATEDIFF( string, date1, date2)だな。
date1, date2に比較したい日付列、stringは比較する単位を指定する。
'ms'='millisecond', 'ss'='second','mi'='minute',
'hh'='hour', 'dd'='day', 'mm'='month', 'yy' = 'year'が指定できるらしい。
TESTDATE( pk INTEGER, start DATE, end DATE)
というテーブルがあって、pkが1、startが'2005-01-20'、endが'2005-01-29'だとしたら、
SELECT DATEDIFF( 'dd', end, start) AS diff from TESTDATE where pk = 1で
diffには-9が入る。
保守。
IDENTITYが最大値に到達するとどうなるんでしょうか? 意味からいってサイクリックに採番するわけにもいかないし エラー発生とかでしょうか。
text table で、update 繰り返すと .data ファイルに隙間(空白)がどんどん出来ていくのは仕様ですか?
SHUTDOWN COMPACT はしたかい?
Memory-Only(URLがjdbc:hsqldb:mem:xxx)でSEQUENCE作ると、NEXT VALUE FOR が毎回0を返すんだが・・・ In-Process(URLがjdbc:hsqldb:file:xxx) でデータベース開いた場合はうまくいく。なぜ? hsqldb-1.7.2.7と1.7.3.3で確認した。うちだけ?何か間違えた?
165 :
164 :2005/05/12(木) 09:37:41 ID:???
自己解決。SELECT NEXT VALUE FOR XXX FROM の返す結果が0件だったので NEXT VALUE FORが評価されてなかった。対象の表が自作のテーブルだったんだが、 ここにレコードがなかった。 ドキュメントには「SYSTEM_SEQUENCES 使え」って書いてあるね・・・お騒がせしました。
166 :
NAME IS NULL :2005/06/14(火) 23:33:33 ID:Yb6F6iob
google で hsql を検索すると、このスレが先頭に来る。 いやそんなことはどうでもいい。 「もしかして: mysql」ってなんだ(゚Д゚)ゴルァ
hsqldb で検索するといいじゃないかな
168 :
HYPER DB! :2005/06/28(火) 19:46:34 ID:FyvKDDrO
皆さん、HSQLのバックアップ処理はどうしていますか? MySQLのADMINみたいなプログラムはあるんでしょうか? MySQLADMINだと時間指定すれば勝手にバックアップ取ってくれるし、 初心者でも簡単に使えるデーターべすですね。 HSQLの評価は凄く高いですけど、管理が面倒だとちょと・・・ みなさんどうされていますか?
>>168 使ってみた?
使ってみたのならそういう感想はでないとおもうんだが
170 :
NAME IS NULL :2005/07/07(木) 01:15:04 ID:a1/Yzld+
1.8.0age
171 :
168 :2005/07/11(月) 13:55:56 ID:AujpvUAs
>>169 はい、ダウンロードして使ってみました。最新版の1.8です。
やはり、MySQLの管理プログラムに値するものは付属していませんね。
AWT版とSWING版のSQL文入力コンソールがあるだけで、
「午前4:00に、テーブルAのデーターを全部バックアップせよ」なんて
できないです。すこしがっかりです。
MySQLだって単体には管理ツールついてこんし 組み込みDBという扱いならどういうものかわかるとおもわれ
HSQLDBのバックアップなんて、ディレクトリごとコピっとけば終わりじゃないの?
ディレクトリというかさらに細かいところを見ていけばもっとシンプルだけどな どっちにしろあれほどシンプルな格納の仕方はないな ログそのものがデータベース
175 :
168 :2005/07/14(木) 14:39:21 ID:7Um6zVOb
>>173-174 ちょっと興味がありますので、詳しく教えてくださいませんでしょうか。
さらに細かいところとはつまりどういうことでしょうか。
MYSQLのバックアップだと、SQL文がずらーと書かれたファイル1つで
バックアップとリストアができます。
HSQLをJBOSSと使いたいのですが、バックアップが簡単にできないと
困っています。どうか、どなたかご指導ください。
宜しくお願い致します。
HSQLDBはJBOSS自身もつかってたような 本当にHSQLDB使ってみたの? ならバックアップがどうのこうのって話は出てこないと思うんだが
もうひとつ追加 JBOSSで使うのはいいけどサーブレットで使う場合はアプリ側で排他しないとダメだぞ いわゆるクライアントサーバーのDBじゃないからね
178 :
168 :2005/07/14(木) 20:08:11 ID:7Um6zVOb
>>177 サーバーとして使えます。
常時作動させて、それでバックアップを午前の4時に自動的に取るバッチ処理
をしたいのですが、できません。
やっぱり、HSQLを本番稼動させている方は少ないみたいですね。
あきらめようかな。ここのどなたも使ってないってことは実績が無いと
みていいともいます。
サーバーとして使えるって? 排他制御がないのにどうやって? あくまでも接続方法としてTCPIPでも可能ってだけだよ
実績は豊富にある DBの名前自体大きく変わったからね まぁ組み込みDBってのは表に出てくることなく裏で動いてるものだよ HSQLDBはサブクエリーも使えるしスタンドアロンDBとしては優秀 Access(JET)よりちょっと上ってところだな
>179 JBOSSを(J2EE)サーバとして使ってるって事でしょ。 >178 cronなり何なりでファイルをコピーするだけでいいと思うのだが、 「できません」ってどういう事? できない状況が考えられないので何度も「本当に使ってみたの?」と 言われているんだと思う。 商用でも使われていると思うよ。うちはスタンドアロンのGUIアプリに 組み込んで使った。VB+Accessみたいに簡単にできちゃうのがgood
だからsunはjdkにバンドルしろってばさ。
>>175 なんか何が疑問なのかさっぱりわからんのだが....
HSQLDBを起動して使い始めると、三つのファイルができる。たとえばDB名がTestDBなら、
TestDB.script、TestDB.log, TestDB.propertiesの三つだ。基本的には、起動コマンドを打った
ディレクトリにできる。
このうち「.script」がSQLログ。こいつがあれば復旧可能だ。
完全バックアップするにしても、三つのファイルがあるディレクトリを丸ごとコピーしとけば終わり
だろ?という話なんだけど?
うちもスタンドアロンアプリで組み込んで使ったよ これは便利だ
うちも同じことやりますた。(GUIアプリ) in-process で使えるRDBだからすごく楽ですよね。 画面の表示内容やら、いろいろなものを保存してます。 独自ファイルで実装してたらきっと泣いてたと思う。 バックアップもファイルコピーして終了だし。素晴らすぃ。
ダーティリードありとドキュメントに書いてあるような気がするんだけど、皆様は排他ってどうしてます? やっぱアプリ側で楽観的ロック?
排他機能がすっぽりおちてる以上アプリ側でやるしかないだろ 組み込みってそういうもんだと思ってるから別になんともおもわんな 自前でストレージエンジン作るのに比べたら・・・
188 :
NAME IS NULL :2005/07/18(月) 01:26:19 ID:cvkXJZ10
Apache Licence2.0というのは掻い摘んで言うとどんなライセンスなのでしょうか?
このソフト使ってるよーとか、その組み込んだソフト自体のバグの責任はとらねーよとか そういう明示が必要
ソース公開の義務はないのですね。 あいがとう。
なんだなんだ、しばらく見ないうちに、自分でやってみたり調べもしない香具師が増えたのか?
192 :
& ◆tNtHsziLno :2005/07/20(水) 14:27:42 ID:HF4pEmJc
みなさん、ご指導どうもありがとうございます。 バックアップはその三つをCRONすればいいだけなのですか。 恥ずかしながら知りませんでした。 排他処理とは、つまりトランザクション処理のことですね。 ファントムだとか、そりゃ色々あってややこしいですが、 アップサーバーに処理させます。 やっぱり、HSQLのファンは多いですね。嬉しいです。 またお話しさせてください。最新版のレポートでもさせて頂きます。
>>192 お先真っ暗なJavaだけどがんばってね。
>>192 排他要るならderbyって手も。速度は知らん。jarサイズはHSQLDBよりはデカい。
組み込み用途のDBなんでマルチユーザーとは使い方ちがうからな 複数のスレッドからのアクセスで排他制御が必要なら最大セッション数1の コネクションプールみたいにしてやればいいだけだが、それならそもそもDBの選択を誤ってるとしか思えん
SQLiteとこっちどっち使おうか迷う。 JNIらなくていい分こっちのが楽なんだろうけど。
1.8落としてみたんだけど 標準でdataディレクトリが無いのは何故? あんなプチ嫌がらせを受けるとは思いもしなかったw
>>199 HSQLDBがどういうものかわかってないのか
>>200 demoディレクトリがdataディレクトリを参照してるんですがそれが何か?
dataなんて自動生成されるだろ?
同じ実行ファイルを連続して起動すると(同時実行ではない) The database is already in use by another process このようなSQLExceptionが発生するのですが、何が原因なのでしょうか? memモードだとこの現象は起きず fileモードだと発生するようです。
既にDBが使用されているからです
(同時実行ではない) って書いてるじゃん。 rs, stmt, connと全てcloseしても起きてるから何がなんだか。
コネクションプーリングしていたとか
OSのファイルロックが外れるのが遅いとかの理由かな?
>>203 1.7.3からshutdownコマンド発行しないと.rockファイルが消えなくて、
同時実行とみなされちゃうように仕様が変わったみたいだけど、
それと関係あるかな?
shutdownコマンド発行するか、手動で.rockファイルを消せば、
同時起動だって怒られない。
するってーとshutdown=falseで接続して 最後にshutdownせずにアプリを落とすと、次回から .lockファイルを消してからじゃないと接続できないってか? なんか恐ろしく意味の無い仕様な気がする。 最近のバージョンはlockファイルの開放妙に遅いし。
lockする以外の恩恵をshutdownで開放してるんだろうか? closeの前にdisposeが必要な仕様ってのも理解できない ってかそんな仕様お目にかかったこと無い
組み込みDBなんだからアプリが起動中はつかみっぱなしで問題ないということで あまりテストはされてない予感 実際あまり問題はないけどな
shutdown=trueでもアプリが予期せず落ちると、 たまにlockファイルを残す場合があるな。 ちょっと困る。 ドライバの実装による問題なのかもしれんが、なんとかしてもらいたいところ。
プロセスが死んでもつかみっぱなしってWindowsならよくあるな
HSQLDBを勉強したいのですが、日本語マニュアルとか日本語の 解説本とかがあるのでしょうか。amazonで調べてみましたが、 HSQLDBがテーマの本はありませんでした。 いろんなWebページを読みふけるのもいいのですが、それだと 知識が断片的になりそうでこわいです。
>>215 一番いいのはHSQLDBのドキュメント。
日本語リソースは…期待しない方がいい。
一度WEB+DB PRESSかなんかで見たことがあるだけ。
217 :
NAME IS NULL :2005/10/08(土) 20:10:27 ID:z5mF1uXf
ApacheのDerbyスレが無いけど、建てていいんかしらん?
220 :
NAME IS NULL :2005/10/09(日) 04:31:24 ID:FOVesS3t
OOo2.0にバンドルされるんですね
222 :
NAME IS NULL :2005/11/16(水) 16:53:31 ID:x2y+9/gP
HSQLDBで、resultsetの行数を知る方法はどうやったらいいの? resultset.last()も、count()関数もなんか例外でるんだけど… 1行ずつ読んで全部配列に読み込むのが一番早い?
223 :
NAME IS NULL :2005/11/16(水) 17:21:48 ID:x2y+9/gP
224 :
NAME IS NULL :2005/12/02(金) 01:54:44 ID:fhPLY7m/
スタンドアロンモードでは、マルチスレッドでアクセス は不可なの?(ていうか不可でした) ver1.7.2使っててるんだけど... ver1.8.0だと方法はあるのかな? それともサーバモードにしないとだめなのか... どなたか教えてください!
どのモードだろうが排他制御がない時点で2層式は無理
工工エエェェ(´д`)ェェエエ工工 うちは2槽式使ってるよ。
227 :
NAME IS NULL :2005/12/02(金) 16:38:34 ID:fhPLY7m/
>>224 自己レスです。
すいません。使ってたのはver1.7.1でした。
ver1.7.2に変更したら
スタンドアロンモードでマルチスレッドでアクセス
出来ました。
SHUTDOWN がめんどくさいですけど・・
マルチスレッドは対応しても排他制御が出来ないんじゃ あまり意味はないぞ
229 :
NAME IS NULL :2005/12/02(金) 17:58:42 ID:fhPLY7m/
コネクションプールつくってプール数1にするしかないね
テーブル単位とはいえロックがやっと入ったか 大分いい感じだが、軽量という部分をどれだけ維持できるか あとはHSQLDBの問題だったJDBCドライバレベルの話だな
ODBCも使えるんだ。それはちょっと便利。
234 :
NAME IS NULL :2006/01/19(木) 08:35:47 ID:dWvjuqVT
起動早い?
235 :
NAME IS NULL :2006/01/21(土) 20:52:02 ID:0BZLO1T6
236 :
235 :2006/01/21(土) 20:53:18 ID:???
ごめんなさい。ageちゃった・・・。orz
H2使ってみたが、UIをFirefox用にxulな感じで吐いてくれて素敵。 derbyよりはずっと軽い印象。 あと、構文とかDB2に似てる。
DerbyよりDB2に似てるって言われちゃったらIBMも形無しだなw
Derby(Cloudscape)はIBMがInfomixから得たものだし、DB2と違ってても不思議じゃない。 (…と、DB2と違うとこが不満だけど、こう思ってあきらめてるオレ)
240 :
NAME IS NULL :2006/04/12(水) 23:17:47 ID:n9dLYr/Z
HSQLDB for .NET みたいのって、どっか無いのかよ……
h2のODBC接続って、別プロセスでサーバとして起動してそこに接続ってことでしょ。 そんなことするくらいなら、mysqlとかpostgresとか使うと思われ。
>>240 無償じゃないけどあるよ
Accessっていうんだ。
244 :
NAME IS NULL :2006/04/22(土) 18:10:51 ID:7EOj+0as
CSVのデータをテーブルに流し込んでやる事は出来るんじゃろうか。 コードを書かずに…どなたか教えてください。
246 :
244 :2006/04/22(土) 21:31:32 ID:bdflM9nn
247 :
NAME IS NULL :2006/04/29(土) 13:05:09 ID:GTRbXOe3
教えてください。 HSQLを立ち上げると java.sql.SQLException: socket creation error at org.hsqldb.jdbc.jdbcUtil.sqlException(Unknown Source) at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source) at org.hsqldb.jdbcDriver.getConnection(Unknown Source) at org.hsqldb.jdbcDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:171) at org.hsqldb.util.ConnectionDialog.createConnection(Unknown Source) at org.hsqldb.util.DatabaseManager.main(Unknown Source) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at org.hsqldb.util.DatabaseManager.execute(Unknown Source) at org.hsqldb.util.DatabaseManager.actionPerformed(Unknown Source) at java.awt.Button.processActionEvent(Button.java:388) at java.awt.Button.processEvent(Button.java:356) at java.awt.Component.dispatchEventImpl(Component.java:3955) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh read.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) となります。 どうすれば使えるようになるのか、知っている方教えてください。 よろしくお願いします。
釣り・・・か?
いやーどうだろう・・・・。
h2database の新しいのが出てます。 俺の報告したbugが直っていた。嬉しい。
>>250 おれが報告した問題もちゃんと治ってたよ! 嬉しい。
252 :
NAME IS NULL :2006/06/05(月) 14:56:40 ID:0QpAhujy
ねぇねぇ、HSQLDBはじめて使ったんだけど SELECT * FROM "テーブル名" とか、 UPDATE "テーブル名" SET "name"='HogeTaro' WHERE "id"=3 といったように、テーブル名や列名をダブルクォートで囲まないとエラーになるのは HSQL固有の癖なの? こんなDBはじめて。
>>253 実際には使ってないけど。
asciiでもダブルクォートがないとエラーになる。
NetBeansのSQLコマンド窓から使ってるからかな。
ちがうらしい。jdbcでいじくっても必要だ。 めんどくさ!
>>252 いままで全然そういうふうになったことないんだけど....
テーブル名をASCIIで大文字で書いたときは""はいらないみたい。 HOGEなら不要、hogeやHogeは必要。 HSQLDB 1.8.0.4
2バイト文字なら、くくっておくのがいいだろ。 これは大抵のDBに言える。 >テーブル名をASCIIで大文字で書いたときは""はいらないみたい。 これはHSQLDBの変な仕様だよね? テーブル名がCase Sensitiveってことか?
いや、明確に小文字だと認識させたい場合にクオートでくくらないといけないのは、 商用のDB2でも同じ。 くくらない場合、自動的に全部大文字と解釈されるよ。だから常にクオートを 使わなければ問題は出ないはず。
SQLは基本的に大文字小文字の区別をしない。特に指定しなければ大文字になる。 のが規格なんだけど、実際のDBでそうでないものもある。だから誤解を生むんだね。
262 :
252 :2006/06/06(火) 17:46:02 ID:???
なるほど、そうでしたか。 ありがとうござます。 今までMySQLとPostgreSQLしか使ったことがないもので。
263 :
NAME IS NULL :2006/07/04(火) 10:14:37 ID:AwFHTmFN
Oracleで言うところのrowidって、HSQLDBには無いですか? 全てのテーブルの各レコードに自動で割り当てられ、テーブルをまたいでも 一意性が保証されるIDです。
HSQLDBってデータを全部メモリ上にもってるの? データファイルを見ると、SQL文が延々ならんでいるから、起動のときこれを ぜんぶ読みこむんだろうけど。 そんでシャットダウンするときは、ぜんぶセーブするってこと?
create cached table(...);
swing + hsql で秘密のデータベースを作ろうとしてたけど、 データベースにパスワード付けても.scriptファイル開けば全部見られちゃう。 バイナリ保存とか暗号化して保存はできないの?
267 :
266 :2006/09/24(日) 11:35:17 ID:???
本当に申し訳ありませんでした。 自己解決というか、自分が間違っていました。 スタンドアロンで使ってたので、create table ....... すればcashedテーブルになると思い込んでいました。 これではデフォルトのメモリテーブルになってしまい、.scriptファイルに全部残ってしまう(メモリなのに?)。 create cashed table ..... にしないといけないのですね! でもsaのパスワードは.scriptに明記されてるけど、まぁいいや。
誰か h2databaseのスレ立ててよage
269 :
NAME IS NULL :2006/10/19(木) 11:58:00 ID:Zh8CorAE
>168あたりからバックアップに関する書き込みがあったけど、 ・「CREATE MEMORY TABLE」なテーブルだけなら、.scriptsをコピーすればOK ・「CREATE CACHED TABLE」なテーブルがある場合、.scriptsと.data、.propertiesの三つをコピー でおk? あと、shutdownされないとデータは(MEMORYでもCACHEDでも)保存されないのかな? だとすると起動しなおしになるのでちと面倒だなぁ。……まぁ、いちいちCSVとかに落とすよりははるかに楽だけど。
270 :
266 :2006/10/19(木) 21:14:18 ID:???
オートコミットだっけか? .propertiesになんか設定あって、 デフォルトでは、変更されたデータは瞬時に保存されるんじゃなかったっけ? ドキュメントにその辺について詳しく書かれていたはずよ。 全部あいまいなレスでスマソ
checkpointは?
一通りトランザクション済んだら、shutdown でよくね?
273 :
269 :2006/10/23(月) 22:47:54 ID:kctqRJ1S
>>270 >>272 遅resスマソ
shutdownしてもう一度コネクション張りなおすかなぁ……。
別アプリにして純粋にファイル操作としてコピーするっつー手もあるけど、どーせGUI付けろって言ってくるだろうしな(苦笑
ちなみにブツはEclipse RCP。3.1になってからかなり便利になったと思ふ。
274 :
NAME IS NULL :2006/11/11(土) 11:27:58 ID:ojaxIhdh
んと、BIT型のデータ、getBoolean出来るのにsetBooleanできない。なぜ? hsqldb.jarからUPDATEのSQL作って実行して、JDBCからgetBooleanするとちゃんと取得できるのだが、同じ場所からsetBooleanして実行すると反映されない。 同じ実行で弄った他のカラムの変更は反映されてるから、shutdownしてないとかゆーオチでも無いし……なんで?
INTEGRT型のIDフィールドを連番にしたいけど、皆さんはどうやってますか? 今はレコード追加する度に、IDフィールドの最大値+1でやってます。 もっとスマートな方法はないでしょうか……
>>275 自動連番ということ?
それなら列定義にIDENTITYを加えれば良いと思うよ。
>>276 ありがとうございました。
勉強不足でした。もっとSQLの勉強に励みます。
テーブル作るとき create table person ( id integer identity primary key, name varchar ) レコード追加するとき insert into person values (null, 'taro') これでidがゼロから始まって自動連番になっていく。
JDK6にしたら接続できなくなったよ・・・
HSQLDB Database Manager Swing のメニューバーのToolsの中に、dumpとrestoreがあるけど、 便利そうなんだけど、これ使えた人いる?どうやって使うの? あと自前のプログラムからSQLコマンドでdumpとかrestoreできるの? ドキュメント見ても載ってない。 上のほうでバックアップのことが書かれていたけど、付属のツールでやるほうが安心かと。
何を言ってるのやら
282 :
デフォルトの名無しさん :2007/01/05(金) 07:54:55 ID:MVwtvARW
これってさ、JAVAアプリとかに組み込み可能なRDBなんだよね? JAVAに組み込み可能なピュアjavaのOODBないの?
ほしゅ
HSQLがJavaでなければ、、、、、と思う。
H2がある昨今、HSQLのメリットって何だろう? 特に無条件新規の場合
テキストエディタで中身が確認できる
288 :
NAME IS NULL :2009/02/19(木) 20:02:18 ID:9Ddd0lZw
>>288 ∧,,∧ ∧,,∧
∧,,(´-ω-)(-ω-`)∧,,∧
( ´-ω)旦o) (o旦o(ω-` )
(_ o[( ´-) (-` )]o _)
└'ー-(_ )][( _)ー'┘
'ー'^ー' 'ー'^ー'
289 :
NAME IS NULL :2009/02/19(木) 20:21:39 ID:o/Cz7YlW
290 :
NAME IS NULL :2009/02/22(日) 23:21:47 ID:3WTAuxg1
>>288 `∧_∧
(´・ω・)
( つ旦O
と_)_)
ちょっと休憩。
HyperSQL 2.1 Released The latest version 2.1 GA introduces enhancements in all areas. It supports the widest range of SQL Standard features seen in any open source database engine. We have reached SQL Standard conformance to almost full SQL-1992 Advanced Level and SQL:2008 core language features plus an extensive list of SQL:2008 optional features and many extensions.
Many enhancements have also been made to Java and SQL stored procedure and function support, and to other areas.
294 :
NAME IS NULL :2011/05/08(日) 00:46:04.61 ID:H0nvAfRp
やっぱストアドプロシージャ書けるのは良いな。
もう語らないのか
296 :
NAME IS NULL :2013/11/04(月) 12:19:30.31 ID:xUgHkyHF
2/14にVer.2.3.2リリースしてた