• ベストアンサー

ソート済データの格納位置を物理的に連続させる方法

汎用機の世界ですと、データを昇順に並べる為に、’座布団引き’を行いソート済データの格納位置を物理的に連続させることが可能です。 RDBの世界でもこの様な事が可能なのでしょうか? オンライン処理で、ソート処理をなくす為に、ソート済データの格納位置を物理的に連続させ、オンラインでは、そのまま取り出したいと考えています。 postgreで、実現できるか、また、その実現方法を御存知の方がいましたら、お教えください。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>ただ、RDBにしておきたいデータも別にあるのですが・・・ >この場合、RDBのデータと、txtファイルのデータの両方を同じプログラムで処理可能なのでしょうか? 可能か不可能かといわれれば可能でしょう。 #ファイルを扱えない処理系は、組み込み以外聞いたことないですが。 問題になるのは処理可能かということではなく、どのように取得したデータをプログラムで使用した以下ということですよね。 一覧の表示に必要なデータがすべて順編成のテキストファイルになっているのであれば、特に問題なし。 そうではなく、正規化されていて名称等の項目をRDBから取 得する必要があるのであれば、ファイルの1レコードずつに対して自分で1つずつ名称等を取ってくる処理を組む必要がありますよね。そういう時はすべてをRDBに格納して物理的な位置は気にしないことをお勧めします。 SQLで一発で取ってこれることがほとんどですし。

yakadake
質問者

お礼

ありがとうございました。 実験してみます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

まぁ、汎用機でもDBだったら余りそんなことしませんよね。 SAMとかVSAM使うんだったらわかりますが。 検索速度を上げるのでしたら、テーブルにインデックスを張ることで対処していくのが普通です。 でも、物理的に連続にデータを配置させることが出来るRDBも存在します。 SQLServerではクラスタ化インデックス、Oracleではクラスタと呼ばれている機能です。 でも、PostgresSQLでは同様の機能はなさそうですね。 ちなみに、本当に物理的に連続させたいのなら、OS上からデータが格納されたファイルのデフラグを行うか、OSのファイルシステムより低レベルのIOを扱う仕組みを使用する必要があります。 ただ気になるのは、 >オンラインでは、そのまま取り出したいと考えています。 というのが1行ずつデータとして取り出すのではなく1つの領域としてごっそり取り出したいというのであれば、RDBとしてNGです。RDBなんて使わずにファイルを使ってください。

yakadake
質問者

補足

質問の日本語がちょっと変だったので、具体例で訂正させていただきます。 DBは出席番号1番から1億番まで番号が採番された データがあります。 オンライン処理の入力処理では取得したい番号帯を入力します。例えば、5000番~20000番 結果表示は、5000番~20000番迄のデータを昇順にならべて表示する。 お教えいただいた通り、txtファイルにしておけばいいのですね。 ただ、RDBにしておきたいデータも別にあるのですが・・・ この場合、RDBのデータと、txtファイルのデータの両方を同じプログラムで処理可能なのでしょうか?

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ソート済みのデータを物理的に連続位置に格納すること及びそのまま取り出すの意味が良くわかりません。 ソート済みのデータをファイルアウトして、 テーブルに読み込み直すことはできると思いますが 物理的位置を連続的に格納させることの保証はできないと思います。

yakadake
質問者

お礼

ありがとうございました。

yakadake
質問者

補足

すみません。日本語変でした。 *********************************************** 訂正させていただきまして、具体例でいいますと DBは出席番号1番から1億番まで番号が採番された データがあります。 オンライン処理の入力処理では取得したい番号帯を入力します。例えば、5000番~20000番 結果表示は、5000番~20000番迄のデータを昇順にならべて表示する。 *********************************************** ・・・という事で、DISKのサーチ時間を短縮したり、ソート時間を短縮したりできなかなと考えたわけです。 いずれにしても、物理的な格納位置は保障されなさそう事ですね。無理ですか・・。

すると、全ての回答が全文表示されます。

関連するQ&A