【入門編】 GHU/GHN/GHNP (Get Hold Calls) – 階層型DBMS

こんにちは。君が今、この「階層型DBMS」という、ITの歴史を築き上げたレジェンド級のアーキテクチャの門を叩こうとしていること、心から歓迎するよ。

現代のデータベースといえば、表形式の「リレーショナル(RDB)」が主流だ。でもね、かつて宇宙開発や巨大な銀行システムを支えたのは、間違いなくこの「階層型」だった。木構造の中にデータの真実が詰まっている。その本質を理解することは、システム設計の「深淵」に触れることと同じなんだ。

今日は、その中でも特に重要で、かつ「現場の匂い」がする GHU/GHN/GHNP(Get Hold Calls) について話そう。これさえ掴めば、君はもう階層型DBMSの心臓部を触れるようになる。

—

1. なぜ「Hold(ロック)」が必要なのか?

まず、身近な例え話をしよう。
君が図書館で、非常に貴重な「一冊しかない歴史書」を書き換えたいとする。

1. 本を棚から探す(読み込み)
2. 内容を修正する(更新)
3. 元の場所に戻す(書き込み)

もし、君がその本を手に取っている最中に、別の誰かが同じページを書き換えようとしたらどうなる? 悲劇だよね。だから、「書き換えるつもりで本を手に取る」時は、他の人が触れないように「確保(Hold)」しておく必要がある。

これが、階層型DBMSにおける「Get Hold」の正体だ。

2. Get Hold Calls の三銃士

階層型DBMSでは、目的のデータ(セグメント)にアクセスする際、単に「読み込む(Get)」だけでなく、「更新・削除の予約席を確保しながら読み込む」命令を使います。

GHU (Get Hold Unique)

  • 意味: 「これが欲しい!」とピンポイントで指定して、確保する。
  • 例え: 図書館の司書に「『世界史』の第3章を貸して。修正するから誰にも触らせないで」と指名手配するイメージ。

GHN (Get Hold Next)

  • 意味: 今いる場所から「次のデータ」を順番に探し、確保する。
  • 例え: 本を読んでいる最中に「次のページも修正が必要だな」と、順番にページをめくってロックをかけていくイメージ。

GHNP (Get Hold Next within Parent)

  • 意味: 「今の親(カテゴリー)」の中で、次の子データを順番に探し、確保する。
  • 例え: 「『世界史』という章の中にある項目だけを順番に修正したい」という時、章を飛び越えないように範囲を限定するイメージ。

—

3. コードの背後で起きていること

もし君がプログラムを書くなら、こんな流れになるはずだ。この「ロック」を意識したコードを見てほしい。

  • GHUを使って、特定の顧客(ID: 100)のレコードを確保(Hold)する

CALL ‘DLITCBL’ USING DLI-GHU, PCB-MASK, SEG-IO-AREA, SSA-CUSTOMER.

  • — ここで他のユーザーはこのレコードを触れない(排他制御中) —
  • データを更新する

MOVE ‘NEW-ADDRESS’ TO CUSTOMER-ADDR.

  • 更新を確定(REPL: Replace)する

CALL ‘DLITCBL’ USING DLI-REPL, PCB-MASK, SEG-IO-AREA.

  • 処理が完了すればロックが外れる

ポイント:
`GHU` を発行した瞬間、データベース管理システムは「このデータは現在、彼が調理中です」と看板を掲げる。これがあるからこそ、巨大なシステムでもデータの不整合が起きないんだ。

—

4. 先輩からのアドバイス:なぜこれを知るべきか

初心者のうちは、「ただ読み込むだけでいいのでは?」と思うかもしれない。でも、実際の現場では「読み込んだ瞬間に世界が変わる(他人が更新する)」というリスクと常に隣り合わせなんだ。

「Hold」を伴う命令を使うということは、「自分が今、データの整合性に責任を持っている」というプロ意識の表れでもある。

  • GHUは、狙いを定めて確実に仕留める時。
  • GHNは、全体を巡回してメンテナンスする時。
  • GHNPは、親子の関係を守りながら整理する時。

この使い分けができるようになれば、君はもう階層型DBMSの基本をマスターしたと言っても過言じゃない。

—

最後に

階層型DBMSは古い技術かもしれない。でも、その設計思想は、現代のクラウドネイティブなマイクロサービスにおける「分散トランザクション」の考え方と深く繋がっているんだ。

ここを理解した君なら、どんな新しいデータベースを触っても、その本質がすぐに見抜けるはずだよ。

もし何か分からないことがあれば、いつでも聞きに来てほしい。データベースという広大な森を歩くための地図は、いつでもここにあるからね。

さあ、次は実際にコードを動かしてみようか。楽しみだね。

コメント

タイトルとURLをコピーしました