Mumps グローバル実装の詳細な定義/議論を探しています。「MUMPS グローバルとその実装」というタイトルのドキュメントがありますが、デジタル コピーにアクセスするどころか、それを注文する方法を見つけることができませんでした。(75年に印刷されました)
一般的に、Mumps のデータベース内部についての詳細な議論を見つけようとしています。
Mumps グローバル実装の詳細な定義/議論を探しています。「MUMPS グローバルとその実装」というタイトルのドキュメントがありますが、デジタル コピーにアクセスするどころか、それを注文する方法を見つけることができませんでした。(75年に印刷されました)
一般的に、Mumps のデータベース内部についての詳細な議論を見つけようとしています。
フランク・ブラウンによるおたふく風邪マイクロコンピュータシステムのための統一されたローカル、グローバル、およびルーチン設計をご覧ください。Dr. Brown は、COMP Consultants Standard MUMPS のグローバル システムの設計者でした。私は 8086 アセンブリの実装者でした! はい、1981 年にさかのぼります。
基本的には、圧縮されたキーを持つ単純なB ツリーでした。
あなたが何を求めているのか正確にはわかりません。Mumps グローバルは、まばらな多次元配列です。プログラマーは、適切と思われるデータベース戦略を自由に実装できます。たとえば、顧客データベースは次のように実装できます。
^CUSTOMER(custnum,"NAME")=name
^CUSTOMER(custNum,"ADDRESS")=address
^CUSTOMER(CustNum,"PHONE")=phone
または、顧客データベースを次のように実装することもできます。
^CUSTOMER(custNum)=name|address|phoneNum
ここでは、パイプ文字「|」を使用しています。顧客レコードの区切り文字として。ほとんどの mumps 実装では、レコード文字列の長さは 32k に制限されています。
リレーショナルな意味では、CUSTOMER グローバルは custNum をキーとし、名前、住所、電話番号を列とするテーブルと考えることができます。
同様のスキームを orders テーブルに使用できます。
^ORDERS(orderNum)=date|invoiceNum|totalPrice
顧客を注文に関連付けるには、別のグローバルを使用できます。
^custOrders(custNum,orderNum)=""
または、代わりに顧客グローバルに追加します。
^CUSTOMER(custNum)=name|address|phone
^CUSTOMER(custNum,orderNum)=""
または、2 つのテーブルを 1 つのグローバルに結合することもできます。
^CUSTOMER(custNum)=name|address|phone
^CUSTOMER(custNum,orderNum)=date|invoiceNum|totalPrice
使用される戦略は、非常に柔軟で強力な開発者次第です。
上記で参照したドキュメントに加えて、他にいくつかのドキュメントをお勧めします。グローバルの基本とその内容については、次をお勧めします。
MUMPS グローバルを使用したエクストリーム データベース プログラミング
より高度なトピックについては、次をお勧めします。
実証済みのテクノロジーを使用したユニバーサル NoSQL エンジン
両方のドキュメントは、 M/Gateway Developmentsという会社でおたふく風邪のエバンジェリストである Rob Tweed によって作成されました。最初のドキュメントはおたふくかぜグローバルの優れた背景を示し、2 番目のドキュメントは noSQL を含むさまざまな戦略でそれらを使用することについて説明しています。
データベースの内部構造は、さまざまな MUMPS 実装間で大きく異なると思います。したがって、オープンソースの MUMPS 実装でどのように行われているかを確認するのが最善の策だと思います。
前の回答に同意します。質問は、ベンダーによって所有権があると見なされる実装の詳細に向けられています。オープンソース/歴史的なバージョンへの洞察がありますが、キャッシュと現在のバージョンは、最新のスケーリング機能に移行するにつれて逸脱します.