【PureJava】 Derby 1 【OpenSource】
1 :
NAME IS NULL :
2005/10/09(日) 04:22:21 ID:FOVesS3t このスレはApacheSoftwareFoundation(以下ASFと略す)傘下で開発が進められているPureJavaRDBのDerbyについて語るスレです。 Derbyって何? Javaで書かれたRDBMSです。 Derbyで何ができるの? Javaの実行環境があれば、開発したアプリケーションにRDBを組み込むことができます。 「アプリケーションの出力結果をテキストに吐き出して、必要があればそこから検索して...」 などの作業を、開発を簡単に、実行時に素早く行うことができます。 でも、DBって設定とかいろいろ難しいんでしょ? Derbyは簡単です。「簡単に使える(Easy to Use)」がDerby開発目的の一つです。 Derbyは誰が開発しているの? 現在はASF傘下でOpenSourceプロジェクトとして開発が進められていますが、 それ以前はIBMがCloudScapeという名称で開発を進めていました。 詳細は2以降のリンク先を参照してください。
2 :
NAME IS NULL :2005/10/09(日) 04:23:03 ID:FOVesS3t
3 :
NAME IS NULL :2005/10/09(日) 04:24:04 ID:FOVesS3t
4 :
NAME IS NULL :2005/10/09(日) 04:24:49 ID:FOVesS3t
Derbyに含まれているdemoの実行方法 (Windowsを対象とします。UNIXの場合は適宜読みかえてください。db-derby-10.x.x-bin\demo\readme.html より抜粋) 1.コマンドラインを起動します。 2.ダウンロードしたdb-derby-10.x.x-bin.zipを解凍してできたディレクトリをDERBY_INSTALLとして環境変数に設定します。 例:解凍してできたフォルダが「C\:db-derby-10.x.x-bin」の場合、コマンドラインに 「set DERBY_INSTALL=C\:db-derby-10.x.x-bin」として実行します。 3.コマンドラインに「cd %DERBY_INSTALL%\demo\simple」と入力し、demo用アプリケーションの存在するフォルダへ移動します。 4.コマンドラインに「set CLASSPATH=.;%DERBY_INSTALL%\lib\derby.jar」と入力し、クラスパスを設定します。 5.コマンドラインに「java org.apache.derby.tools.sysinfo -cp embedded SimpleApp.class」と入力し実行します。 上記2〜4の設定が正しく行われていれば FOUND IN classpath: Derby embedded engine library (derby.jar) user-specified class (SimpleApp) SUCCESS: All Derby-Related classes for embedded environment found in classpath. と出力されます。 6.5で正しく環境設定が行われていることを確認したら、コマンドラインに「java SimpleApp」と入力し実行します。 プログラムが稼働していることを確認してください。
>>1 おつかれ
derby(とcloudscape)って使っている人まだ少ないのかねー。
日本語の情報が全然ないもんね。
こんな良いDBがタダで使えるなんで、他に無いと思うんだけどね。
PostgreSQLとかもいいんだけど、derbyの設定いらず、管理いらずの
よさって他になかなか無いと思う。
なにげにMacでも使えるし。
今月と来月のJavaWorld(2005/11,12)でDelbyの解説をやってるね。 11月号はインストールと簡単な使い方のみでつまんなかったけど。
8 :
NAME IS NULL :2005/10/19(水) 18:52:20 ID:1jaemagd
HSQLDBとどっちが速い?特に起動。
起動やちょっと使う程度だと、HSQLDBの方が速いかな。 HSQLDBはデータ量が増えると遅くなるから、derbyにはそのあたりの耐久性を期待。
10 :
NAME IS NULL :2005/10/22(土) 19:13:20 ID:GCiqLehV
そうそう。HSQLDBは、更新を行うテーブルの場合、データのコンパクションを行わないと とてもとても重くなる。 derbyに期待。
HSQLDBって何件くらいで重くなるの? Derbyで1万件位あるデータの検索は結構速かったよ
これ使い始めたんだけど、良いね。なんかお手軽な割にしっかり動いてるし。
HSQLと比べてどうかということだね。 Apacheライセンスってことでライセンスを統一しやすいこっちのが好きだけど
たぶんHSQLDBのほうが速いだろうと予測するけども、Derbyは ちゃんと排他処理とかやってそうな感じだな。
ストアドプロシージャやPreparedStatementが使えるなら 一般用途では性能なんてほとんど「気のせい」の世界じゃない?
HSQLとの対比がわかる表があったら嬉しい。 HSQLはファイルモードで複数ファイル作るから、こっちが1ファイルならちょっと考えちゃう。
・・・やばい、Derby遅い。 スキーマ create table test(id integer not null, name varchar(20)) forName HSQL org.hsqldb.jdbcDriver DERBY org.apache.derby.jdbc.EmbeddedDriver connectionString HSQL jdbc:hsqldb:file:db/hsql/hsqldata DERBY jdbc:derby:db/derby/derbydata;create=true 1000件(左transaction, 右autoCommit) insert into test values(" + i + ",'string" + i + "') HSQL 0.172秒, 0.172秒 DERBY 6.203秒, 7.172秒 prepareStatement and transaction(左1,000件, 右100,000件) insert into test values(?,?) HSQL 0.094秒, 1.235秒 DERBY 0.906秒, 14.547秒 マシンスペック Pentium4 1GHz, メインメモリ768MB
キャッシュなしで36倍、キャッシュありで10倍遅い。 何か起動も2秒くらいかかってるし、チューンできる場所があるのかな?
追加や更新をたくさん実行した直後のconnectが特に遅いんだよね。 その後のconnectは速いのに…なんなんだろ?
ゲームに組み込むのにDerbyはどうなんだろ・・・ HSQLなら速度もネイティブと戦える速度みたいだけど Derbyの遅さはちょっと気になるところ。 BLOGの速さを調査してみるか。
BLOGじゃねーBLOBだったw
なんかログのクリアとかしてる気がするんだよなぁ<再接続時 サーバモードで動かしたときのパフォーマンスも調べてみないとダメかなぁ
ログは正直イラネです。接続文字列のときに欲しけりゃ指定みたいにして、デフォはなくして欲しい。
27 :
25 :2005/12/14(水) 12:06:41 ID:???
気になって調べてみたんだが、ちゃんとシャットダウンしないと 次回起動時にリカバリー処理が走るらしい。 DriverManager.getConnection("jdbc:derby:DBNAME;shutdown=true"); で、このgetConnectionは必ずSQLExceptionを吐く。 ijとかのツールは自動的にshutdownしてくれるから気が付かなかったっぽいけど、 まぁちゃんとマニュアルくらい嫁という話だったよ orzスマン
Sunが次期Sun Studioにバンドルするとかなんとか。
SunのJ2EE SDKにはPointBaseの前Cloudscapeがついてたしな
30 :
NAME IS NULL :2006/02/03(金) 13:58:02 ID:DqM+Y4IV
>>16 PreparedStatementよりもストアドプロシージャのほうが
速いと思ってたけど、さほぼ変わりない?
というか最近じゃHibernateのようなO-Rマッピングツールばかりに頼って
ストアドプロシージャのこと考えないケースが多いのかな?
というか、このDerbyがHibernateなどのO-Rマッピングツールに
対応しているのか気になる。もし対応していたら使ってみようかなという気分になる。
Apache系だから
Jakarta Torqueにしか対応していないだったりして。
それより、PostgreSQL並みの機能を搭載しているのかも気になる。
性能は、やっぱりPureJavaでないDBよりも遅くなるのかな。
31 :
NAME IS NULL :2006/02/03(金) 14:00:28 ID:DqM+Y4IV
>>27 DataSourceは使ってないんですか?
32 :
NAME IS NULL :2006/02/03(金) 14:05:25 ID:DqM+Y4IV
>>27 コネクションを切るときに
Conneciton con = null;
try{
con = DriverManager.getConnection("〜〜〜〜〜");
//(ry
} catch ( /* (ry */ ) {
//(ry
} finally {
try{
if(con != null || con.isClosed()){
con.close();
}
} catch( /* (ry*/ ){
//(ry
}
}
でclose()しておかないとエラーになるという話とは違う?
このcatchが多いclose()コードを見ていると、いい加減に、APache Jakarta Commons DBUtils使うべきかな・・・
それともHibernate使うべきかな・・・・
O/Rマッピングのツール類って、JDBCドライバさえあればどんなDBでも マッピングできるでしょ。ApacheだからTorqueにしか対応してないなんて ことはないでそ。
34 :
27 :2006/02/04(土) 04:23:49 ID:???
>>32 > でclose()しておかないとエラーになるという話とは違う?
まったく別。shutdownしないっていうことは、
サーバ型DBのプロセスをいきなり殺すくらいに相当するみたいよ。
O/Rマッピングは標準SQLが基本で、方言はそれようのクラスを指定するんじゃねーの?
ファイルモードで動かすとやたら重く感じるけど Postgresより速いといわれてるってことはサーバモードは優秀なんだろうな
>>37 なんでそうなるんだよ
サーバモードはファイルモードの上に一層かぶさってるだけだから
Postgresがむちゃくちゃ遅くない限りそれはないだろ
>>27 をやってなくて次のgetConnectionに時間がかかる、という話ならわかるが。
Derbyっていう名前がちょっとモニョモニョなんだよなあ CLOUDSCAPEの方が格好よかった
40 :
NAME IS NULL :2006/02/14(火) 17:18:38 ID:Mz661nHs
これって外部結合できんの?
できるよ
Derby=Postgres HSQL=MyS
Derby=Postgres HSQL=MySQL という位置づけになっていくんだろうか と囲うとしたら送信しちゃったじゃないか!
H2は?
あだち充
47 :
NAME IS NULL :2006/02/19(日) 08:54:06 ID:NpweOF0L
これってサブクエリ使えるの?
>>48 じゃあ何が出来ないの?
外部結合もサブクエリも出来るのなら、出来ないことないじゃん。
>>49 できないことがなきゃだめなの?(´・ω・`)
よくわからん流れだなw
もし全能の神が存在するとしたら、そのような神は常に邪悪であり信じてはいけない。
>>49 Derbyは、Pure Javaで書かれたデータベースの中では
飛びぬけて高機能だよ。
外部結合、view、制約、副照会、トリガー、ストアドプロシージャ
など、ほしいと思う機能のほとんどが使える。
ちょっと遅いけどね (゚∀゚)
55 :
NAME IS NULL :2006/02/25(土) 19:52:30 ID:ODRgUBxJ
つまり
>>43 のような位置づけになるのか?
欲張りたければDerbyを使えと?
それでよろし?
>> 55 何か機能に問題があるわけじゃないんだから、 とりあえず自分で一度使ってみれば? 使うの全然難しくないから。
ストアドプロシージャがあるのか してその性能は如何に?
でるびー? でるばい?
×でるびー ×でるばい ○ダービー
あいだとって デービーでいいよ
61 :
NAME IS NULL :2006/06/18(日) 20:30:07 ID:hit/Nk0X
Mustangスレによると、このApache Derbyが次世代Java Java SE 6 Mustangに取り込まれるらしい。 これにはびっくりした。
組み込まれるのは事実だが、JDKに組み込まれることに注意。 JREじゃないからね。
63 :
NAME IS NULL :2006/06/20(火) 09:10:22 ID:GmFddXaR
VMに組み込まれrんじゃないのか・・・残念
64 :
NAME IS NULL :2006/06/21(水) 00:09:03 ID:hYnCNjr4
>>62-63 VMに組み込まれると一体どんなメリットがあるんだ?
native実装による高速化にでも期待しているのか?
というかVMに組み込むってどういうことよ。 それってDellのPC(ハードウェア)にデータベース組み込むと言ってるのと同じでは。
というか、 WindowsにAccessが標準搭載、 みたいな感じがする。 まあJDK限定じゃ、開発用のおためしDBに 使ってねって感じなんですかね。
ですねえ。思い切ってJREに付属しちゃえば普及は加速しそうだし、 「JRE 6に付属したJava DBの使い方」みたいな記事も大量に書かれそう なんだけど。 DBベンダーからの反発がきつくなりそうだから止めたのかな。
68 :
NAME IS NULL :2006/06/21(水) 02:32:13 ID:hYnCNjr4
>>65 だからnative実装で高速化じゃないか?
それでは、100%PureJavaというApache Derbyの特徴を
妨害することになってしまうが。
今のところ、そのまま標準APIの一部として組み込んだほうがマシだな。
ネイティブで実装すると、各OS毎に実装するコストがかかりそうだ。
なぜデータベース「エンジン」という「環境」の話をしているのに「標準APIの一部として 組み込め」という話になるのか。 APIはちゃんとJPAで標準化されたでしょ。
70 :
NAME IS NULL :2006/06/21(水) 03:01:53 ID:hYnCNjr4
>>69 よくみろ、
>>65 に対するレスだろう。
あの時点では
>>65 はデータベースエンジンの
話はしていないので
ああいう話になっても仕方がないだろう。
>>61-62 JDK内のファイルであっても再配布可なものもあるし、実際の
ライセンス見ないとな。
>>68 RDBMSをネイティブ実装して速くなるか?
ほとんどのケースで、かえって遅くなると思われ。
JNIを呼ぶコストはでかい。
そして動的最適化はRDBMSみたいなものに向いてる。
Derbyでクラスタリングができるようになったら、
RDBMSベンダは真っ青だろうな。
73 :
NAME IS NULL :2006/06/25(日) 11:33:37 ID:Q3NPiH82
>>72 それはあーる!別にJava原理主義者じゃないけど。
74 :
NAME IS NULL :2006/06/26(月) 10:39:26 ID:5JBPy/j1
weblogicでクラスタ組むときにderbyを使用すると勝手にミラーリング してくれるのか??table情報とかも?? だったら凄いけど。
75 :
NAME IS NULL :2006/06/28(水) 21:28:54 ID:/+PVX7Cs
HSQLならMySQLやSQLite並に速いんだろ? Java DBとして昇格したDerbyは準拠型、H2は性能型と住み分ければいいよ。
76 :
NAME IS NULL :2006/07/29(土) 21:37:22 ID:ZzwYSITf
>>72 Java純度がほぼ100%近いNetBeansがネイティブに頼ってるEclipseに
速度面で勝ってしまったことからDerbyをネイティブ化
するのはかえって遅くなると言うことか。
純粋な実行速度だけなら、HotSpotの最適化技術は凄く効果的だから 遅くなるとすればI/O処理だと思われる
DerbyはPostgreSQL、HSQLDBとH2はMySQLと考えればいいんじゃね?
79 :
NAME IS NULL :2006/07/30(日) 02:07:18 ID:UsI3khps
Updateは遅いが、Queryは良い線行ってる気がする。 「Embedded用途のなんちゃってDB」と言う認識で 使い始めたのだが、なかなかどうして優秀じゃん。
80 :
NAME IS NULL :2006/07/30(日) 05:40:40 ID:BqjUn7yu
ほほう。selectは頑張ってるのか。 insertでぶっちぎりでHSQLに負けたから敬遠してた。
81 :
NAME IS NULL :2006/08/25(金) 14:19:31 ID:DlehecX3
>>81 非常に良い資料だね。特に15pageあたりは興味深いよ。
83 :
NAME IS NULL :2006/08/26(土) 15:47:00 ID:X1UwdJ0K
Java6 betaにJDBC4.0対応のDerbyが入っていて、細々と実験中。 なかなか良い感じですな。
84 :
NAME IS NULL :2006/12/20(水) 08:52:53 ID:fVwb+c+T
ij のrunコマンドでsqlファイルを読み込む場合、文字コードを指定することは出来ますか? derby.ui.codesetオプションをつけてみたら、ijコマンド全体が文字化けしてしまいましたorz
85 :
NAME IS NULL :2007/01/07(日) 04:30:12 ID:y+rAYZi5
データの挿入を今より高速化させたいのだが良い方法を どなたかご存知じゃありませんか? Statement#addBatch() を使用しているのだが。この質問って、プログラムの方かな?
>>85 バッチ処理で希望のパフォーマンスがでないのなら
あきらめろとしかいいようがない。
JDBC使わずにネィティブにINSERTしろ
addBatchで追加する処理が1件とかそんなオチなんでは.... PreparedStatementは、パラメータ違い以外は同じSQLなのに処理毎にnewするなんて 愚かなことをしない限り結構高速に動く。 それをやったうえでまだ遅いというなら、ストアド・プロシージャ化するしかないんじゃね?
EclipseでEmbeddedドライバを使って connection := DriverManager.getConnection("jdbc:derby:testDB;create=true",props); stmt := connection.createStatement(); stmt.execute("CREATE ほにゃらら"); ってやったときに、DERBY_HOMEに関係なく、eclipseのインストールディレクトリ直下に testDBのディレクトリがつくられます。どうやったらDBの作られる場所を指定できますか?
Properties props = System.getProperties(); props.setProperty("derby.system.home", "c:\\derby");
91 :
NAME IS NULL :2007/03/21(水) 21:54:05 ID:9VjDpMgV
derbyでPLSQLを使うにはどうすればいいの?
OracleのDabaseLinkからDerbyに繋いでPL/SQLで…ってアホか!
DerbyにはPLSQL相当の仕組みはないのだろうか??
>>93 あってるかわかんないけどJavaで書けるんじゃないかなぁ。
>>81 のPDFをちょっと読んだ限りだと
PreparedStatementのSQLはコンパイルされてJavaのバイトコードなる
というあたりから、Javaで書ける仕組みがあってもおかしくないと思った。
95 :
NAME IS NULL :2007/04/07(土) 14:43:25 ID:xoZfn/GC
ダービーにはストアドプロシージャあるからPL/SQL相当はいらんだろ
PL/SQLってOracleのストアドプロシージャじゃないの?
97 :
NAME IS NULL :2007/05/06(日) 02:37:22 ID:fMEBkts8
98 :
NAME IS NULL :2007/11/18(日) 18:50:28 ID:P8XjbpU0
で、だ。 これを導入しようとしたら何か注意点はあるか?
100 :
NAME IS NULL :2007/12/27(木) 05:45:00 ID:VbMIzW/5
まるで情報が蓄積されていないな。すでに終わってしまった存在なのか?
>>100 最近Updateもされたし,JavaDBとしてJDK6にはくっついてくるし終わってはないだろう。
組み込みDBとして製品がつかっていることも多いようだし,あまり意識して使う機会がないだけでは
まぁ、Java自体があれなんで・・・
あれと言えば玄人を気取れる
JavaDB用のJavaシステムプロパティ一覧がわかる方いますか?
オービーでもバービーでもない!!
106 :
NAME IS NULL :2008/04/02(水) 21:37:30 ID:APbDJlUh
>>105 オハヨー!!
∧∧ ∩
(`・ω・)/
⊂ ノ
(つノ
(ノ
___/(___
/ (___/
 ̄ ̄ ̄ ̄ ̄ ̄
107 :
NAME IS NULL :2008/04/18(金) 08:25:40 ID:X8/Aygbl
.netのSQL Serverみたいなものだな。
人気ないのかな?
H2にした。
タマに使ってる
111 :
NAME IS NULL :2008/07/04(金) 22:08:41 ID:icnPhRKH
結構動作速いね ODBCデータソースにつなげるともっといいな
112 :
NAME IS NULL :2008/07/25(金) 08:20:25 ID:TxVWMIeA
>>106 ∧,,∧
( `・ω・) ウーム…過疎?
/ ∽ |
しー-J
113 :
NAME IS NULL :2008/07/30(水) 14:07:33 ID:2NY1OFtV
create table で使える型の一覧ってありませんか? boolean型は使えないようです、
115 :
NAME IS NULL :2009/02/08(日) 22:15:04 ID:WtsFLQ9W
DECLARE GLOBAL TEMPORARY TABLEで作成したテーブルの存在確認をしたいのですが、 どのようなSQL文を記述すればよいのでしょうか。 ご存知の方ご教授よろしくお願いいたします。
116 :
NAME IS NULL :2009/02/12(木) 23:18:22 ID:qcysbRXt
Java製のデータベースとして、H2 database とかっていうのもあるらしいが、 両方使ってみた方の感想はどうですな?
117 :
NAME IS NULL :2009/02/19(木) 23:56:14 ID:9Ddd0lZw
>>112 ∧ ∧ 一人一個まで
( ´・ω・)
( ∪ ∪ ,.-、 ,.-、 ,.-、 ,.-、 ,.-、 ,.-、 ,.-、
と__)__) (,,■) (,,■) (,,■) (,,■) (,,■) (,,■) (,,■)
梅干 高菜 おかか こんぶ ごはんですよ わさび漬け 焼たらこ
,.-、 ,.-、 ,.-、 ,.-、 ,.-、 ,.-、 ,.-、
(,,■) (,,■) (,,■) (,,■) (,,■) (,,■) (,,■)
鶏飯 明太子 ちりめんじゃこ ゆかり 柴漬 塩辛 牛肉しぐれ
,.-、 ,.-、 ,.-、 ,.-、 ,.-、 ,.-、 ,.-、 ,.-、
(,,■) (,,■) (,,■) (,,■) (,,■) (,,■) (,,■) (,,■)
鮭 鶏ごぼう 野沢菜 天むす ツナマヨ エビマヨ 鮭マヨ Derby
H2 databaseは良いよ。 一通りの機能が揃ってて、モジュールのサイズも小さい。 昔のMySQLみたいにトランザクション張れなかったり、 sqliteみたいに型が無かったり、そんな制約が少ない。 まぁ性能的に問題が出るほど使い込んではいないんだけどね。
119 :
NAME IS NULL :2009/02/23(月) 22:11:12 ID:kLZ6BJ2c
>>117 且且~
且且~
∧__∧ 且且~
(´・ω・) 且且~
`/ヽO=O且且~
/ ‖_‖且且~
し ̄◎ ̄◎ ̄◎
皆さん、お茶が入りましたよ…
選択件数が 1 万件とか行くとエラい遅いんだけど、FETCH FIRST n ROWS ONLY とか LIMIT n とか、SELECT にそういう制限は書けないのけ?
10.5.1.1 でこうするとUNIQUEが無視されるんだが既知のバグかな? ij> CREATE TABLE T (I INT UNIQUE); ij> INSERT INTO T VALUES(0); ij> UPDATE T SET I=1 WHERE I=0; ij> INSERT INTO T VALUES(0); ij> UPDATE T SET I=0 WHERE I=1; ij> SELECT * FROM T; I ----------- 0 0 2行が選択されました ij>
122 :
NAME IS NULL :2009/12/22(火) 21:04:35 ID:EynirYTl
おい、なんだこの不人気ぶり。 どっかで業務で使ってる奴いないの?
テスト環境くらいなら使うけど、商売で業務となるとDB2に変わるんじゃね。
124 :
NAME IS NULL :2010/02/22(月) 01:55:43 ID:XIdTGZld
>>119 __ ジャー ____
/⌒ヽ |;;lヽ::/ ∧_∧ /__ o、 |、
( ^ω^)∫. .|;;|:: :|~ ( ´・ω・)ノ .ii | ・ \ノ
( つc□ i===i=i c□c□c□ 旦旦旦旦( o 旦| ・ |
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| コーヒーの方はこちらへ | | お茶の方はこちらへ .|
125 :
NAME IS NULL :2010/03/22(月) 12:14:50 ID:wCvBAYFD
JavaならOracleだろJK。
126 :
NAME IS NULL :2011/01/04(火) 03:44:57 ID:DSSMV7jK
あけましておダービ
127 :
NAME IS NULL :2011/05/03(火) 04:24:57.52 ID:Zi+2PVKL
>>85 JavaDBってストアドプロシージャないのかな
java6のおまけで入る奴って古いのね 新しいのだとsequenceが使える!
いつの情報だよw
2はなさそうだな
131 :
NAME IS NULL :2013/04/27(土) 17:45:21.36 ID:yzS90ji5
derby.jarって作ったアプリと一緒に配布してもいいの?
132 :
NAME IS NULL :
2013/04/28(日) 02:39:07.65 ID:b0ivLEo3