|
blancoDb 詳細
[igapyon,blancoDb,Enterprise,Edition,detail,software,opensource,free,LGPL] このページは blancoDb Enterprise Edition (blancoDb EE)の詳細情報のページです。blancoDb EE は R-Oマッピングツール実装のひとつです。データベース中心アプローチ(DOA)のもと極めて少ない設定情報からソースコードを自動生成します。
|
blancoDb Enterprise Edition / blancoDbDotNet / blancoDbPhp (以降 blancoDb) は R/Oマッピングツール実装の一つです。
理念・思想
blancoDbは下記のような理念および思想を特徴としています。
- 低機能でありつづける
各プラットフォームが提供する軽量データベースAPI (JDBC / ADO.NET / PDO) の機能性・特徴を妨害・阻害することなく、そのままJava / C#.NET / PHP ソースコードにマッピングします。このことにより、リレーショナルデータベースの機能および性能を最大限引き出すことが出来ます。ツールとしては低機能であることにより、高性能に動作させることができ、また
それら軽量データベースAPIの機能を最大限利用することができます。Java版の場合にはスクロールカーソルやNULL許容列対応など最低限の機能をサポートします。
- 自由度の低さ
リレーショナルデータベース上の型をJava / C#.NET / PHP の特定のオブジェクト型に強制的にマッピングを行います。型マップに関しては極力自由度を排除しています。このことによりドライバの実装に起因した型マッピングによる不具合発生を最小限にとどめることが出来ます。加えて自由度が低いために 極めて少ない設定によりマッピングを自動生成することができます。原則として列名や型情報はJDBCドライバから得られるメタ情報を活用して自動的に決定します。自由度の低さゆえに非常に安全に動作させることもできます。型マップ済みのクラスが提供されることにより、実行時エラーの可能性を激減させます。多くの場合
自由度の高さは設定を増やして不確実性を押し上げ、各種トラブルを誘発するのです。
- カスタマイズの容易さ (ただし現バージョンでは 未達部分が含まれる)
カスタマイズの容易さを理念としています。基幹系・大規模開発で利用される際にはカスタマイズが発生することでしょう。生成されるソースコードにいろいろ手が加わるのはもちろんのこと、blancoDbのソースコードそのものにもカスタマイズが入ることを想定しています。そういったカスタマイズのしやすさを実現するための方法として、機能を増加させず自由度を増やさずblancoDbそのものの規模の肥大化を抑制している側面もあります。blancoDbの規模が小さいことはカスタマイズ実施後のテスト規模を抑制することも出来ます。
特徴
- ごく普通のSQL文が そのまま利用できます。
ターゲットRDB向けに準備されたSQL文が そのまま利用できます。当然のことですが、複数表を結合した検索が可能です。ある程度複雑なサブクエリやUNION付きSQL文なども、あたりまえのことですが、ごく当然のものとして利用できます。SQL文という観点では
blancoDbは極めて自由度が高くなるよう設計されています。
- ごく普通にデータベースAPIをラッピングしています。
ごく普通の プログラミング・ソースコードが自動生成されます。このため既存のデータベースプログラミングノウハウおよびスキルが転用でき、学習コストがとても低くなっています。
- Excelブック形式のSQL定義書に SQL文とSQL文の付加情報を記載することにより入力メタ情報を設定します。
Excelおよびその互換ソフトを用いるだけで入力メタ情報を設定できます。XMLファイルは利用しますが、単に中間ファイルとしてのみ利用しています。
- よくありがちなデータベースプログラミングにおけるバグを予防するための仕組みをもっています。
- 一意制約違反は特別な例外として扱うことにより、一意制約違反の処理忘れバグを予防できます。
- 検索・実行結果が1件であるSQL文について、実行結果が1件でない場合には例外を発生させることよにり処理忘れバグを予防できます。
- ステートメントのクローズ忘れについて、これを検知して警告を出すことによりクローズ忘れバグを予防できます。
- SQLインジェクションを発生させにくい構造になっています。blancoDbを導入することは SQLインジェクションの予防および対策として非常に有効です。
- リレーショナルデータベースのカーソルが利用できます。(Java版のみ)
- (リレーショナルデータベースがサポートしていれば) FOR UPDATEを伴った行ロックを伴った検索および行の更新が可能です。
- 実行時に特別なクラスライブラリを必要としません。生成したソースコードだけで完結して動作します。またソースコード自動生成時に 解決可能なものは最大限解決を済ませます。このことにより実行時コストを極小化することが実現できます。
- 基幹系システム開発に対応しています。
基幹系システム開発における一般的な開発プロセスに沿った形で設計および実装されています。
下記の仕様をR/Oマッピングと呼ぶことと定義します。また R/Oマッピングツールとは下記の仕様を満たすものを指します。
- リレーショナルデータベース指向である。
- リレーショナルデータベース上の型を、強制的に特定のオブジェクト型にマッピングする。
- リレーショナルデータベースのカーソルが利用できる。
- リレーショナルデータベースが持つ機能・性能を阻害しない。
- ANSI SQL (ごくあたりまえのSQL文) を利用する。
- 各種ロックが適切に利用できる。(行ロック、更新用の検索)
- NULL許容列を適切に扱うことができる。NULLはNULLとして入出力ができる。
- トランザクションが適切に扱える。
- トランザクションのコミットとロールバックを任意のタイミングで呼び出すことができる。
- トランザクション分離レベルを適切に扱うことができる。
- メモリ消費量が常識的であること。
- 処理件数が増えてもメモリ消費量が線形には増えないこと。
- StreamやReaderを適切に利用し、大きなデータや大量データを扱ってもメモリ上には展開しない。
- ストアドプロシージャ呼び出しに適切に対応する。
意外なことですが、世の O/Rマッピングツールの多くは 上記とは逆の指向性を持っています。ツールとしては高機能である反面、リレーショナルデータベースの機能や性能を大きく損なっているというものが多く存在します。R/OマッピングはリレーショナルデータベースおよびSQLを中心としたアプローチをとります。
blanco Frameworkは Java言語と各種入出力との間の各種インピーダンスミスマッチをソースコード自動生成を中心としたアプローチによって解消するための包括的なフレームワークです。blanco Frameworkについては、詳細は下記をご覧下さい。
このページで主に説明を行う blancoDb Enterprise Edition (以降 blancoDb)は blanco Frameworkに支えられて構築されています。
下記のRDBMSにおいて 動作確認 (実開発における利用) が行われています。
Java版
- Microsoft SQL Server 2000 SP3 (SQL Server 2000 JDBC Driver SP3)
- Microsoft SQL Server 2005
- PostgreSQL 8.0.2 (Solaris/Windows)
トランザクション分離レベル: READ COMMITTED (コミットリード)
- Oracle 7.3.2, 8.0.2, 9i, 10g (Windows)
C#.NET版
- Microsoft SQL Server 2000 SP3 (SQL Server 2000 JDBC Driver SP3)
- Microsoft SQL Server 2005
PHP版
- PostgreSQL 8.1 (Solaris/Windows)
トランザクション分離レベル: READ COMMITTED (コミットリード)
- MySQL
このページを保守している いがぴょんが ソースコード自動生成に取り組んできた歴史を簡単に記載します。
- C言語のソースコード自動生成について、1993年ころから プログラム(C++による実装)による自動生成に取り組んできました。
- 1999年頃に、テキストエディタのマクロ機能を使ったJavaソースコード自動生成に ほんの少しだけ手を染めていました。
- 2001年頃に、XMLを入力とした O-RマッピングのためのJavaソースコード自動生成に手を染めていました。
- 2004年に R-Oマッピング・ソースコード自動生成について、日記読者に対して呼びかけを行いました。
- 2005年に、早期アクセスプログラムという形で最初のバージョンをリリースしました。
- 2005.04.05 blancoDbをベースに 企業向け利用に適した blancoDb Enterprise Edition (EE)をフォーク。今後は
blancoDbに関するリソースは blancoDb EE 向けに割り振っていくことになりました。
- 2005.04.09 blancoDb EE のソースコードについて SourceForge.jpのCVSにアップロード。
- 2005.04.20 blancoDb EE の最初のベータ版 (0.8.1) をリリース。
- 2005.05.25 blancoDb EE の最初の正式版 (1.0.0) をリリース。
- 2005.12 .NET Framework対応の blancoDbDotNet ベータ版をリリース
- 2006 .NET Framework版の正式版をリリース。blancoDb Enterprise Editionの第二世代版をリリース
- 2006.12 PHP対応の blancoDbPhp ベータ版をリリース
いがぴょんについて
Last modified: $Date: 2010/09/27 20:42:51 $