Top > Programmingとか > DB > DB小ネタ

昔使ってたBtrieve -知ってる?-

Btrieveって昔のデータベースシステムをご存知でしょうか。

MS-DOSがメジャーなOSだった頃。DOSはネットワーク機能を実装していなかったので、ネットワーク端末にするためにはそれ用のソフトを別に入手して組み合わせる必要がありました。

某メーカーと組んで某大学にパソコン教室を作った時、ネットワーク機能はそのメーカーの見積どおりに納品されてしまった純正のNFSモジュールを組み込んだんですけど。このNFSが、640KBしかメインメモリがない時代に200KB以上もメモリを食うというエラく傍若無人なモジュールで、ネットワークに接続している時にはワープロも起動できないくらいのメモリ不足に陥ったんですけど。
某メーカーの営業さんは「それでもよし」ってどこがよしだって喧嘩しちゃったんですけど。

そんな時代のメジャーなネットワークOSって、もぅ

Novellって会社のNewWare

がオンリーワンってゅうか寡占状態ってゅうかまぁそんな感じ。(日本の場合ね。)

ネットワークOSって呼んでましたけどね。今考えると、せいぜいOS拡張モジュール程度なもんなんだと思ぅんですけど。

で。
そんな不便な時代に高い金払ってネットワーク対応にしたいってのは、やはり

データ共有がメインの理由

なわけですよ。

今みたいにネットワーク経由でインターネットだとかの発想ってまだこの時期ないんですよ。そもそもまだインターネットなんかありませんでしたし。パソコン通信を共有できるネットワークシステムなんてのもありましたけど、当時のパソコン通信を業務でばりばり使っている業界ってさほどありませんでしたし。

建築業界ではパソコン通信による図面データのやり取りってのが当時からありました。設計図の青写真をFAXで送れるわきゃぁありませんので需要はあったんでしょうし。
JW-CADってむちゃくちゃ性能のいい製図ソフト(フリーウェアだったと思ぅんですけど…オープンソースの考え方に近かったかも)が業界内で普及してて、このやり取りはけっこうふつーに行われてました。

Win版なんかも開発されて、確か未だにメジャーなはず。

私は今現在建築業界から離れてしまっているので現状わかんないんですけど、JW-CADの入門本なんかよく書店で見かけますので、未だ業界メジャーな使われ方なのかもしれません。



いかんいかん、話を戻して。

高い金払ってネットワーク環境を整えて、しかしアプリケーション側まではネットワーク対応しているわけではないので、ファイル共有ったってろくなことができるわけではありません。

同じファイルを同時に2ヶ所で開いちゃって後勝ち更新(先に保存したデータが消えちゃう)か、せいぜい一人目がファイルをオープンした時にロックかけるか程度の制御しかできなくて。
それも読み込み直後にクローズかけちゃうタイプのアプリだとどぅしよぅもなくて。

ので。
排他制御もしっかりしてて、DOSのファイルコピーコマンドなんか打鍵しなくてもいいデータベースシステムをネットワーク上に載っけるのがまぁ主な需要だったわけです。

したらNovellだって考えますよね。

NetWareにデータベースソフトをバンドルしたら、
俺たちのシェアはますます安泰だぜ。

で、バンドルされたデータベースがBtrieve

もともとBtrieveはSoftCraft Inc.って会社のオリジナル商品だったんですけど。
1986年にNovellに買収されて。バンドルされて。で、バンドル版の後継上位バージョンとして6.10が別売りで発売されて。

バンドル版でもそこそこのことはできるけど、大規模なものやややこしいものを構築したい時はこっちを購入してねって感じで。
1994年、Novellから再独立してBtrieve Technoloies Inc.となって、1996年Pervasive Software Inc.と社名を変えて、1998年にPervasive.SQLを発売したりバージョンアップしたりで今に至る、と。

日本法人では1995年にビートリーブ・テクノロジーズ株式会社が設立されて、親会社の社名変更に伴って(てゅうかPervasive.SQLの発売に伴って、ってタイミングかなぁ)パーベイシブ・ソフトウェア株式会社に社名変更して。でも2001年に株式会社エージーテックに経営統合されちゃって。

このへん妙に詳しいのは、Pervasiveのサイト(←現在はAGTechに移管 2006.03.18)からまんま引用なんですけどわははは。

まぁ一世を風靡した割にはけっこぅ流浪のソフトウェアって悲哀を汲んでいただければ。



さて、このBtrieve

Windows3.1+VB2と組み合わせて各種データベースシステム、って環境でもよく製造納品されていたもんです。そんなもんが未だに現役だったりリプレース(ハードウェアを含むシステムの交換)時のソフトウェア再開発なんてのもよくある話で。

リプレースに伴う再開発のポイントの一つに、従来のデータを移行するってのがあるんですね。

何年も使い込んだシステムなんだもの。蓄積されているデータだって生半可じゃないっす。再開発したシステムだって同じ目的なんですから、必要になる前提情報も似たよぅなもん。仕掛(やりかけ)のデータは新しいシステムでも仕掛状態に持ってかないばなんない場合もありますしね。

VB2は16ビットのソフトウェアです。
ので、VB2から制御かけるBtrieveのモジュール側も16ビットでないばなんないわけですね。Btrieve for Windows3.1としては16ビットDLLでモジュール提供されていて、VB側からAPI直叩きって感じで操作するんです。

実は私、3年位前にもVB2→VB5に移植するシステムを手がけてまして、Win98上で無理やり動かしてデータの中身を吸い出した経験が。
今回もその手法でやっちゃえだめだっ

Win2000上ではまともに動かないっ。

いぇ、もちろんメーカーの動作保証以前の話なので、まともに動作しない点に対して関係各位にクレームをつける気はまったくないんですが。
まったく動かない、といぅわけでもなく、VB2製Pgを終了するたびにデスクトップごと1分くらいフリーズかかる程度の障害なんですが。

でも、この起動→終了するたびに1分ずつフリーズするシステムで、少しずつ環境をチューニングしてBtrieveデータを読める状況にまで持っていくのはつ、つらい。

VB2製Pgも別に私が作ったものではないので、そもそもどーいぅディレクトリ構成で動作する筋合いの設計なのかもよく把握できてませんし、10年前のパソコンPgにまともな設計書が付いていないのもよくある話で、今だって設計書なしってのはわりとあります…場末のソフト開発会社が拾ってくる仕事なんてそんなもん(T-T)。

しかも今回移行する対象データはマスタ含めて60本。
データベースシステムとしてはさほどの量ではないんですが、この環境で移行作業をするのは。

ちょっと地獄?→次号に続く?



後日余談。

先日紹介しましたWatokさんのサイト、上手にたどるといろいろおもしろいページがあることがわかりましたので、ちょっと追加でご紹介。

  • 個人的ページ
    新人研修のあたりがわたし的には楽しいです。

  • Watok's Soft Corner(←現在このページは閉鎖されています。復活超希望。 2003.05.28)
    文字でぎっしりのページを読む時に重宝するデスクトップものさし、ReadHelper。
    本サイトのコンテンツを読むには必須かも^^;。
    あらゆるウィンドウに横線が引けるので、横に長い表をたどる時にも大変便利。
しかしIME200/2002のキー設定、「ATOK」がちっともATOKじゃないっす。
どのサイトを見てもここのコンボボックス選択で「ATOKのキー操作でIMEを使おう!」なんて言ってますが、変換途中でBSキーやESCキーを押した時のカーソル位置や取り消し状態がぜんぜん違うんですけど。

この一手戻す操作の時に、ほんとに直したい個所にどれだけカーソルが近い位置にいられるか、いったん入力した文字列をいかに捨てずに修正かけていくかが編集操作のキモなんですけど。

1回ESC押しただけで入力文字列が全部消えてしまうってなんですか。
BSキー押した時に文節最後にカーソルが行ってしまう(あるいはカーソル位置で文節を分断してしまう)ってなんですか。

IME標準キー操作ならまだわかります。個人の嗜好はおいといて、「この方が作業効率がいいと主張します」って言い分もありかと。

でも、キー操作をATOK風にできますって言っといてキモの部分はIMEのままって。

いゃしかし。

なにより私がおもしろくないのは、ATOK派を名乗る方々が。IMEよりATOKの方が優れてると公言してはばからない方々が。

なぜにキー操作選択一発で納得しますか。

「派」まで名乗るなら最低限、そのくらいの編集操作は手にしみ込ませてしかるべきでしょ。その上で「IMEは使いにくい」と。言えと。うきー。

すいません言いがかりです。

どなたかそのへんまでATOKライクに設定する方法を教えていただけませんか…現在仮インストした動作確認環境で作業しているのでATOKとインストールできないんです…作業効率ぼこぼこ下がってもはや極限状態なんです…わはははは < 笑ってどぅする

トラックバック

このエントリーのトラックバックURL:
http://salv.miscnotes.com/mt/mt-tb.cgi/17

コメント

楽しく読ませていただきました。ありがとうございます。
また、現在私も大昔のBtrieve for DOS Version5.1 (FM-R DOS機)からデータを引っこ抜け!と上司に言われ四苦八苦しています。もしお分かりになるようでしたらお知恵をお借りしたく書き込みをさせていただきました。

> データを引っこ抜け!

うわぁ。

私がデータ移行したのはもう数年前ですので、今はまた状況が変わってしまっているかもしれませんが。
まあ何かのヒントにでもなれば、ということでお話しします。

Btrieveは、現在のRDBMSの一世代前、DBMSと呼ばれていたデータベースシステムだったように覚えています。

DBMSの特徴は簡単に言っちゃうと、

  どうにかこうにかデータの保存と取り出しができる
  でもその手法は各システム独自のもので互換性なんかないっ

というものです。
ですから、フィールドとかテーブルとかの概念がないシステムもありますし、SQL構文を採用せず、独自の抽出構文を持っているシステムがほとんどでした。

DBMS後期にはSQL構文を採用したシステムが出てきたんですが、当時はまだその構文が一般的ではなく、スキルを持っているプログラマなんかほとんどいませんでした、
また、実際SQLは遅かったんです。これは当時のハードウェア事情、SQLエンジンの実装の未熟さ、プログラマにSQLのスキルがないなどの要因があったんですが。

で、そういう状況下でBtrieveは一世を風靡しました。
今思うと、Btrieveのデータ管理の概念はCOBOLの「ファイル」の概念に近く、当時汎用/ミニコン/オフコンからパソコンC/Sシステムに移行する際に概念の理解から始めなくていいという点も、普及の理由としてあったかもしれません。

ので、いま時のOracle→SQL Serverのように、SQL構文採用RDBMS間でのデータ移行と同じように考えると、イタい目に遭うかもしれません。

RDBMSがテーブル→レコード→フィールドの概念を持っているのに対し、Btrieveはファイル→行の概念を持ちます。フィールドに相当する概念はありません。

ので、例えば、「山田太郎」という8バイトの行があったとします。
これを「4バイト|4バイト」で読み出すと、「氏」と「名」の2フィールドとして読みだせます。
しかしこれを「8バイト」で読み出すと、「氏名」のフィールドとして読みだせるんですね。
読み出し方の定義データは、ファイル定義とは別のところに保存していたはずです。で、ファイル1つあたりいくつもの読み出し方の定義データを用意し、用途に応じて使い分けたりできたはずです。

ですから、これを機械的にいま時のデータベースに移行することはできません。
行データをどう切り分けて読み込んでいるかを調べ、それに合わせたSQL文を用意しながら移行後のテーブルをデザインするか、もしくは切り出し方に応じて同じデータをフィールド構成の違う複数のテーブルに別々に移行する、などのリデザインが必要となります。

片手間でできることではありませんよね。
下手すると、Btrieveデータファイル群だけではなく、旧システムのソースまで追いかけないと、データをどう区切って読み込めばいいのか解析できない、という羽目になります。

---

さて、そこらへんを抑えていただいた上で。

Btrieveデータファイル群の解析とデータの吸い出しには、PervasiveSQLを使うことができます。

PervasiveSQL自体はいま時のRDBMSですが、本エントリ本文でお話ししましたように、Btrieveの流れを組んだシステムであり、Btrieveからのデータ移行機能を持つんですね。

今現在はまた少し名称が変わり、「Pervasive PSQL Summit v10」が現行製品のようです。
評価版も提供されていますので、一度試されてみるのもいいかもしれません。

  データベース関連/Pervasive PSQL Summit v10
  http://www.agtech.co.jp/products/pervasive/psql/v10/


また、バージョンは若干古くなりますが、上述サイトではBtrieveからの移行の資料も提供されています。

  Btrieve 6.15 から Pervasive.SQL 7 または 2000 へのアップグレード (PDF)
  http://www.agtech.co.jp/products/pervasive/pdf/upgradeb6_15.pdf

その他にも各種情報が提供されていますので、一度ひととおりチェックしてみるのもいいかもしれません。

  製品サポート資料ページ/Pervasive Data Management Products
  http://www.agtech.co.jp/support/reference/pervasive/dm_index.html

以上、少しでも役に立てれば幸いです。

コメントを投稿