InterBase 5 for Linux 日本語版 レビュー記事

[ ソフトウェアレビューコーナー 目次 ]

インプライズ社 様のご厚意により, Linux 対応リレーショナルデータベース, "InterBase5 for Linux" を ソフトウェアレビューコーナーあて ご提供いただきました. この製品のレビューをして頂くべく, Linux Users ML において公募を行い, これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.

ここに, レビューアの方々に書いていただいたレビュー記事を公開します.

(インプライズ株式会社は 2001/1/26 に ボーランド株式会社 へ社名変更しています。以下の内容においては、www.inprise.co.jp への リンクは www.borland.co.jp へのものに変更し、文章そのものには 修正(更新)は加えておりません)

インプライズ社 様および レビューアの皆様のご厚意に感謝いたします.


Reviewed by 馬場 二郎 (jbaba@amy.hi-ho.ne.jp) さん

「小中規模の C/S DBMS としての機能は十分.運用は際立って簡単」

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 と比べると, リモート管理がとても楽です.


Reviewed by 西尾 哲郎 (gec00601@green.ocn.ne.jp) さん

「出来は良いので今後への期待が大きい」

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.)
  1. M/B:AMI_TITAN2,CPU_Pentium(90MHz)*Dual,Memory_96MB
  2. SCSI:AHA-2742,NIC:3C579
  3. HDD(hda):IDE_1G(PC-DOS7:200M,LinuxSwap:16M,LinuxNative:800M)
  4. HDD(sda):SCSI230M(LinuxNative:230M)
  5. HDD(sdb):SCSI4.3G(LinuxNative:1G+1G+1G+1.3G)
  6. CD-ROM:hdc(IDE*16 倍速),scd0(SCSI*2 倍速)
  7. パーティッションの使い方: hda1:PC-DOS7,hda2:LinuxSwap,hda3:Vine(/),
    sda(Linux のテンポラリ), sdb1:Vine(/usr),sdb2:Vine(/home),sdb3:CalderaOpenLinux1.3(/)
評価に利用した Linux ディストリビューションおよびカーネルのバージョン
  1. Slackware3.5 + kernel 2.2.3
  2. Vine Linux1.0β + kernel 2.2.3 (2.2.5)
  3. Caldera Open Linux1.3 + kernel 2.2.3 (2.2.5)

評価結果概要

インストールについて(Slackware3.5)

VineLinux からライブラリを取り込み glibc2 化をしたつもりで, インストールを試みるがライブラリの不足を指摘されるエラーの多さに困惑しギブアップ. (慣れ親しんだ Slackware に, しばしの別れを告げた) (slackware3.5 の glibc2 化はインストール済みのアプリケーションの隅々まで 気を配りながら進めることを推奨します. glibc2 化の途中, Netscape が起動できなくなったりしました. )

インストールについて(VineLinux1.0β)

雑誌から入手し, 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 コマンドで動作チェックできると, かなりインストール後のチェック(問題のきり分け)が楽になると思う.

インストールについて(Caldera Open Linux 1.3)

まず, ディストリビューションの 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 ユーザ)からは好感が持てる.

(当面の本命版)Vine Linux1.0βでの使用感について

データベースの評価にまず必要なもの, 「データの整合性確認できているデータ」を InterBase5 に読み込ませようとしたところ*大変に*苦労してしまった. なぜか? 私のもっているデータは専用ツールのデータ以外, 「可変項目, 可変長,”,”区切り」のAWKで取り扱える(取り扱いやすい) テキストファイルに変身してしまっていたのである.
これを, InterBase が読み込める 「固定長テキスト」に置き換えることに時間を費やしてしまった. (最終的には, 読み込みも正しく出来たのは「郵便番号簿」だけ) 評価用のサンプル DB を作るのに時間を要してしまった.

ODBC 経由でのアクセスについて

localhost 内で isql コマンドでのアクセスに問題がなければ, ODBC 経由でのアクセスも特に問題なく「接続はできた」. しかし, LinuxBOX での文字コードをEUCにしており, WindowsNT 側で(正しくは)表示してくれない. どこかで文字コードの変換を行う必要がある. 現状デフォルトで提供されるツール・関数では文字コードの変換をしてくれないようなので, プログラマーが苦労することになるだろう. (変換関数が用意されているのだったら, 私の探索不足です. すみません)

他のツールとの比較について

PostgreSQL95 と比較すると, 体感的には早い. (双方に index を作成した場合には, その差は体感は出来なかったが, 複雑なテーブルのリレーションになれば差が出てくると思う) InterBase5 が使用するデータファイルの大きさは大きい!, 可変長をうまく使えば小さくできるかもしれないが最適化の時間は今回とれなかった.

ここまでの総評として

当初から, glibc2 が要求されており, Slackware での評価は無謀であるが, Caldera Open Liux1.3 はディストリビュータ (Caldera) の Web でも glibc2 化について記述があり正常動作するのが妥当だと思われる. しかし, 現実には?な結果しか得られなかった点は商用パッケージとしてはまずい. (と思うが, 稼動 OS は RedHat しか記載してないのだから, まぁ良いか!?)

余談

  1. インストールについては, 問題は比較的少ないツールだと思うが, rpm 形式にするなど, 一層の工夫が必要と思う.
    1. PC-UNIX のようにユーザーによる環境変化が容易である場合, RDBM としての機能を満たすために必要な library を含めた形で package 化することで, ユーザー環境に影響されない「頑強な」システム構築が可能になると思われる.
      (DebianGNU/Linux の dpkg を採用するか?)
    2. tar ボールの採用に付いては, (FreeBSD まで含めた)全ディストリビューションに適用できる package 形式であるが, glibc2 を要求する場合, それはメリットでなくデメリットになる. 出来れば, tar のまま, 全ディストリビューションへのインストール可能な package にして頂きたい.
  2. 動作確認に付いては, インストール直後に isql でのチェックとか, ping でネットワーク的に接続できているか確認するだけでなく, ネットワーク経由 telnet コマンドで対話的にデバッグできる手段がほしいところである.
    ネットワーク経由で使用するツールの場合, ローカルでは正常, ネットワークも正常, ただしネットワーク経由での使用だけ?な場合があり, ネットワーク経由でのデバッグ手段は是非用意していただきたい.
  3. 他のデータベースからの移行を考慮したとき, 互換性を保つ方法が固定長テキストファイルだけ, では移行する気が萎えてしまう. 可変長,"," 区切りのデータが読み込めるようにしていただきたい.
  4. マニュアルについては, Windows 版と UNIX 版が混在して書かれており, 読みにくい印象を持った. また, on-line pdf 版マニュアルは, 紙のマニュアルと同一内容だが, せっかくの電子化マニュアルでありマニュアル間の関連項目へのリンクなど, 工夫していただきたい.
    また, マニュアルには UNIX 版サーバ管理ツールとして, "ibmgr" という記述があるが, 私の環境では, インストールされなかった. どこにあるのだろう?
  5. 今回は, 時間的制約 (もっぱら, ディストリビューション間の移動に費やされてしまった)から, プロシージャの評価までたどり着けなかったが, 継続して評価させていただきたい.
  6. 今回, JBuilder2 も提供していただいたが, 第一印象”遅い!”. 従来, Borland のツールといえば Delphi3, C++Builder のイメージを持っていたので, このスピードにはついていけない.
    i8086(8MHz) の時代の TurbobPascal がまだ早かった (記憶の世界だから美化しているかもしれないが). どれをとっても, 私の WindowsNT(Dual Pentium133MHz, Mem80MB) には荷が重すぎるようである.
    また, Borland のツールといえば役立つ Help が付いていたものだが, JBuilder2 のオンラインヘルプは, 読みこなすのに苦労しそうである. (help ファイルにサンプルソースを添付するのは止めてしまったんですか?)
  7. InterBase5 のモニターを行うことが決まってから, 本屋さんを渡り歩いたが, InterBase 関連の書籍の数の少なさに驚いてしまった (Borland のツール群は書籍も多いが). やはり, 市場の認識は, Borland=開発ツールメーカかもしれない.

Reviewed by 渡辺 広人 (h-wata@ff.iij4u.or.jp) さん

「操作感は軽くて良いが, セキュリティ面があまい様に感じた. 」

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

1. はじめに

DB の選定ポイントには, 安定性・生産性・パフォーマンス等沢山あると思いますが, 今回は本番稼働後のシステム運用の観点から InterBase 5 for Linux をレビューして 行きたいと思います. すなわち InterBase5 の特徴としてあげられている, 「No DBA の RDBMS」中心にをレビューすることとします.

テスト条件

今回はテストデータとして以下を用意しました.

ジャーナルデータ 83byte/Record 100万件程度
マスタデータ1 305byte/Record 2946件
マスタデータ2 81byte/Record 2694件
マスタデータ3 181byte/Record 150件

サーバ・クライアント環境共に, 同一マシン上に構築.

2.インストール

製品添付のインストール手順に従い特に問題なくインストールできました. (インストールは, Vine-1.0Beta で行った. 一部 shell がエラーを吐いたが特に 問題無し. Vine-1.0R でもエラーが出るかは未確認. )

   
     [エラーメッセージ]
     ./interbase/install: /etc/bashrc[27]: bind: cannot bind, not a tty
     

3. Database構築

データベースの作成やテーブルの作成に関しては, 標準規格と言うだけあり, 他の RDBMS と SQL レベルでは大差無い. しかし外部ファイルのインポートを行うツールが無く, 固定長テキストファイルを外部テーブルとして作成し, 外部テーブル〜内部テーブルのコピーと言う形でのみ提供されている.

4. InterBase 5 のファイル構造に関して

InterBase5 のファイル構造は, rollback やテンポラリ等の表領域を分けて作成することができない. ファイル分割を行うことは可能であるが, 機能毎に分割するのではなく, 1つめのファイルがオーバーフローしてから2つ目のファイルを使用する事になる. この点は I/O を分散させて性能向上を計る事ができない事を意味する. 逆にデータベースをファイルシステムとしてバックアップすることは容易になる.

5. DBA の作業について

6. 使用感

今回レビューに使用したレベルのマシン性能では, 100 万件程度のデータベースの運用には十分実用になると感じた. 現在職場で使用している, WindowsNT P6-200 Dual + Raid5 Disk + Oralce8 で同一条件の処理と比較しても, さして違和感は感じなかった. しかし, データベースのチューニングを行える要素が少なく, 大規模データベースには少々無理があるように思えた. ターゲットとなるのは, 小・中規模, もしくは部門サーバのような使われ方のように感じた.


Reviewed by 中山 雅文 (masa@fureai-ch.ne.jp) さん

「インストール,使用とも簡単で使いやすい RDBMS だと思います」

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 のような気がします. 以上,拙い文章ですが,まずはレビューの報告をさせていただきます.


Reviewed by 林 智史 (s1061123@u-aizu.ac.jp) さん

「Linux用のユーティリティーがもっと充実してほしかった」

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冊のマニュアルが入っていました. ではその紹介と私が思ったことを一挙紹介しましょう.

InterBase5.5 操作ガイド
紹介:この InterBase の機能の概要, クライアント・サーバーの概念など このソフトウェアの一般的な内容を記しています.
思ったこと:このマニュアル自体は InterBase5.5 for Linux の為のマニュアルではなく Windows95,WindowsNT,Solaris, HP-UXについての情報しかないみたいで, マニュアルの中にLinuxという単語は全くでません. ちなみに私はこの中では isql というユーティリティーの使い方を調べる以外は使っていません.

InterBase5.5 データ定義ガイド
紹介:データ定義と書いてありますが, それは全くの嘘. これはデータベースの作成, 管理について書かれています.
思ったこと:これはいいです!!すばらしい!ボーランドの Turbo C の マニュアルが読みづらくて, あきらめてしまった私でもしっかりと理解できる程, ユーザのことを考えて作っていますね. タイトルをデータベース構築ガイドとか分りやすいタイトルにしてほしかったです.

InterBase5.5 言語リファレンス
紹介:DB をいじくるには必要不可欠の SQL 言語についてこの DB が対応している SQL 文について書かれています.
思ったこと:エラーメッセージ集があるのはエラーを出しやすい私にとってかなり活用できました. あと SQL のリファレンス各々に例があったのは私としてはとても嬉しかったです. SQL の機能については後述します.

InterBase5.5 API ガイド
紹介:プログラムでこのデータベースに接続するために必要な C のライブラリに ついての紹介です.
思ったこと:私はまだタコなプログラマーなので, 使っていません(笑). だけれど InterBase にある JAVA の InterClient について全然マニュアルには書いていないみたいですが, マニュアルをコンピューターの隣に置きながらプログラムする人も多いでしょうから本当は付いてきてほしかったですね.

InterBase5.5 プログラマーズガイド
紹介:InterBase の SQL についての使い方が書かれています.
思ったこと:これは SQL のプログラマーにとっては便利な物の1つですね. かなり詳しく書いてあります.

以上がマニュアルの紹介でした.

インストールについて

ではインストールです. ソフトウェアに付属していたインストールの仕方という紙を見てみます. (ちなみにこれはインプライズのページにあります. インストール の仕方) それによると 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 に興味を持っていただけたら幸いです.


Reviewed by インターテクノジャパン(有) (intec@icon.pref.nagano.jp) さん

「中小規模の C/S システム構築に最適な RDBMS である」

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)

1. はじめに

評価させて頂き, ありがとうございました.

私どもインターテクノジャパンでは, 中小規模の C/S システム構築をする際に 最適なシステム構成を検討してまいりました. その中の1つとして, Server OS を Linux, RDBMS として InterBase5 という構成が挙がり評価をさせて頂きました. 今までの C/S というと, お決まりのように Server はUNIX(Solaris等), RDBMS は ORACLE または, WindowsNT, SQL-Server(またはORACLE)でしたが, コストパフォーマンス面, サポート面, システム運用面全てにおいて満足のいくものではありませんでした. 特に ORACLE は, 高価であり, またサポート面では非常に不快感を感じておりました. 確かにそれなりに高速な Engine ではあるし, 安定はしていましたが, 他社製品とあまりの価格差があり, 操作上も不便さを感じていました. そういった状況の中で, 安価なシステム構成を検討した結果, Linux+InterBase の構成で評価をはじめたわけです.

2. 評価の基準について

評価上重視した点は,

  1. RDBMS の機能上他の製品と同等の機能をもっている事
  2. データの検索速度 (あまり多くの更新が想定されないシステムである為)
  3. 運用設定のし易さ (技術者からみて, オモチャのような WindowsNT ではない事)
  4. クライアントとの相性(AP 開発の際)

でした.

3.マシン設定

 
  1. インストール
    サーバー側(Linux)のインストール & 動作確認は,非常にスムースにいった. 付属してきた, 1枚紙の "InterBase5 for Linux のインストールについて" を参照しただけで, "employee.gdb"の内容まで確認できた. ( install shell の cdrom ドライブの mount point は変えました) クライアント側 (Windows98)の, InterBase Windows ISQL 等のインストールについては, setup プログラムを実行するだけで OK でしたが, 動作確認をしようと思い, ISQL で接続をしようとしましたが, うまくいかず, Server の問題かと思いましたが操作ガイドで Linux の Server module に関して記述されておらず,悩みました. というのは,マニュアルに記述されているの UNIX deamon の ibmgr が見つからなかったのです. (結局 Linux 上の deamonは gds_inet_server でした)
  2. テストデータのインポート
    Interbase にはインポートツールがありませんでしたので, text データを awk で編集し, INSERT 用の schema を作成した. テストデータは, A Table 約400,000件, B Table 約300,000件, 各々の行長は 120Byte 150Byte であり, A Table を 100,000 件毎の schema に分け, isql [database name] -i a1.sql のような形で 4 プロセス同時にインポートをした. その結果, 約 7 分で全てのデータが正常にインポート (INSERT) され, INSERT 処理の速度には大変満足しました.当然インポート中は, トランザクション処理されており, 100,000 件全ての INSERT が終了した時点で commit された.

4. 評価

  1. RDBMS の機能上他の製品と同等の機能をもっている事
    現在のシステムでは,通常の SQL (SELECT, INSERT, UPDATE, DELETE) の他に, trigger, PL, レプリケーション機能は最低限必要とされる. その機能についてサンプルを含め一通り実行してみたが, 他の製品と同等の機能があり問題はなかった. 他の製品にはなく, 特に注目したのが, 外部関数呼び出し機能(UDF)である. 詳細はテストできなかったが, これは開発者にとって非常にありがたい機能であると感じた.
  2. データの検索速度
    とにかく速い.よく使用される項目にINDEXを作成し,UNIQUE検索をしてみたが, 400,000 件レベルでは即時応答のレスポンスであった. GROUP 検索については,若干遅さを感じた.特にSUMを使用するケースでは, 早いとはいえない.
  3. 運用設定のし易さ(技術者からみて,オモチャのようなWindowsNTではない事)
    OSをLinux という時点でその答えは出ているのだが,特にバックアップ, レプリケーション機能面から考えると, database ファイル1つを対象にすればよいので, 非常に運用し易い.(セキュリティDBは除く)
  4. クライアントとの相性
    現在の多くのシステム構成がクライアント OS に Windows95/98 を使用している 事から考え, 開発 Tool が弱いと感じた. というのは, 自社製の Delphi や, C++Builder は,よくサポートされており,多くの開発実績がありそうだが, MS 製の VB, Access, VisualC++ 等はサンプルもなく, 開発実績も少なそうだ. ODBC に関しては, ACCESSから外部 Table 結合で内容参照したのだが, 遅くて使いものにならなかった. 結果, API を使用し, VC++からのアクセスを使用する事にしたのだが,時間が足りず 現在もテスト中の段階.

5.総評

全体的な評価としては, 中小規模 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番優れていると言えると思います.


Reviewed by 金子篤史 (akaneko@ccell.co.jp) さん

「Windowsクライアントとの親和性が非常によく, 導入コストの低さが一番魅力的に思えた」

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 素人のエンジニアでもそのまま管理業務をまかせることができるからだ. 小規模なデータベースシステムの開発が手軽にできる, 導入コストが低い, というメリットは捨てがたく, 魅力的だ.


Reviewed by 備前 達矢 (bizenn@ceres.dti.ne.jp) さん

「手軽でパフォーマンスもよく, 開発もしやすいが, 練れていない部分も散見される」

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

1. インストール

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 なインストーラが立ち上がり, あとは指示に従うだけです.

2. ファイルのパーミッションについて

インストール後 /usr/local/interbase を覗いてみて, 誰でも書き込めるファイルやディレクトリがあることに気がつきました. ディレクトリ/usr/local/interbase自体がそうですし, isc4.gdb のパーミッションが 0666 になっているのが非常に危険な気がしました. このファイルは InterBase 5 のセキュリティデータベースで, ユーザ情報などを保持するはずだからです.

実はこのことについては InterBase 4 を使用した時にも気になり, InterBase for Linux のメーリングリストで問い合わせたことがあります. その時教えていただいた情報では, デーモンを介さない形でデータベースに接続するために必要だということでした. とはいえ, いくら何でもセキュリティデータベースが 誰でも読み書きできてしまうのはまずいと思い, 勤務先で運用しているマシンでは chmod go-w してしまいました. これだとローカルでの接続はできなくなりますが, ネットワークの接続は問題なく行なえます.

3. プログラミング

InterBase 5 はさまざまな形でプログラムの開発を行なうことができますが, 今回は以下のプログラミングインタフェースについて試してみました.

3.1. C/C++ API プログラミング

簡単なプログラムをいくつか書いてみました. かなりプリミティブなAPIであるため, 手軽というわけにはいきませんでしたが, ちょっと書けばすぐ慣れましたし, さして難しいところはありません. もっともこれは, Oracle OCI でのプログラミングや, MySQL API でのプログラミングに慣れていたせいかもしれません.

3.2. プリコンパイラ gpre を使ったプログラミング

gpre はC/C++のソース中に埋め込まれたSQL文を API を使ったコードに変換するプリプロセッサで, Oracle で言えば Pro*C にあたるものです.

一般的に言って, C/C++ で手軽にプログラムを書くには 非常に便利なものだと思います. ただ, わたしは個人的に埋め込みSQLをあまり好まないのと, Emacs での自動インデントが狂うのでほとんど使わないでしょう.

3.3. IBPerl

あまりな偏見かもしれませんが, 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 をどう扱えばいいのかなどの問題が別に発生してしまうでしょうし, 難しいところです.

3.4. InterClient

時間と技術力の不足のため, ごく簡単なサンプルを JBuilder2 で開発するに留まりました. 問題なく接続でき, 日本語データも問題なく扱えました. 動作はちょっと重く感じましたが, これはクライアントマシンが非力(P5-166 Memory 96MB)だったためもあるでしょう.

3.5. BDE + SQLLink + C++Builder3

普段クライアントプログラム開発使っているのがこの組み合わせです. ただし, InterBase 5 からサポートされた role を利用するためには, C++Builder3 に同梱されてきた BDE と SQLLink ではだめで, Inprise 社の Web サイトからアップデータを入手してインストールする必要があります (Inprise社の加藤様に教えていただきました).

開発は極めて簡単ですし, パフォーマンスもかなりいいと思います. この開発環境に慣れてしまうと, Linux 上でGUIなクライアントプログラムを開発する気が起きなくなってしまいます.

3.6. ODBC

ひょっとすると, 普通の人はこれを使う機会が一番多いのでしょうか. わたしは全く使う機会がないため, ODBC についてはよくわかりません. 試しに Access でテーブルリンクをしようとしたらエラーになってしまったため, 投げ出してしまいました. 従って, ODBC については何も書けません(笑).

4. 最後に

InterBase 5 for Linux は, 謳い文句にある通り, 極めてシンプルで小さく, 軽快な RDBMS だと思います. いくつか練れていないと思わせる部分もありますが, 基本的な機能, 性能は満足いきます. また, 導入の敷居が低いために, 気軽に使ってみようと思えるところがすばらしいと思いました.

最後になりましたが, この機会を与えてくださった関係者の方々に心から感謝いたします.


[ ホーム | マップ | ニュース | 検索 | ドキュメント | リンク | プロジェクト ]
このサイトに関するご意見・ご要望は Webmasters までお願い致します.