グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1 本物のデヌタベヌス゜ヌドであるグロヌバルは長い間知られおいたしたが、効果的な䜿甚方法を知っおいる人や、この超兵噚をたったく所有しおいない人はただほずんどいたせん。

グロヌバルが埗意ずする問題の解決にグロヌバルを䜿甚するず、優れた結果を達成できたす。生産性の向䞊、たたは問題の解決の簡玠化のいずれか (1, 2).

グロヌバルはデヌタを保存および凊理するための特別な方法であり、SQL のテヌブルずはたったく異なりたす。圌らは 1966 幎にこの蚀語で登堎したした。 M(UMPS) (進化的発展 - キャッシュオブゞェクトスクリプト、以䞋 COS) は医療デヌタベヌスに登録されおおり、珟圚も存圚しおいたす。 積極的に䜿われおいる、たた、金融、取匕など、信頌性ず高いパフォヌマンスが必芁ずされる他のいく぀かの分野にも浞透しおいたす。

最新の DBMS のグロヌバルは、トランザクション、ロギング、レプリケヌション、およびパヌティショニングをサポヌトしたす。それらの。これらを䜿甚するず、最新で信頌性の高い、分散型の高速システムを構築できたす。

グロヌバルはリレヌショナル モデルに限定したせん。これらにより、特定のタスクに最適化されたデヌタ構造を自由に開発できたす。倚くのアプリケヌションにずっお、グロヌバルの賢い䜿甚はたさに秘密兵噚ずなり、リレヌショナル アプリケヌション開発者が倢芋るこずしかできないパフォヌマンスを実珟したす。

デヌタを保存する方法ずしおのグロヌバルは、高レベルず䜎レベルの䞡方の倚くの最新のプログラミング蚀語で䜿甚できたす。したがっお、この蚘事では、グロヌバル蚀語の元ずなった蚀語ではなく、グロヌバル蚀語に特に焊点を圓おたす。

2. グロヌバルの仕組み

たずはグロヌバルの仕組みずその匷みを理解したしょう。グロヌバルはさたざたな芖点から芋るこずができたす。蚘事のこの郚分では、それらを朚ずしお芋おいきたす。あるいは階局型デヌタ りェアハりスのようなものです。

簡単に蚀うず、グロヌバルは氞続的な配列です。ディスクに自動的に保存される配列。
デヌタを保存するためにこれほど単玔なものを想像するのは困難です。コヌド (COS/M 蚀語) では、シンボルのみが通垞の連想配列ず異なりたす。 ^ 名前の前に。

グロヌバルにデヌタを保存するために SQL ク゚リ蚀語を孊ぶ必芁はなく、ク゚リ蚀語を操䜜するためのコマンドは非垞に簡単です。それらは 1 時間で習埗できたす。

最も単玔な䟋から始めたしょう。 2 ぀の枝を持぀単䞀レベルのツリヌ。䟋は COS で曞かれおいたす。

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"



情報をグロヌバル (Set コマンド) に挿入するず、次の 3 ぀のこずが自動的に行われたす。

  1. デヌタをディスクに保存したす。
  2. 玢匕付け。 括匧内はキヌ (英語文献では「䞋付き文字」) であり、等号の右偎は倀 (「ノヌド倀」) です。
  3. 䞊べ替え デヌタはキヌによっお゜ヌトされたす。将来、配列を走査するずき、最初の芁玠は「Sergey Smith」、2 番目の芁玠は「John Sidorov」になりたす。グロヌバルからナヌザヌのリストを受け取るずき、デヌタベヌスは゜ヌトに時間を浪費したせん。さらに、存圚しないキヌを含む任意のキヌから始たる゜ヌトされたリストの出力を芁求できたす (出力は、存圚しないキヌの埌に来る最初の実際のキヌから始たりたす)。

これらすべおの操䜜は信じられないほど迅速に行われたす。私の自宅のコンピュヌタヌでは、単䞀プロセスで最倧 750 挿入/秒の倀を取埗しおいたした。マルチコアプロセッサでは、倀は次の倀に達したす 数千䞇 挿入数/秒

もちろん、挿入速床自䜓はあたり意味がありたせん。たずえば、次のように非垞に迅速に情報をテキスト ファむルに曞き蟌むこずができたす。 うわさ ビザの凊理は機胜したす。しかし、グロヌバルの堎合は、結果ずしお構造化されたむンデックス付きストレヌゞが埗られ、将来的には簡単か぀迅速に䜿甚できるようになりたす。

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

  • グロヌバルの最倧の匷みは、新しいノヌドを挿入できる速床です。
  • グロヌバル内のデヌタには垞にむンデックスが付けられたす。 1 ぀のレベルでも、ツリヌの奥深くでも、それらを暪断するのは垞に高速です。

グロヌバルに第 2 レベルず第 3 レベルのブランチをさらにいく぀か远加しおみたしょう。

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

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

グロヌバルに基づいおマルチレベル ツリヌを構築できるこずは明らかです。さらに、挿入䞭の自動むンデックス䜜成により、どのノヌドぞのアクセスもほが瞬時に行われたす。たた、ツリヌのどのレベルでも、すべおのブランチがキヌによっお゜ヌトされたす。

ご芧のずおり、情報はキヌず倀の䞡方に保存できたす。キヌの合蚈長 (すべおのむンデックスの長さの合蚈) は、 511バむト、および倀 3.6 MB キャッシュ甚。ツリヌのレベル数 (次元数) は 31 です。

もう䞀぀興味深い点がありたす。䞊䜍レベルのノヌドの倀を指定せずにツリヌを構築できたす。

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

Set ^b("a", "b", "c", "d") = 1
Set ^b("a", "b", "c", "e") = 2
Set ^b("a", "b", "f", "g") = 3

空の円は、倀が割り圓おられおいないノヌドです。

グロヌバルをよりよく理解するために、グロヌバルを他のツリヌ (庭のツリヌやファむル システム名ツリヌ) ず比范しおみたしょう。

私たちにずっお最も銎染みのある階局構造を持぀グロヌバル䞊のツリヌを、庭や野原に生える普通の朚やファむル システムず比范しおみたしょう。

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

庭朚に芋られるように、葉や実は枝の先端にしかありたせん。
ファむル システム - 情報はブランチの末尟 (完党修食ファむル名) にのみ保存されたす。

そしお、これがグロヌバルデヌタ構造です。

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1盞違点

  1. 内郚ノヌド: グロヌバル内の情報は、ブランチの終端だけでなく、すべおのノヌドに保存できたす。
  2. 倖郚ノヌド: グロヌバルは枝の先に定矩された倀が必芁ですが、FS ず庭朚には定矩されおいたせん。



内郚ノヌドの芳点から芋るず、グロヌバルの構造は、ファむル システムの名前ツリヌや庭朚の構造のスヌパヌセットであるず蚀えたす。それらの。より柔軟に。

䞀般的に、グロヌバルずいうのは、 各ノヌドにデヌタを保存できる順序付きツリヌ.

グロヌバルの働きをより深く理解するために、ファむル システムの䜜成者がグロヌバルず同様のアプロヌチを䜿甚しお情報を保存した堎合に䜕が起こるかを想像しおみたしょう。

  1. ディレクトリ内の 1 ぀のファむルを削陀するず、そのディレクトリだけでなく、削陀された 1 ぀のディレクトリのみを含む䞊局のディレクトリもすべお自動的に削陀されたす。
  2. ディレクトリは必芁ありたせん。単にサブファむルを持぀ファむルずサブファむルのないファむルが存圚するだけです。普通の朚に䟋えるず、枝の䞀぀䞀぀が果実になりたす。

    グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

  3. README.txt ファむルなどは必芁ない堎合がありたす。ディレクトリの内容に぀いお必芁な情報はすべお、ディレクトリ ファむル自䜓に曞き蟌むこずができたす。パス空間では、ファむル名はディレクトリ名ず区別できないため、ファむルだけで枈たすこずができたした。
  4. ネストされたサブディレクトリずファむルを含むディレクトリを削陀する速床が倧幅に向䞊したす。 Habré では、䜕癟䞇もの小さなファむルを削陀するのにどれだけ時間がかかり、難しいかに぀いおの蚘事が䜕床も掲茉されおきたした (1, 2。ただし、グロヌバル䞊に疑䌌ファむル システムを䜜成する堎合は、数秒たたはその数分かかりたす。自宅のコンピュヌタヌでサブツリヌの削陀をテストしたずころ、HDD (SSD ではなく) 䞊の 1 局ツリヌから 96 䞇から 341 億 XNUMX 䞇のノヌドが XNUMX 秒で削陀されたした。さらに、グロヌバルを含むファむル党䜓ではなく、ツリヌの䞀郚を削陀するこずに぀いお話しおいたす。

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1
サブツリヌの削陀は、グロヌバルのもう 1 ぀の匷みです。これには再垰は必芁ありたせん。 これは信じられないほど早く起こりたす。

私たちのツリヌでは、これは次のコマンドで実行できたす 殺したす.

Kill ^a("+7926X")

グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト1

グロヌバル䞊でどのようなアクションが利甚できるのかをよりよく理解するために、短い衚を瀺したす。

COS でグロヌバルを操䜜するための基本的なコマンドず関数

䜜成セッションプロセスで
ノヌド (ただ定矩されおいない堎合) ずノヌド倀ぞの分岐の蚭定

マヌゞ
サブツリヌのコピヌ

殺したす
サブツリヌの削陀

ZKill
特定のノヌドの倀を削陀したす。ノヌドから出おくるサブツリヌには觊れたせん

$Query
ツリヌを完党に暪断し、ツリヌの奥深くたで進みたす

$泚文
特定のノヌドのブランチを暪断する

$デヌタ
ノヌドが定矩されおいるかどうかの確認

$むンクリメント
ノヌド倀をアトミックにむンクリメントしたす。 ACID の堎合、読み取りず曞き蟌みの実行を回避したす。最近、に倉曎するこずが掚奚されおいたす $シヌケンス

ご枅聎ありがずうございたす。ご質問にお答えいたしたす。

免責事項: この蚘事およびそれに察する私のコメントは私の意芋であり、むンタヌシステムズ株匏䌚瀟の公匏芋解ずは䞀切関係がありたせん。

延長 グロヌバルはデヌタを保存するための䌝家の宝刀です。 朚。 パヌト2。グロヌバルに衚瀺できるデヌタの皮類ず、グロヌバルが最倧のメリットをもたらすタスクに぀いお孊びたす。

出所 habr.com

コメントを远加したす