• ベストアンサー

階層型データベースとVSAMの違い

階層型データベースとVSAMの違い メインフレームの話です。 階層型DB(IMS-DB)について勉強しているのですが、 VSAMとの違いがよくわかりません。 どちらも、HIDAMやHSAMもあり、CI単位にデータが 入っているとマニュアルに書いてありました。 実は、同じものなのでしょうか? それとも、DBはロールバックやロールフォワードができ VSAMはできないとかの違いだけあるのでしょうか?(よくわかりませんが) VSAMと階層DBは、何が違うのか?と言われたときに、 「こう違います。」と説明できるようになりたいです。 よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1回答者です。「階層型データベース」と書かれていたので、少し誤解していました。 DBMSの機能の一つとして、「VSAMなどのOSのファイルシステムで作成したファイルを、DMLで操作する」といったものがあります。この場合は、VSAMのファイルそのものを、DBMSの管理下で操作します。この機能を利用することで、アプリ側ではDMLで操作でき、ファイルの宣言、オープン/クローズ、例外処理などをDBMS側に任せることができます。 これらは、単純構造などの名称で呼ばれ、階層型データベースとはまったく別のものです。あくまでも、階層型DBMSの一機能として、VSAMファイルも操作できるというものです。 階層データベースについては、#1の回答を参照してください。

phoenix062
質問者

お礼

回答ありがとうございます。 確かに、子や孫のある階層の場合、VSAMでは定義できないですね。 ちょっと気がつきませんでした。 ロールバックはVSAMでもできるのですか? つまり、ログなどをとっているのでしょうか? 排他制御は、OSが管理するのでしょうか? さらに、それ以外にVSAMとIMSDBの違いというものは あるのでしょうか? ちなみに、DB2のマニュアル等にはDBMSについての記載がありますが IMS-DBのマニュアルにDBMSはありません。DLI-SASとかが ありますが、それがDBMSの代わりなのでしょうか? 先輩に聞きたいところですが、ベンダーである弊社でIMSを よく知っている人はおらずマニュアルしか頼るものがありません。 しかし、IBMマニュアルはご存知だと思いますが、いまひとつ わかりにくく、講習資料もVSAMとDBの違いを記載してません。

その他の回答 (2)

回答No.3

IMSについても、IBMによる高価なセミナーが実施されているようですね。 英語サイトですけど、IMSのDB内部構造等について、図などを用いられて解説されているところがありました。 http://www.dbazine.com/ofinterest/oi-articles/ims2 ざくっと見ましたけど、 IMSでのHSAMは、OSレベルではBSAM、QSAMで実装されている。 IMSでのHISAMは、OSレベルではVSAMで実装されている。 といった記述があるようです。 メインフレームの情報は、インターネット上でゴロゴロ転がっている訳ではないし、情報の鮮度や信憑性なども判断できません。 どこの誰だか分からない人に聞くのは、仕事上、大いに問題ありです。 ただ、IBMの情報は、英語サイトなどで意外と出てたりしますけどね。 英語サイトですが、メインフレーム・フォーラムもあるようですよ。 http://ibmmainframes.com/index.php

回答No.1

IBMのDBMSについて、そんなに詳しい訳ではないですが。。。 こういった Q&A サイトで、質問するようなことではないのでは? 子や孫が存在しない単純な構造だけを見れば、似たようなものと感じることもあるかも知れませんが、例えば、3階層のデータベースを考えてみましょう。1:m:nの関係、しかも m や n の個数を事前に予測できないといった場合、これをVSAMで容易に実現できますか? VSAMを使った場合、定義変更があった場合は、どんな作業が発生するか考えてみましょう。また、IMSにつながるDBMSは、階層型だけでなく、リレショナル型のDB2などもありますよね? VSAMも排他制御やログによる回復など、多機能だったりしますが、そこはやはりファイルシステムの一つです。 DBMSがシステム実装の上で、ファイルシステムとしてのVSAMを活用していたりもします。 この場合、 ・VSAMの1レコード=DBMSの1レコード といったケースや ・VSAM上では1レコードだけど、その1レコードの中をDBMS独自のデータ形式で管理し、DBMSとしては複数レコードを管理する といったことも行われていたりします。 詳しくはここのようなサイトではなく、マニュアル、先輩、DBMSサポート部署などに相談してみてください。

関連するQ&A

  • IBM系のDBでIMSに関して

    IBMのメインフレームで使用されているIMSというDBに関して何でもいいので教えて頂けないでしょうか。

  • ロールフォワードとロールバックの違いは

    コンピュータの勉強をしているのですが、ロールフォワードとロールバックの違いは何でしょうか?

  • データベースの移行方法

    質問させていただきます。 サーバの変更に伴い、データベースをサーバ(A)からサーバ(B)に移行し、サーバ(A)とサーバ(B)を全く同じして、クライアントがこれまで通りデータベースを利用できるようにしたいと考えています。 新たに購入したサーバ(B)に社内にあったマニュアルを元にしてOracle9iをインストールし、DBの作成したところまで進めているのですが、その後のデータの移行がよく分かりません。expやimpコマンドを使って行うとできるらしいのですが、よく分かっていません。 社内のマニュアルには新たにDBを作成する方法は書いてあるのですが、データの移行については書いておらず、困っています。 私が全くOracleについて知らないので、質問内容が分かりずらいとおもいますが、回答いただけるとありがたいです。 ●環境 サーバ(A)   OS:windows server 2000 oracleのバージョン:oracle9i Database (9.2.0.1.0) サーバ(B)   OS:windows server 2003 oracleのバージョン:oracle9i Database (9.2.0.1.0) OSの違い以外は社内マニュアルを元にして同じ設定にしてあります。 よろしくお願いします。

  • データベースの初歩の質問

    一般的なSQLデータベース(予定、MySql等)を使って、Webサイト を作成するため書籍等で勉強中ですが、全然理解できません。 そこで、現在最も不明な点について質問させてください。 ●データベースの不明な点 ・(小規模)設計で痛い失敗や初心者の起こしやすいミス  てどこですか? ・データベースについて解かりやすいサイトがあれば教えて  いただけませんか? ・プログラム習得の際、殆どマニュアルで解からない所が多い  いので実際にソースを打ち込んでみて、動作から理解している  のですが、データベースもそのような方法でマスターできますか?  (現在実践中ですが、単にデータを書き込みや読み込みが出来る  だけで、そこから先に進めません。) ●正規化について ・正規化をしないと、困る事てなんですか? ・正規化して別れたテーブルに同じカラムが出来ますが、  データ変更などの操作は、どのテーブルに対して行うのですか? ・第3正規化位までが学習できる初心者向けサイトがあれば  教えていただけませんか? ※検討違いの質問があればすみません。

  • [Oracle][IBM DB2][SQL Server]の違いと適性

    現在、Accessで業務アプリケーションを作成しているのですが、そろそろパフォーマンス的にも限界で、というかC/S環境でAccessを使っていること自体危険ですね… ここでデータベースをグレードアップしようと思っています。 しかし、データベースと言ってもたくさんあり、どれがいいのか 迷っています。 現在、商用RDBMSでは[Oracle][IBM DB2][SQL Server]がメインとの ことですが、これらの違いが分かりせん。 うちの規模は社員数が40人程度です Oracleは大規模システム向けと聞いた事があるのですが、 それであれば、IBM DB2かSQL Serverなのでしょうか 御教授宜しくお願いします。

  • 障害回復(ロールバックとロールフォワード)について

      t0  t1  t2   t3   t4   t5        |           | A s---e   |           |         |           | B s-------------e        |         |           | C  s------------------------|         |           | D       |   s----e    |         |           | E       |    s---------| ※t2はチェックポイント、t5は障害発生 ロールバックとロールフォワードについて教えてください。 (1)BとEについてロールフォワードによる回復が必要とのことですが、障害発生前にトランザクションが終了しており、コミットされているはずなのに、なぜロールフォワードが必要なのでしょうか? (2)Aはチェックポイント前に処理が完了しているため、回復処理は不要とのことですが、BとEが必要でAが不要の違いわかりません。 よろしくお願いします。

  • チェックポイントとロールバックのタイミングについて。

    下記のパターンの際に、transaction logファイルに書き込まれるのか否かを教えて下さい。 A:チェックポイントをまたがったトランザクションで完了後にシステム障害が発生した場合。 =>私の認識では、ロールフォワードによって、データベースとtransaction logファイルにデータが書き込まれる。と考えているのですが、正しいでしょうか? B:チェックポイントを一度も通らずに、トランザクションが完了。完了後にシステム障害が発生。 =>Aと同じですか? C:トランザクション実行中にシステム障害が発生した場合。 =>ロールバックされて、transaction logファイルにのみ書き込まれて、データベースには書き込まれない。というのは正しいでしょうか? よろしくお願いします^^

  • ロールバックとチェックポイント関連で質問です。

    下記のパターンの際に、transaction logファイルに書き込まれるのか否かを教えて下さい。 A:チェックポイントをまたがったトランザクションで完了後にシステム障害が発生した場合。 =>私の認識では、ロールフォワードによって、データベースとtransaction logファイルにデータが書き込まれる。と考えているのですが、正しいでしょうか? B:チェックポイントを一度も通らずに、トランザクションが完了。完了後にシステム障害が発生。 =>Aと同じですか? C:トランザクション実行中にシステム障害が発生した場合。 =>ロールバックされて、transaction logファイルにのみ書き込まれて、データベースには書き込まれない。というのは正しいでしょうか? よろしくお願いします^^

  • バッチプログラムでSQLSever2008を操作

    教えてください。 (1) SQLSever2008内にあるデータベース1のテーブルAのデータを削除 (2) 同じインスタンス内にあるデータベース2のテーブルAのデータを、DB1のテーブルAにコピー (3) (2)の処理が失敗したらロールバック 上記のことを、バッチプログラムで行いたいと思っております。 単にコマンドプロンプトで入力するというのであれば(1)も(2)もできるのですが、 バッチプログラムで行うとなると、どうやっていいのか見当もつきません。 さらに(3)は、(2)でSQLを実行した戻り値も見なければならないと思います。 データベース1のテーブルAとデータベース2のテーブルAはまったく同じ構成です。 自分なりに色々調べてはいるのですがどうしてもわかりません。 もしどなたかご存知の方がいらっしゃったらぜひ教えてください。 どうぞよろしくお願いいたします。

  • 階層型データベースについて

    最近はリレーショナル型データベースが主流ですが、階層型データベース(IMSDB)について調べなければいけません。でも、ほとんどRDBの情報しか得られなくて、困っています。IMSDBについては、基礎的なことしか分かりません。プレゼンテーションのための情報をなるべくたくさん集めたいのですが、どうか、なんでもいいので、IMSDBについて教えてください。RDBとの違いや、事例などの情報があれば、なおうれしいです。急いでいますので、どうかお願いいたします。