| 取得 | |
|---|---|
| パラダイム | 命令形、宣言形 |
| 家族 | dBASE |
| デザイン: | アーデン・スコット |
| 開発者 | リチャード・ムーア |
| 初登場 | 1971年 (1971年) |
| 実装言語 | フォートラン |
| プラットフォーム | SDS 940 |
| ライセンス | 独自の |
| 影響を受けた | |
| dBASE、JPLDIS、RECALL、その他多数 | |
RETRIEVEは、1971年8月からTymshareのシステムで提供されてきたデータベース管理システム(DBMS)です。SDS 940上でTymshare独自のSUPER FORTRANで開発されました。対話型プログラミング言語を用いて、基本的な単一ファイルの非リレーショナルデータベース機能を提供しました。これは、サービスとしてのソフトウェア(SaaS)の最も初期の例の一つです。[1]
RETRIEVEは大きな影響力を持ち、比較的類似したクローンが数多く誕生しました。Wang LaboratoriesのWang 2200 ミニコンピュータ用RECALLはRETRIEVEとほぼ同一で、その違いは1ページにまとめられているほどでした。JPLは1973年にUNIVAC 1108向けにJPLDISとして知られるバージョンを開発しましたが、これも非常に類似していました。
長年JPLの契約社員として働いていたウェイン・ラトリフは、JPLDISに触発され、自身のフットボールプールの管理にJPLDISをIMSAI 8080に移植し、後にCP/M向けのVulcanとして1979年に商用リリースしました。アシュトン・テイトはVulcanのライセンスを取得し、1980年にdBASE IIとして再リリースしました。これがマイクロコンピュータデータベース市場の火付け役となりました。RETRIEVEのオリジナルの構文の大部分は、dBASEや、 21世紀まで生き残っている 多くのxBASEクローンにもそのまま残っています。
歴史
1969年、Tymshareのジム・ライアンはIBM System/360 Hレベル(258 kB)FORTRANの拡張版を設計し、文字列処理などの機能を追加することで、 SDS 940システムの性能を活かすことに成功しました。ライアンはリチャード・ムーアとフランク・ブラッチャーを雇い、これをSUPER FORTRANとして開発し、1970年に彼らのシステムで稼働させました。[a] SUPER FORTRANのリリース後まもなく、アーデン・スコットはムーアに、自身の構想であるデータベース管理システム(DBMS)の開発にSUPER FORTRANを使用するよう依頼しました。最初のバージョンは数週間で完成し、Tymshareの顧客の間ですぐに好評を博しました。[1] [b]
1970年代、TymshareはシステムをSDSからPDP-10プラットフォームに移行し始め、最終的にはTOPS-10を稼働させました。これをきっかけに、このプラットフォーム向けに全く新しいデータベースエンジンであるMAGNUMを開発する取り組みが始まりました。MAGNUMは完全なリレーショナルデータベースエンジンであり、多くの文献では1975年10月に稼働を開始した際に商用化された最初のシステムであると主張されています。[3] Tymshareの顧客と社内ユーザーのほとんどはMAGNUMに切り替えましたが、この時点でRETRIEVEはすでに多くのプラットフォームに移植されており、これらのバージョンは社外で依然として高い人気を誇っていました。
1970年、ジェット推進研究所(JPL)はUNIVAC 1108を3台導入しました。フレッド・トンプソンはJPLの機械式計算機データベースの管理にRETRIEVEを使用していましたが、1108の導入に伴い、このシステムを社内に導入することを決定しました。1971年、彼はJPLのプログラマー、ジャック・ハットフィールドと共同でJPLDISを開発しました。ハットフィールドは1974年にJPLを去り、プロジェクトは別のJPLプログラマー、ジェブ・ロングに引き継がれ、彼はいくつかの機能を追加しました。[4]
1973年には、カセットテープストレージを搭載したデスクトップミニコンピュータ、 Wang 2200が発売されました。[5] RETRIEVEはRECALLという名前でこのプラットフォームに移植されました。米陸軍向けの報告書では、これらの違いが1ページにまとめられており、「2つの実装の違いは非常に小さい」と結論づけられています。[6]
ウェイン・ラトリフはJPLで契約社員として働いていた頃、社内のフットボールプールに参加した。彼はフットボール自体には興味がなかったが、新聞に掲載されている試合後の統計データを処理すればプールで勝てると考えた。これを実現するために、データベースシステムを探し始め、偶然JPLDISのドキュメントを見つけた。彼はこれを基に、自作のIMSAI 8080マイクロコンピュータにPTDOSを移植し、完成したシステムを「スタートレック」のミスター・スポックにちなんで「バルカン」と名付けた。後にCP/MがS-100バス市場でほぼ普及すると、このシステムはCP/Mに移植された。[7]
1980年、ジョージ・テイトはVulcanが49ドルで販売されている広告を目にしました。[8]彼はラトリフとライセンス契約を結び、バージョン2に似た名前をdBASE IIと改名し、695ドルで発売しました。このシステムは成功を収め、1981年にはIBMがまだリリースされていなかったPC DOSへの移植を依頼しました。[9]これは大成功を収め、 Word PerfectとLotus 1-2-3と並んで、初期のDOS市場におけるオフィススイートに相当する3大パッケージの一つとなりました。[10]
説明
基本操作
RETRIEVEは非リレーショナルデータベースであり、その概念は1970年まで導入されていませんでした。RETRIEVEデータベースは、単一のファイルに格納された単一のテーブルで構成され、通常、ファイル名にはデータベース名の短縮形が使用されていました。テーブル構造はデータベース作成時に定義され、文字、整数、または自由形式の数値入力フィールドを使用できます。[11]データベースは最大98個のフィールドを持つことができ、フィールドあたりの最大文字数は72文字、1行の合計文字数は768文字(256語)でした。フィールド名は文字で始まり、文字、数字、ピリオド、@記号を含めることができ、最大31文字まで使用できます。[12]
システムは対話型で、ユーザーとの対話にはシステム内のコマンドプロンプトが使用されていました。 [13]例えば、新しいデータベースを起動するには、ユーザーはCREATEコマンドプロンプトに と入力し、データベース名の入力を求められます。続いてフィールド定義の入力を求められます。空行を入力すると、このプロセスは停止し、データ入力モードに移行して行を入力できるようになります。[14]CREATE EMPLOYEESこの操作のどのステップも、元のコマンドにデータを入力するだけで省略できます。例えば、の代わりに と入力するとCREATE、システムはファイル名の入力を求めなくなります。[15]
中に指定できるデータベースファイル形式は3つあり、CREATE通常の文字形式SYMBOLICはBINARY24ビットベースの内部形式で数値を保存し、SCRAMBLEDユーザーが指定したパスワードでファイルを暗号化します。[16]
LOAD既存のデータベースは、またはを使用してロードされましたBASE(これらは同等です)。[17]データは変更されると保存されましたが、SAVEデータ(またはその選択範囲)をフラットファイルに書き出すコマンドもありました。[18] QUITシステムを終了し、基盤となるオペレーティングシステムに戻りました。[17]
データの取得
データベースが定義され、データが入力された後、または既存のデータベースがロードされた後、 を使ってデータを表示できますLIST。パラメータを指定しない場合、すべてのレコードは入力された順序、つまり行の先頭に印刷される「RECNO」に従って出力されます。 のように、フィールドリストを指定して出力内のフィールドを選択し、並べ替えることもできますLIST EMP.NUM,NAME,SALARY。 このPRINT文は とほぼ同じように動作しますが、行の先頭にRECNOが印刷されないという点のみが異なります。[19] FASTは と似ていますPRINTが、フィールドヘッダーも抑制します。[18]
個々のレコードは、「レコード番号アドレス指定システム」を使用して選択できます。これは、LISTまたはの前に付加されますPRINT。これは柔軟な形式で、コンマで区切られた単一のRECNO、またはコロンで区切られた範囲のRECNOの両方を指定できます。例えば、はレコード1、7から20まですべて、そして50を出力します。また、最後のレコードを表す1,7:20,50 PRINT疑似レコードも含まれているため、 100以降のすべてのレコードが出力されます。[20]$100:$ LIST
構文を使用して、内容に基づいて特定の基準を満たすフィールドによってレコードを選択することもできますFOR。給与が 40,000 ドルを超えるすべての従業員を一覧表示するには、 を使用しますPRINT FOR SALARY>40000。同じ構文を使用して、たとえば RECNO ではなく、内容に基づいて単一のレコードを選択することもできますLIST FOR NAME="Bob Smith"。[21] [c] RETRIEVE はすべての基本比較をサポートしており、不等号には 、 、 、 、および が使用できました。これは当時の BASIC に見られました。=珍しく<、>RETRIEVE<=は従来の比較の英語拡張も含まれているため、または を使用できます。このような式には、乗算には 、 、除算には 、累乗には などの基本的な数学的演算も含めることができます。[22]これらはさらに、およびを使用してブール式と組み合わせることができます。[21]>=#SALARY>40000SALARY GREATER THAN 40000+-*/↑ANDORNOT
さらに、、およびは、SUMレコード選択の概念を含め、またはと同様に動作します。名前が示すように、これらは関連する値とともに単一の値を出力します。例えば、は1を返す可能性が高いのに対し、は42500を返す可能性があります。[23]COUNTAVERAGELISTPRINTCOUNT FOR NAME='Bob Smith'AVERAGE SALARY FOR SALARY>40000
LIST/ PRINT/に加えてFAST、出力文として がありますREPORT。これは同様の動作をしますが、出力を整形するためのオプションがいくつかあります。単独でも、上記のように修飾子を付けて呼び出すこともできますが、使用すると対話モードに入り、出力先(Tはターミナル)、シングルスペースかダブルスペースか、ヘッダーや合計を含めるかなど、いくつかの質問が表示されます。[24]
データの変更
DELETEレコードは、上記と同じレコードセレクタまたはフィールド式を使用して、 ステートメントを使用して削除できます。新しいレコードは を使用して挿入されますAPPEND。APPEND FIELDSは対話型モードに入り、ユーザーはカンマ区切りの値を行ごとに入力するのではなく、フィールドごとに追加レコードを入力できます。[25] は APPEND FROM filename、カンマ区切りのテキストファイルから、メモリ内に既に存在する現在のデータベースにデータを読み込みます。[26] MERGEは既存のレコードを更新するために使用されました。これは と同様に動作しAPPEND、別のファイルから現在のデータベースにデータを読み込みますが、この場合は追加の修飾子 が含まれますON。例えば、MERGE ON NAME FROM ADDRESSESはファイル ADDRESSES からデータを読み取り、そのファイル内で最初のエントリが "NAME" である列を検索します。次に、ファイルを行ごとに処理し、データベース内でその NAME を持つエントリを検索し、残りのフィールドを ADDRESS のその行のデータで更新します。[27]
RETRIEVE は、既存のレコードを更新するための 2 つの対話型メソッド、CHANGEおよびをサポートしていましたREPLACE。は、REPLACE現代のSQLに相当する と同様に動作し、UPDATE何らかのセレクタ式、1 つ以上のフィールド、および新しい値を受け取ります。たとえば、 が考えられますREPLACE SALARY=SALARY*1.05 WHERE YEARS.EMP>5。[28]は最終的にはCHANGE同じことを行いましたが、対話型モードを使用して行いました。CHANGE新しい値なしで呼び出されたものは、たとえば ですCHANGE FOR 'Bob Smith' IN NAME。システムはその行を出力し、ユーザーがレコードを編集できるようにしました。[29]のように一意の値が複数ある場合、CHANGE FOR YEARS.EMP>5各値は別の行に出力され、変更は一致するすべてのレコードに送信されました。[30] MODIFYは と基本的に同じですCHANGEが、最初に既存の値を出力しませんでした。[31]
ソートは検索時には行われず、データベースを修正し、その内容をソート順に書き換えることで実装されました。これはSORT BY、最大20個のフィールド名を後に続けることで実現されました。元のソートされていないデータはバックアップファイルに書き込まれます。[32]
このRESULTS TO修飾子は、任意のデータ変更文と組み合わせて使用することで、結果を新しいデータベースにリダイレクトできます。例えば、APPEND FROM FEBSALES RESULTS TO CURSALESFEBSALESファイルのデータを現在のデータベースに追加し、既に開いているデータベースを更新せずに結果をCURSALESに保存します。あるいは、 のように記述することもできますSORT BY NAME RESULTS TO SORTEMP。[33]
その他のコマンド
ユーティリティコマンドには、データベーススキーマSTRUCTUREを出力するコマンドや、レコード数を返すコマンドなどが含まれていました。[34]SIZE
RETRIEVEのプログラミング
RETRIEVEは対話的に使用されることが多かったが、システムにはコマンドリストをファイルに保存して再生する機能も含まれていた。[35]コマンドファイルには、任意の文字列を出力する、コマンドプロンプト(ピリオド)を非表示にする、プロンプトを再び表示する、端末に再生画面が表示されないようにするなど、TYPE 'a string'他の多くの「ヘルパー」ステートメントも含めることができた。 [36]HUSHTALKECHO ONECHO OFF
これらのコマンドファイルは、DO filename内部コマンドライン[37]またはCOMMAND filenameRETRIEVEの外部、EXECUTIVE [38]から実行されました。スクリプトの最後にユーザーをRETRIEVEモードに残したい場合は、COMMAND T最後にターミナルを「実行」するコマンドを追加することで、次に何が起こるかを指定することができます。スクリプトは複数のコマンドを組み合わせて、COMMANDより複雑なワークフローを形成することもできます。[35]
ファイル内のコマンドを実行すると、ユーザーが入力した場合と同じように動作します。つまり、通常は追加のユーザー入力を必要とするステートメント(例えば、CHANGEパラメータのない )が指定された場合、通常通り対話型モードが呼び出されます。これにより、コマンドファイルはユーザーベースの入力を呼び出し、追加の指示を実行できるようになりました。例えば、 を使ってREPLACE ALL WEEK.SAL=SALARY/52最近の給与の変更を取得し、 を使ってCHANGE HOURS各従業員の記録を表示させて週の勤務時間を尋ね、次にREPLACE ALL PAY=HOURS*WEEK.SAL全ユーザーの週給を計算し、最後にREPORTそれをすべてプリンターに送信するといったことが可能です。[39]
dBASEとの比較
ほぼ10年の歳月が経ち、4つのプラットフォームを跨いでいたにもかかわらず、DOS版のdBASEはRETRIEVEと非常によく似ていました。ラトリフは「RetrieveからJPLDIS、そして私がVulcanと呼んでいた私のプログラムへと、ある種の進化があった」と述べています。[40] AutoCADでよく知られるジョン・ウォーカーもJPLDISを使用しており、「アシュトン・テイト・データベースシステムであるDBase IIは、ジェット推進研究所で開発されたJPLDISというパッケージのコピーであり、再実装されたものである」と断言しています。[41]
LOAD/BASEは変更されUSE、フィールド名のピリオドはコロンに置き換えられましたが、数値形式など、基盤となるプラットフォームの違いに対応するためを除き、その他のコマンドと機能のほとんどは変更されていません。例えば、オリジナルのdBASEユーザーマニュアルでは、次のような例が使用されています。[42]
人を使う リスト
これは RETRIEVE の指示と同じです。
人々をロードする リスト
ステートメントの全体的な操作は、2つのシステムでほぼ同じです。dBASEの主な違いはプログラミング性に関するものです。dBASEは変数を追加し、LISTのような数式で作られた列を作成できLIST SALARY*1.05、文字列の長さや特定のフィールドのデータ型を返す関数など、データを操作するためのより幅広い関数を追加しました。[43]
注記
- ^ SUPER FORTRANがいつリリースされたかは正確には不明ですが、マニュアルの日付は1970年4月なので、その年のいつかである可能性が高いです。[2]
- ^ グレゴリーはリリースの日付について矛盾しているように見える日付を挙げている。SUPER FORTRANの「数週間後」であれば1970年頃ということになるが、マニュアルは1971年のものであり、本文ではその日付を使用している。[1]
- ^ 文字列には一重引用符または二重引用符を使用できます。[22]
参考文献
引用
- ^ abc グレゴリー2018、136ページ。
- ^ グレゴリー2018、127ページ。
- ^ グレゴリー2018、140頁。
- ^ 「JPLDISの始まり:アイデアの誕生」FoxProの歴史。
- ^ 「Wang 2200コンピューター:知っておくべきことすべて」History-Computer . 2021年1月4日. 2022年10月18日閲覧。
- ^ ブルーム 1976、1ページ。
- ^ ラマース 1986年、111ページ。
- ^ ラマース 1986年、115ページ。
- ^ ラマース 1986年、117ページ。
- ^ 「アシュトン=テイト:ソフトウェアの世界で困難な人生に立ち向かう」ロサンゼルス・タイムズ、1987年5月10日。
- ^ マニュアル 1971、5ページ。
- ^ マニュアル 1971、6ページ。
- ^ Wiederhold 2001、416ページ。
- ^ マニュアル1971、9ページ。
- ^ マニュアル1971、31ページ。
- ^ マニュアル 1971、28~29 ページ。
- ^ ab マニュアル1971、25ページ。
- ^ ab マニュアル1971、47ページ。
- ^ マニュアル1971、14ページ。
- ^ マニュアル1971、15ページ。
- ^ ab マニュアル1971、19ページ。
- ^ ab マニュアル1971、18ページ。
- ^ マニュアル 1971、54–56 ページ。
- ^ マニュアル 1971、67~68 ページ。
- ^ マニュアル1971、44ページ。
- ^ マニュアル1971、35ページ。
- ^ マニュアル1971、46ページ。
- ^ マニュアル1971、23ページ。
- ^ マニュアル1971、20ページ。
- ^ マニュアル1971、21ページ。
- ^ マニュアル1971、57ページ。
- ^ マニュアル1971、59ページ。
- ^ マニュアル1971、61ページ。
- ^ マニュアル1971、48ページ。
- ^ ab マニュアル1971、79ページ。
- ^ マニュアル1971、84ページ。
- ^ マニュアル1971、80ページ。
- ^ マニュアル1971、83ページ。
- ^ マニュアル1971、89ページ。
- ^ ラマース 1986年、114ページ。
- ^ ウォルムズリー、キーン(2008年9月19日)「ジョン・ウォーカーとのインタビュー - パート2」『Through the Interface』。
- ^ dBASE 1983、3.10ページ。
- ^ dBASE 1983、p. 付録C。
参考文献
- ラマーズ、スーザン (1986). 「ウェイン・ラトリフへのインタビュー」. 『プログラマーズ・アット・ワーク:コンピュータ業界を形作った19人のプログラマーへのインタビュー』 . マイクロソフト・プレス. ISBN 9780914845713。- 抜粋は FoxPro History サイトでご覧いただけます。
- RETRIEVE: 経営情報検索システム(PDF) . Tymshare. 1971年8月.
- グレゴリー、ネイサン(2018年)『The Tym Before... Lulu』ISBN 9781387304059。
- ブルーム、ハワード(1976年11月)。「RECALL:Wang 2200用管理情報検索システム(技術報告書)」。アメリカ陸軍資材司令部。2019年10月15日時点のオリジナルよりアーカイブ。
- dBASE II ユーザーズガイド(PDF) (技術レポート). Ashton-Tate. 1983.
- 著作権目録. 第3シリーズ: 1970年: 1月~6月. 著作権局, 米国議会図書館. 1972年. 1300頁.
- Wiederhold, Gio (2001). 「第8章 スキーマ」(PDF) . データベース設計(第2版). McGraw-Hill. pp. 405– 448. ISBN 9780070701328。