本当に良い問題を解決する際にグローバルを使用すると、傑出した結果を達成できます。 パフォーマンスの問題、または問題の解決策の単純化のいずれか( 1、2 )。
グローバルは、SQLのテーブルとはまったく異なるデータを保存および処理する特別な方法です。 それらは1966年に医療データベースのM言語(UMPS) (進化的開発-CachéObjectScript 、以下COS)で登場し、現在も活発に使用されています。など
最新のDBMSのグローバルは、トランザクション、ジャーナリング、レプリケーション、パーティション分割をサポートしています。 つまり それらを使用して、最新の信頼できる分散型の高速システムを構築できます。
グローバルは、リレーショナルモデルの制限に制限しません。 特定のタスクに最適化されたデータ構造を自由に設計できます。 多くのアプリケーションにとって、グローバルの賢明な使用は真に秘密の武器となり、リレーショナルアプリケーション開発者が夢見ることのできないパフォーマンスを提供します。
データを格納する方法としてのグローバルは、高レベルと低レベルの両方の多くの最新のプログラミング言語で使用できます。 そのため、この記事では、かつて出現した言語ではなく、グローバルに焦点を当てます。
2.グローバルの仕組み
まず、グローバルがどのように機能するか、そしてそれらの強みを理解しましょう。 グローバルはさまざまな角度から見ることができます。 記事のこの部分では、それらを木のように見ます。 または、階層データウェアハウスとして。
簡単に言えば、グローバルは永続的な配列です。 自動的にディスクに保存されるアレイ。
データを保存するためのより単純なものを想像するのは困難です。 コード(COS / M言語)では、名前の前に^文字が付いているだけで、通常の連想配列とは異なります。
データをグローバルに保存するために、SQLクエリ言語を学ぶ必要はありません。それらを操作するためのコマンドは非常に簡単です。 1時間で習得できます。
最も単純な例から始めましょう。 2つのブランチを持つ単一レベルのツリー。 例はCOSで書かれています。
Set ^a("+7926X") = "John Sidorov" Set ^a("+7916Y") = "Sergey Smith"
(a Set) 3 :
- .
- . ( — «subscript»), — («node value»).
- . . «Sergey Smith», «John Sidorov». . , , ( , ).
. 750 000 / . /.
, . , , — Visa. , .
- — .
- . , , .
.
Set ^a("+7926X", "city") = "Moscow" Set ^a("+7926X", "city", "street") = "Req Square" Set ^a("+7926X", "age") = 25 Set ^a("+7916Y", "city") = "London" Set ^a("+7916Y", "city", "street") = "Baker Street" Set ^a("+7916Y", "age") = 36
, . - . .
, . ( ) 511 , 3.6 Caché. ( ) — 31.
. , .
Set ^b("a", "b", "c", "d") = 1 Set ^b("a", "b", "c", "e") = 2 Set ^b("a", "b", "f", "g") = 3
— , .
, , : .
: , , .
.
— , .
.
:
- : , .
- : , — .
, , . .. .
.
, , ?
— . . .
Kill.
Kill ^a("+7926X")
, , .
COS | |
---|---|
Set | ( ) |
Merge | |
Kill | |
ZKill | . |
$Query | |
$Order | |
$Data | |
. , ACID. $Sequence |
Disclaimer: InterSystems.
— - . . 2. .