インプライズ社 様のご厚意により,
Linux 対応リレーショナルデータベース, "InterBase5 for Linux" を
ソフトウェアレビューコーナーあて ご提供いただきました.
この製品のレビューをして頂くべく,
Linux Users ML
において公募を行い,
これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.
ここに, レビューアの方々に書いていただいたレビュー記事を公開します.
(インプライズ株式会社は 2001/1/26 に ボーランド株式会社 へ社名変更しています。以下の内容においては、www.inprise.co.jp への リンクは www.borland.co.jp へのものに変更し、文章そのものには 修正(更新)は加えておりません)
インプライズ社 様および レビューアの皆様のご厚意に感謝いたします.
- Linux の使用歴
- 4 ヶ月
- UNIX の使用歴
- なし
- Linux Box の主な用途
- UNIX の勉強と,各種 DBMS の評価の為
- Linux Box に載っている Linux 以外の OS
- Windows98
- Linux と Linux 以外の OS の使用頻度の比
- Linux : Windows95 : VMS = 1 : 3 : 2
- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- Gateway2000, Celeron366, 64MB, E-IDE 10GB, NE2000 互換
- 評価に利用したLinux ディストリビューションおよびカーネルのバージョン
- TurboLinux 日本語版 3.0 Kernel 2.0.35
InterBase 5 for Linux をサーバーに, Windows95 をクライアントとした, オーソドックスな C/S での利用を見てみました. なにぶん,InterBase は初めてですし, また Linux も始めて間がありませんので, 至らない点はご容赦下さい.
インストールは, 他の Linux 上で動く DBMS と比べると,「これで本当に良いのか」 と思うほど簡単です. ただ, InterBase 4.0(書籍付属)は, SlackWare 3.5 でも動いてるのですが, InterBase 5 は,動作しませんでした. 導入は,「TurboLinux 3.0 日本語版」で 行いました.
印刷されたマニュアル5冊とともに, PDF も付属し, 全て日本語化されています. 初心者用ではありませんが, コンパクトにまとめられていて, 実務者向けの 良いマニュアルだと思います. マニュアルの善し悪しは,非常に大切です.
サーバーは,HP-UX 等で使われる「Super server」では無く,「Classic server」 アーキテクチャです. マルチスレッドでは無く, 接続ごとにプロセスが生成されます.
1つの「データベース」は, 特殊な「デバイス」ではなく,「ファイル」に 対応していて,わかりやすく, 最初に必要な領域を確保しておく必要もありません. 削除された領域の再利用も, 適宜行われているようで, MS Access のように, 毎度「最適化」作業を行う必要もなさそうです.
InterBase では,残念ながら, テーブルや, カラム等の名称に漢字は使えません. 仕事上で大規模なデータベースを運用している立場としては,これらに漢字を 使うのはどうかと思いますが, いかがでしょうか. カラムごとに「文字セット」を指定でき, クライアント等の異なる文字セットへは自動で変換されます. EUC で格納しても良かったのですが, 今回は「none」(入力したコードのまま)として, シフトJIS で運用する事にしました. Linux 側は, EUC でも SJIS でも対応が簡単なので,助かります.
クライアント側の開発ツールは, Windows 版 InterBase で使われるものと 共通のものです. アプリケーション開発言語は, VisualBasic 5.0 を使いました. ODBC を使いますが,ドライバは, InterBase 4.0 と異なり, INTERSOLV 社製に変わっており, より安定したものになっています (実際にテストしての話です). ODBC の利用で気を付ける点は, 「データコントロール」での更新と, 「Editメソッド」を使う場合は, 「ODBC カーソルライブラリ」を使わなければならない事です. これらを使わなければ, 特に必要はありません.
今回は,CSV(テキスト)でデータを用意し, 初期データとしました. InterBase には,専用のローダーが無いので, ODBC(C言語) と ESQL/C を使った 2種類のプログラムを作成し, 環境を変えて実行してみました. ESQL は ODBC に比べて倍程度,速いようです. 驚いたのは, InterBase が動作している Linux 上で実行すると, 同じ ESQL のプログラムでも,1桁程度速い事でした. 「Classic server」では, 同じマシン上では, ネットワークを介さず, 直接 I/O を行う事が要因のようです. 10,000 件の処理は数秒で完了しました. ツール類が必要なら, 今回のように, 「動的 SQL」を使えば, 簡単に作れます.
アプリケーションを作っていて気づいた点は, ODBC でのトランザクションとロックは, MS Access の動作に近くなっています. もちろん,「行ロック」ですし, より高度です. MS Access と, SQLServer との ロック方式の違いによる相性の悪さを考えると皮肉です.
InterBase は, 「トランザクションログ」ではなく, 「レコードのバージョニング」 を使うので, 「トランザクションログ」がありません. 大規模なデータベースでは, 必要な場合がありますが, そうで無いなら, 余計な管理がなく, 運用が簡単です.
SQL 言語については, 関数が少ないのが気になりました. せっかく, UDF(ユーザ定義関数)という強力な機構があるので, サンプルにとどまらず, もっと豊富に用意されていても, 良いのではないかと感じました.
しばしば, Linux 側の操作をクライアントから, 「Tera Term」(Telnet) を使って行いましたが, これで, ほとんど済んでしまうので, NT と比べると, リモート管理がとても楽です.
- Linux の使用歴
- 1 年
- UNIX の使用歴
- かれこれ 5 年
- Linux Box の主な用途
- ISP からのメールの自動受信・処理.
現在 Windows-NT で行っているデータ整理を Linux 環境へ移行中,
WindowsNT では手作業が入るため, 自動化を目的に Linux 化を進めている.- Linux Box に載っている Linux 以外の OS
- PC-DOS7, (WindowsNT は他の PC に載ってます)
- Linux と Linux 以外の OS の使用頻度の比
- Linux(3Hr) vs WindowsNT(24Hr),
(現在 Windows-NT を 24Hr 稼働中(手作業 1Hr)), Linux BOXは構築作業の時間だけ電源onさせるため)- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- M/B:AMI_TITAN2,CPU_Pentium(90MHz)*Dual,Memory_96MB
- SCSI:AHA-2742,NIC:3C579
- HDD(hda):IDE_1G(PC-DOS7:200M,LinuxSwap:16M,LinuxNative:800M)
- HDD(sda):SCSI230M(LinuxNative:230M)
- HDD(sdb):SCSI4.3G(LinuxNative:1G+1G+1G+1.3G)
- CD-ROM:hdc(IDE*16 倍速),scd0(SCSI*2 倍速)
- パーティッションの使い方: hda1:PC-DOS7,hda2:LinuxSwap,hda3:Vine(/),
sda(Linux のテンポラリ), sdb1:Vine(/usr),sdb2:Vine(/home),sdb3:CalderaOpenLinux1.3(/)- 評価に利用した Linux ディストリビューションおよびカーネルのバージョン
- Slackware3.5 + kernel 2.2.3
- Vine Linux1.0β + kernel 2.2.3 (2.2.5)
- Caldera Open Linux1.3 + kernel 2.2.3 (2.2.5)
VineLinux からライブラリを取り込み glibc2 化をしたつもりで, インストールを試みるがライブラリの不足を指摘されるエラーの多さに困惑しギブアップ. (慣れ親しんだ Slackware に, しばしの別れを告げた) (slackware3.5 の glibc2 化はインストール済みのアプリケーションの隅々まで 気を配りながら進めることを推奨します. glibc2 化の途中, Netscape が起動できなくなったりしました. )
雑誌から入手し, OSをデフォルトでインストール.
ksh と InterBase5 のインストールからスタート.
何も問題なくインストールは完了した.
WindowsNT マシンから,
#telnet localhost 3050 でサービスにアクセスしたところ”活きていそう!”
#telnet localhost 3060 でサービスにアクセスしたところ”活きていそう!”
isql -U SYSDBA -P masterkey "/home/database.db" で無事動作確認完了.
Delphi3Pro 版付録の DBE アドミニストレータからのアクセスも動作確認.
SQL 問い合わせに対する回答も正常.
他のポートでサポートするツールのように,
#telnet localhost 3050 のように telnet コマンドで動作チェックできると,
かなりインストール後のチェック(問題のきり分け)が楽になると思う.
まず, ディストリビューションの CD-ROM から, glibc-2.0.6 を追加して実施.
ksh, Interbase, interclient ともインストール完了.
#telnet localhost 3050 でサービスにアクセスしたところ”活きていそう!”
しかし, #telnet localhost 3060 でサービスにアクセスしたところ,
Trying 127.0.0.1...
Connected to localhost
Escape character is '^]'
interserver: error in loading shared libraries
libstdc++.so.2.8: cannot open shared object file: No such file or directory
Connection closed by foreign host.
となるため, 何かライブラリがたりなさそう.
isql -U SYSDBA -P masterkey "/home/database.db" での動作確認も,
>select * from table ;
で, 出るはずのデータが出力されない?
→ テーブルに読み込まれているデータが狂っている?元データ(テキストファイル),
テーブル構造(スクリプトで実施)は Vine の時と同じファイルで行っており,
理由不明?!
(メッセージはでないが lib 関連不具合かもしれない)
Delphi3Pro 版付録の DBE アドミニストレータからのアクセスも動作確認・・・できず.
何となく, ”エラー無しでインストール出来たかのごとく動作し,
しかし, 実際には動作できない”のは, , , , まずいですね.
rpm 形式等にして依存関係を整理してからインストールさせるほうが
ユーザー(DB 管理者と DB ユーザ)からは好感が持てる.
データベースの評価にまず必要なもの,
「データの整合性確認できているデータ」を
InterBase5 に読み込ませようとしたところ*大変に*苦労してしまった.
なぜか? 私のもっているデータは専用ツールのデータ以外,
「可変項目, 可変長,”,”区切り」のAWKで取り扱える(取り扱いやすい)
テキストファイルに変身してしまっていたのである.
これを, InterBase が読み込める
「固定長テキスト」に置き換えることに時間を費やしてしまった.
(最終的には, 読み込みも正しく出来たのは「郵便番号簿」だけ)
評価用のサンプル DB を作るのに時間を要してしまった.
localhost 内で isql コマンドでのアクセスに問題がなければ, ODBC 経由でのアクセスも特に問題なく「接続はできた」. しかし, LinuxBOX での文字コードをEUCにしており, WindowsNT 側で(正しくは)表示してくれない. どこかで文字コードの変換を行う必要がある. 現状デフォルトで提供されるツール・関数では文字コードの変換をしてくれないようなので, プログラマーが苦労することになるだろう. (変換関数が用意されているのだったら, 私の探索不足です. すみません)
PostgreSQL95 と比較すると, 体感的には早い. (双方に index を作成した場合には, その差は体感は出来なかったが, 複雑なテーブルのリレーションになれば差が出てくると思う) InterBase5 が使用するデータファイルの大きさは大きい!, 可変長をうまく使えば小さくできるかもしれないが最適化の時間は今回とれなかった.
当初から, glibc2 が要求されており, Slackware での評価は無謀であるが, Caldera Open Liux1.3 はディストリビュータ (Caldera) の Web でも glibc2 化について記述があり正常動作するのが妥当だと思われる. しかし, 現実には?な結果しか得られなかった点は商用パッケージとしてはまずい. (と思うが, 稼動 OS は RedHat しか記載してないのだから, まぁ良いか!?)
- Linux の使用歴
- 3年6ヵ月
- UNIX の使用歴
- 10年位
- Linux Box の主な用途
- 趣味のプログラミング, その他
- Linux Box に載っている Linux 以外の OS
- 無し
- Linux と Linux 以外の OS の使用頻度の比
- 職場 Linux : WindowsNT 1:9
自宅 Linux : Windows95 9:1- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- 自作機
- CPU: Pentium2 350MHz Dual
- Memory: 256MB
- HDD: 6GB
(AIC-7895 - DDRS-34560D - System (2G)+Data Disk(2G) BT-930 - DORS-32160 - swap(64M)+ Data Disk(2G) )- NIC: NE2000
- 評価に利用したLinux ディストリビューションおよびカーネルのバージョン
- Distribution: Vine-1.0Beta -> Vine-1.0R, Kernel version: 2.2.3
DB の選定ポイントには, 安定性・生産性・パフォーマンス等沢山あると思いますが, 今回は本番稼働後のシステム運用の観点から InterBase 5 for Linux をレビューして 行きたいと思います. すなわち InterBase5 の特徴としてあげられている, 「No DBA の RDBMS」中心にをレビューすることとします.
今回はテストデータとして以下を用意しました.
ジャーナルデータ | 83byte/Record | 100万件程度 |
マスタデータ1 | 305byte/Record | 2946件 |
マスタデータ2 | 81byte/Record | 2694件 |
マスタデータ3 | 181byte/Record | 150件 |
サーバ・クライアント環境共に, 同一マシン上に構築.
製品添付のインストール手順に従い特に問題なくインストールできました. (インストールは, Vine-1.0Beta で行った. 一部 shell がエラーを吐いたが特に 問題無し. Vine-1.0R でもエラーが出るかは未確認. )
[エラーメッセージ] ./interbase/install: /etc/bashrc[27]: bind: cannot bind, not a tty
データベースの作成やテーブルの作成に関しては, 標準規格と言うだけあり, 他の RDBMS と SQL レベルでは大差無い. しかし外部ファイルのインポートを行うツールが無く, 固定長テキストファイルを外部テーブルとして作成し, 外部テーブル〜内部テーブルのコピーと言う形でのみ提供されている.
今回レビューに使用したレベルのマシン性能では, 100 万件程度のデータベースの運用には十分実用になると感じた. 現在職場で使用している, WindowsNT P6-200 Dual + Raid5 Disk + Oralce8 で同一条件の処理と比較しても, さして違和感は感じなかった. しかし, データベースのチューニングを行える要素が少なく, 大規模データベースには少々無理があるように思えた. ターゲットとなるのは, 小・中規模, もしくは部門サーバのような使われ方のように感じた.
- Linux の使用歴
- 約3年(ただし,何かに使って役立てていた訳ではない)
- UNIX の使用歴
- LinuxがUNIXだとするとLinux使用歴に同じ
- Linux Box の主な用途
- 趣味(これ以外言いようがない)
- Linux Box に載っている Linux 以外の OS
- Win98 もしくは WinNT
- Linux と Linux 以外の OS の使用頻度の比
- 1:9
- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- 自作PC/AT機 (CPU:CyrixPR200MMX,メモリ:64Mbyte,HDD:1.6Gbyte,NIC:NE2000互換)
- 評価に利用したLinux ディストリビューションおよびカーネルのバージョン
- RedHatLinux5.2(英語版)
今回,InterBase5 のレビューをさせていただくことになり,大変感謝しています. 普通のユーザーがデータベースソフトを使用する場合, 大抵はマイクロソフトの ACCESS97 を使っているのではないでしょうか. ACCESS は大変使いやすく高機能なデータベースソフトで, 通常の使用では不満はないと思います. 特に,EXCEL や WORD,VISUAL BASIC との使用方法の統一は, ユーザーにとって大きいメリットです. 以前はよく使われていた dBASE や桐が片隅に追いやられた感がするのも, 無理はないと思います. ソフトの栄枯盛衰は,書店のパソコン関連の棚の本の数を見れば,よくわかります. それでは,Linux でデータベースを動かす理由はどこにあるのでしょうか. 一番考えられるのは, 安定した PC-UNIX(Linux) システムでデータベースと連携した Web サーバを動かすような使用法ではないでしょうか. Linux + Web サーバ (Apache) + 高速データベース (InterBase,PostgreSQL, MySQL etc.) のような高度な Web アプリケーションの利用が簡単に構築できる環境を手に入れることができます.
私は,InterBase5 をインストールするに当たって,まず,新しくマシンを組むことにしました. Linuxの特徴である軽さを生かすためには, 少し古くなったスペックのマシンで使用してみることに意義があるのではないかと思います. そのため,CPU は Cyrix の PR200MMX を使いました. この CPU は実際は 60MHz×2.5 倍の 150MHz で動いており, 表計算やワープロに使う分には不足はありません. 今時のゲームでは苦しいといったところです. 次に,Linux は本に付いてきた RedHatLinux5.2 を入れました. RedHat 系のディストリビューションとしては, TurboLinux や最近注目の Vine Linux にも入れてみたいと思います.
以下,インストール作業を少し詳しく書きます. すべて root で作業します. まず,CD-ROM をマウントする.
# mount /mnt/cdrom # cd /usr # tar -xvf /mnt/cdrom/InterBase_LI_V511.tar # ./interbase/install
ここで,/etc/inet.confや/etc/inetd.conf,/etc/servicesをreplaceしていいか,聞いてきます. 私は,インストールしたばかりの状態ですから,すべてにYと答えて,書き換えました. 次に,サーバーライセンス登録を行います.
Please enter the license certificate id: Please enter the license certificate key:
に答えた後,リブートします.
# shutdown -r now
/usr/interbase/bin/iblicense を使ってライセンス登録します. インストール自体はいずれも数分もかからず本当にあっけなく終了してしまいます. それから,インストールがうまくいっているかどうかテストを行っていきます. Linux サーバーにローカル接続し, データベース操作を行うための「isql」ユーティリティを使ってデータベース employee.gdb に接続し, データの表示をしてみます.
# /usr/interbase/bin/isql -U SYSDBA -P masterkey Use CONNECT or CREATE DATABASE to specify a database SQL> connect '/usr/interbase/examples/employee.gdb';
インストールマニュアルに書いてある表示がデータベースをダブル・クォーテーションとシングル・クォーテーションで囲んであったため, 表示どおり入力したのでは接続できないので注意が必要です. ちなみに,InterBase5は,ダブル・クォーテーションとシングル・クォーテーションの両方とも有効です.
SQL> select * from employee;
(すべてのデータが表示される...余りに早くて判らない)
SQL> show tables; SQL> quit;
ここまでは,何の問題もなく終了しました.
第二段階に入ります. InterBase5 の CDROM のディレクトリ 「Winclnt」 の中の setup.exe をダブルクリックし, Win98 に InterBase5 をインストールします. すると「プログラム」の「InterBase」の中に各種のプログラムがインストールされます. その中の「Communication Diagnostic Tool」を使ってデータベースの接続をテストします. このツールは,簡単な接続テストを行うためのものです. 「リモートサーバー」を選択し,サーバーに「192.168.0.1」,ネットワークプロトコルはTCP/IPを選択します. データベースには,先程の例で使った /usr/interbase/examples/employee.gdb を入れます. ユーザー名は,「SYSDBA」とし,パスワードは「masterkey」と入力します. これで「テスト」をクリックすれば,暫くして, 「このモジュールはバージョンチェックをパスしました. 」と表示された後に, データベースへの接続が確認されます. 以上,簡単に Linux 版 InterBase5 のインストール及び使用法を試してきましたが, 非常に簡単に使えることがわかります.
時間がなくてテストできませんでしたが, Jbuilder のような JAVA プログラミングで使用すれば, マルチプラットホームを最大限生かすことができるので, データベースは Linux 上で動かし, クライアントは Windows で JAVA プログラミングするという使用方法が Best のような気がします. 以上,拙い文章ですが,まずはレビューの報告をさせていただきます.
- Linux の使用歴
- 約1年
- UNIX の使用歴
- やっぱり1年
- Linux Box の主な用途
- プログラムを書く, TeX を書くなど学校の勉強に使うのが中心です.
- Linux Box に載っている Linux 以外の OS
- Windows 98
- Linux と Linux 以外の OS の使用頻度の比
- 使用頻度は 5:2 ぐらいです
- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- CPU PII 333khz
- メモリ 128 mb
- HDD 4G(うちLinux nativeに1G使っています. )
- NIC なし(要するにスタンドアローン状態)
- 評価に利用したLinux ディストリビューションおよびカーネルのバージョン
- Vine Linux Ver1.0beta, カーネルのバージョン 2.0.36(結局安定したカーネルを使用しました. )
去年の夏からバイトとして建築会社の DB の構築と アプリケーションを作成するチームに配属. いきなり DB の構築担当となる(その時点では SQL すら知らない状態でした). DB のソフトウェアは元 Sybase の SQLServer (現在は某 M 社のソフトウェアですが). 人に聞きながら, DBの構築, SQL でのビュー, プロシージャ作成まではできるようになる. その後学校で MySQL(Solalis 上の)を少しいじくる. そんなこんなで DB を使えるようにはなったが, チューニングに関しては全然分らずになやんでいる状態. そんな状態でも建築会社の DB がなんとか完成, 納品. そして現在に至る.
来た製品はマニュアルとDB の本体( CD-ROM ), あとは C でのソフトウェアのライセンスでした. やっぱり一番大きかったのはマニュアルで, その中には5冊のマニュアルが入っていました. ではその紹介と私が思ったことを一挙紹介しましょう.
以上がマニュアルの紹介でした.
ではインストールです. ソフトウェアに付属していたインストールの仕方という紙を見てみます. (ちなみにこれはインプライズのページにあります. インストール の仕方) それによると ksh が必要のこと. しかし, 私のマシンには無かったので ftp で拾ってきてインストールします. そのあとです. 一応リブートしようと思って InterBase の CD-ROM を入れたままリブートしてみると, なぜか CD-ROM から Linux がリブートします!
どうやら RedHat Linux(もちろん非日本語版)が入っているみたいでした. マニュアルにもなにも書いていないので驚いてしまいましたが, CD-ROM と一緒 にこの CD に入っているもののリストを入れていただけると便利なのかなと思いました. それ以外には何の問題も無くインストールできました.
では私の目標であった友人管理のデータベースのをテーブルを作ります.
E-mail アドレスや電話番号を複数持つかたの為を考えて, 正規化をして・・・
としてみたら, 総計 4 つのテーブルになりました.
この DB に対してアプリケーションを作ろうとするのも面倒くさいので,
isql という対話型のアプリケーションを使って DB の操作を行ないます.
先ずはテーブルを格納する DB を作成します. DB の作成はすごく簡単で,
保存する DB の名前を入れるだけでOKでした.
それからテーブルの構築を行ないましたが, 気になった点としては,
入力の際に tcsh や, bash の様なインターフェースがあれば,
入力が楽になるのではないかということでした(つまりC-b, C-fなどでカーソルが移動できる).
テーブルの構築の際に,
外部キーに対する設定(キーが変わったときにどうするかなど)が詳しく設定できるのがすごく便利でした.
これを使えば外部キーに対する処置をアプリケーション側で設定しなくていいので使いやすいですね.
あとはプロシージャのマニュアルを見て思ったこととしては,
変数に配列を使えるのが嬉しかったですね( SQL Server にはありませんでした).
仕事の納期とレビューの締切が重なってしまい, まだアプリケーションを作っての
動作や, どこかの LAN を使っての動作などやりたいことが残ってしまったレビューとなってしまいました.
私としましては 3 つめの DB のシステム(学校で MySQL を使ったことがありますので)
となった訳ですが, その 3 つの中では最も使いやすいシステムでした. しかし,
Linux 用のユーティリティーが充実していないことが最も悔まれます.
それさえあれば初心者( DB を始めて使うという人)でも使える物になるのではない
のでしょうか???
私としての総合的な感想としては「中級者の方には使いやすく, 初心者でも使えるDB 」
ではないかなと思います.
実際私としては, このシステムをこの1年いじくりまわして面白いものでも作ろうかなと思索しているところです.
最後にこの様なチャンスを用意していただいた JLA の皆様, そしてインプライズの方々に感謝いたします.
そしてこのレビューを読んで少しでも DB に興味を持っていただけたら幸いです.
- Linux の使用歴
- 4ヶ月
- UNIX の使用歴
- 6年
- Linux Box の主な用途
- 生産管理システム用, Database Server
- Linux Box に載っている Linux 以外の OS
- Windows95(C)
- Linux と Linux 以外の OS の使用頻度の比
- 5:5
- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- Dell Optiplex-GXa(Memory 64M, HDD 4.2G, NIC 3Com First EtherLink Xl 100MB, SCSI Adapter Adaptec AHA-2940UW
- 評価に利用したLinux ディストリビューションおよびカーネルのバージョン
- 日本語 RedHad 5.2(Kernel 2.0.36)
評価させて頂き, ありがとうございました.
私どもインターテクノジャパンでは, 中小規模の C/S システム構築をする際に 最適なシステム構成を検討してまいりました. その中の1つとして, Server OS を Linux, RDBMS として InterBase5 という構成が挙がり評価をさせて頂きました. 今までの C/S というと, お決まりのように Server はUNIX(Solaris等), RDBMS は ORACLE または, WindowsNT, SQL-Server(またはORACLE)でしたが, コストパフォーマンス面, サポート面, システム運用面全てにおいて満足のいくものではありませんでした. 特に ORACLE は, 高価であり, またサポート面では非常に不快感を感じておりました. 確かにそれなりに高速な Engine ではあるし, 安定はしていましたが, 他社製品とあまりの価格差があり, 操作上も不便さを感じていました. そういった状況の中で, 安価なシステム構成を検討した結果, Linux+InterBase の構成で評価をはじめたわけです.
評価上重視した点は,
でした.
全体的な評価としては, 中小規模 C/S システム構築のRDBMSとしては”◎”だと思います. 付け加え, ご指摘させて頂くと, Linux 用のマニュアルが不十分で, 特にServerシステムの構成が送られてきたマニュアルでは分かりませんでした (Solaris や, HP の Server Module は記述されていたが, Linux 用はなかった.) Linux がこれだけ騒がれ, Serverとしても注目を浴びて行く中で, 次にユーザ及び企業が求めるものは, RDBMSです. 私どもでは, ORACLE, INFORMIX(OnLine, SE) , SQL-Server, 等の RDBMS を扱ってきましたが, InterBase は機能的に上記製品に劣る面はほとんど見当たりません. また, コストパフォーマンス的に見ると, 非常に優っているとも言えます. 現在の経済情勢, システム動向からみると, ユーザ及び企業は, "本物のシステム"を求めている. このような時代において, "安くて良いもの"である InterBase for Linux は 現在ある Linux 上の RDBMS 製品の中で1番優れていると言えると思います.
- Linux の使用歴
- 4年
- UNIX の使用歴
- 7年
- Linux Box の主な用途
- 社内サーバ, プログラミング
- Linux Box に載っている Linux 以外の OS
- なし
- Linux と Linux 以外の OS の使用頻度の比
- インターネットサーバのみLinux(Slackware3.5). 業務開発はWindows98/NTのみ.
- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- CPU:Pentium133Mhz, Memory:96M, HDD:2G+2G, NIC:AMD PCnet32
- 評価に利用したLinux ディストリビューションおよびカーネルのバージョン
- Debian2.1(slink), カーネル2.0.36
tar で解凍, スクリプトを起動するだけなので, ここまでは特に苦労するところはなかった. ただし, isql などが ncurces4.0 を必要とし, Debian2.0 には ncurces3.4 しかなかったので ncurces4.0 の入っている Debian2.1 に急遽アップグレードした. 特に必要なライブラリがあるのなら, 購入前に分かるようにしておいてほしい. Windows クライアントからアクセスすると, 妙にレスポンスが遅い. (何かのタイムアウトの後に接続しているみたい) inetd からの起動でなく, daemon として走らせたかったのだが, どうもうまくいかない. マニュアル(操作ガイド)には「UNIX へのインストール」の記述があるが, これは HP-UX と Solaris のみを対象としているようで, Linux 版とはソフト構成が違うようだ. かろうじて接続のトラブルシューティングの章に Linux の文字が出てくるくらいで, Linux 版の記述は他に見当たらない. 別紙「InterBase5 for Linux のインストールについて」にもこの点についての記述がなく, かなり迷った. ドキュメントが間に合わなかったのなら, どこを参照すればよいか, くらいは書いておいて欲しかった. 結局, /usr/interbase/doc にインストールされているリリースノート(英語)を読んで, ようやく納得はいったものの, 問題はいまだに未解決のままになっている. ( Linux 側の問題か?しかし InterClient は即時起動されるし.....)
C++Builder 付属の InterBase ツールでデータベース管理, SQL 発行まで可能なので, Windows クライアントがあると手軽に InterBase5 にアクセスできた. 現時点で一番開発効率がいいのは InterBaseServer(Linux)+クライアント(Windows) の組み合わせだろうと思う.
24 時間運用のシステム開発が多いため, システムを止めずにバックアップを行いたい局面が多い. それもできるだけシステムのパフォーマンスに影響がないことが望ましい. マニュアルにはバックアップの開始後のコミットはバックアップファイルに反映されないが, システム運用中のバックアップは可能, と書いてある. ただし, InterBase のバックアップツール (gbak) には差分バックアップがなく, フルバックアップのみのようだ. データ蓄積型で毎日のバックアップが求められるようなシステムではこれは辛いかもしれない.
試用期間が 1 ヶ月の上に仕事が忙しい時期と重なってしまったため, 十分な試用ができたとは思えないが, 今まで使ってきたどのデータベースよりもバランスはよい. 事業所数カ所くらいまでの小規模なデータベースシステムであれば十分な機能を備えている. 業務システムの開発で ORACLE などを使うとその多機能さゆえに, ORACLE を使えるエンジニアの確保に苦労したり, 開発に無関係な部分で悩んだりして時間を浪費してしまうことが多々あるが, InterBase だとそういった苦労がないだろう. ただ, もう少しドキュメント類を整備して欲しい. 今のままでは不明点を調べる手間が大きく, 手軽なリレーショナルデータベースというメリットがスポイルされてしまうように思う. 管理業務を Windows クライアントから簡単にできるというのは現時点では非常にありがたい. たとえ UNIX 素人のエンジニアでもそのまま管理業務をまかせることができるからだ. 小規模なデータベースシステムの開発が手軽にできる, 導入コストが低い, というメリットは捨てがたく, 魅力的だ.
- Linux の使用歴
- 約5年?(SLSでカーネルバージョン0.99.10の頃から)
- UNIX の使用歴
- 約7年
- Linux Box の主な用途
- プログラミング, 文書作成, メールの読み書きなど日常的な作業の全て, Webサーバ, メールサーバ, FireWallなど
- Linux Box に載っている Linux 以外の OS
- なし
- Linux と Linux 以外の OS の使用頻度の比
- 9:1
- 評価に利用した Linux BOX のハードウェア (ベンダ名, CPU, Memory, HDD, NIC etc.)
- 東芝 PORTEGE SS3010CT (PentiumMMX 266MHz/Memory 96MB/HDD 4.3GB/NIC Megahertz XJ10BT)
- 評価に利用した Linux ディストリビューションおよびカーネルのバージョン
- Debian GNU/Linux potato, kernel 2.2.5 〜 2.2.7-ac4
InterBase 5 をインストールしたのは, Debian GNU/Linux の開発版(potato)を載せたノートパソコンです. このマシンは, aptによって potato の最新状態にしてあります.
インストールは, まず製品に同梱されていた 「InterBase 5 for Linux のインストールについて」という紙に従って行ないました. ただし, 製品のサポート対象である redhat 系のディストリビューションと Debian の違いから, いくつか違う手順が必要になります.
まず, CD-ROMからInterBaseのtarアーカイブを, Debian のポリシーに従って /usr/local 以下に展開しました.
次に, apt を使って pdksh をインストールします.
# apt-get -f install pdksh
Debian では, pdksh /usr/bin にインストールされます. そのため, インストールスクリプトの1行目を
#!/bin/ksh
から
#!/usr/bin/ksh
に書き換える必要がありました.
これで,
# cd /usr/local/interbase; ./interbase/install
で問題なくインストールされます. ただし, 「ここで, /etc/inetd.conf や /etc/services を置き換えていいかと尋ねてきます」 という記述に反して, 何も聞かれずに inetd.conf と services が書き換えられていました. あとはプロンプトに従ってライセンスキーを入力すればインストール完了です. 最後に InterClient もインストールするかと聞かれるので, あわせてインストールしました. isql を使って接続テストをして, インストールが成功したことを確認しました.
この後, 同じCD-ROM を Windows を載せたPCに入れ, Windows クライアントをインストールしました. \winclnt\setup.exe を起動すると, おなじみの InstallShield なインストーラが立ち上がり, あとは指示に従うだけです.
インストール後 /usr/local/interbase を覗いてみて, 誰でも書き込めるファイルやディレクトリがあることに気がつきました. ディレクトリ/usr/local/interbase自体がそうですし, isc4.gdb のパーミッションが 0666 になっているのが非常に危険な気がしました. このファイルは InterBase 5 のセキュリティデータベースで, ユーザ情報などを保持するはずだからです.
実はこのことについては InterBase 4 を使用した時にも気になり, InterBase for Linux のメーリングリストで問い合わせたことがあります. その時教えていただいた情報では, デーモンを介さない形でデータベースに接続するために必要だということでした. とはいえ, いくら何でもセキュリティデータベースが 誰でも読み書きできてしまうのはまずいと思い, 勤務先で運用しているマシンでは chmod go-w してしまいました. これだとローカルでの接続はできなくなりますが, ネットワークの接続は問題なく行なえます.
InterBase 5 はさまざまな形でプログラムの開発を行なうことができますが, 今回は以下のプログラミングインタフェースについて試してみました.
簡単なプログラムをいくつか書いてみました. かなりプリミティブなAPIであるため, 手軽というわけにはいきませんでしたが, ちょっと書けばすぐ慣れましたし, さして難しいところはありません. もっともこれは, Oracle OCI でのプログラミングや, MySQL API でのプログラミングに慣れていたせいかもしれません.
gpre はC/C++のソース中に埋め込まれたSQL文を API を使ったコードに変換するプリプロセッサで, Oracle で言えば Pro*C にあたるものです.
一般的に言って, C/C++ で手軽にプログラムを書くには 非常に便利なものだと思います. ただ, わたしは個人的に埋め込みSQLをあまり好まないのと, Emacs での自動インデントが狂うのでほとんど使わないでしょう.
あまりな偏見かもしれませんが, Linux 上で InterBase 5 を使う際一番活躍するのがこれじゃないでしょうか. わたしは Linux 上で書くプログラムの半分以上に Perl を使っているので, 非常に重宝しています. ftp://ftp.interbase.com/pub/perl/IBPerl-07.tar.gz をもらって使いました. これは CD-ROM に同梱されていてもいいのではないかと思います.
ただし, 必ずしも安定しているわけではなく, 特定のコードで Segmentation Fault を喰らうことがありました. IBPerl のソースを眺めてみると, 初期化していないポインタを free() している箇所があったりして, なかなか怪しい感じです(笑). ソースが公開されている幸せを噛みしめながらちょこちょこと修正してみました. しばらく使ってみて問題ないようであれば, InterBase 社に修正案を送ることになるでしょう. 実は他にもメモリリークがあるらしく, 長時間稼働するスクリプトでは, プロセスが消費するメモリ量が膨れ上がっていくことがしばしばありました. この問題についてはまだ追えていません. このあたりの問題は, ユーザがまめにフィードバックしていけばすぐに改善されるものと思います.
もうひとつ残念なのは, IBPerl の API の構成が独自なものになっている点です. Perl の世界には DBI/DBD という RDBMS にアクセスするための共通 API があって普及していますし, 多くの perl プログラマはこれに慣れていると思います. できれば, DBD の形で提供された方がありがたいと感じました. もっとも, BLOB をどう扱えばいいのかなどの問題が別に発生してしまうでしょうし, 難しいところです.
時間と技術力の不足のため, ごく簡単なサンプルを JBuilder2 で開発するに留まりました. 問題なく接続でき, 日本語データも問題なく扱えました. 動作はちょっと重く感じましたが, これはクライアントマシンが非力(P5-166 Memory 96MB)だったためもあるでしょう.
普段クライアントプログラム開発使っているのがこの組み合わせです. ただし, InterBase 5 からサポートされた role を利用するためには, C++Builder3 に同梱されてきた BDE と SQLLink ではだめで, Inprise 社の Web サイトからアップデータを入手してインストールする必要があります (Inprise社の加藤様に教えていただきました).
開発は極めて簡単ですし, パフォーマンスもかなりいいと思います. この開発環境に慣れてしまうと, Linux 上でGUIなクライアントプログラムを開発する気が起きなくなってしまいます.
ひょっとすると, 普通の人はこれを使う機会が一番多いのでしょうか. わたしは全く使う機会がないため, ODBC についてはよくわかりません. 試しに Access でテーブルリンクをしようとしたらエラーになってしまったため, 投げ出してしまいました. 従って, ODBC については何も書けません(笑).
InterBase 5 for Linux は, 謳い文句にある通り, 極めてシンプルで小さく, 軽快な RDBMS だと思います. いくつか練れていないと思わせる部分もありますが, 基本的な機能, 性能は満足いきます. また, 導入の敷居が低いために, 気軽に使ってみようと思えるところがすばらしいと思いました.
最後になりましたが, この機会を与えてくださった関係者の方々に心から感謝いたします.