0

新しい検査データベースを設計しています。いくつかのテストでは、最大 10,000 のデータ ポイントを同時に取得する複数の波形があります。アプリケーション (C で記述) では、波形は float の配列として格納されます。

各波形を BLOB として保存したいと考えています。

質問:

OracleがSQLまたはPL/SQLのみを使用してデータ自体を処理できるように、BLOB内のデータを構造化できますか?

  • 最大、最小、平均などを決定する
  • 値が最初に 500 を超えたときにインデックスを取得する
  • 400 番目の番号を取得する
  • 最初の BLOB の派生物である BLOB を作成します

注:このメッセージは、 Oracle に波形を保存する のサブ質問です。

4

3 に答える 3

1
  • 最大、最小、平均などを決定する
  • 値が最初に 500 を超えたときにインデックスを取得する
  • 400 番目の番号を取得する

リレーショナル データ モデルは、この種の分析用に設計されています。データを正しくモデル化すれば、Oracle の SQL はこれを十分に実行できます。float の配列を数値のテーブルに変換することに集中することをお勧めします。かかる時間は、SQL でこれらの種類のクエリを実行する速度によって補われる以上のものになると思います。

別の方法は、SQL が実行されるたびに実行時にこの変換を効果的に行う SQL を作成しようとすることです。これはおそらくはるかに効率が悪いでしょう。

于 2009-06-30T01:17:15.407 に答える
0

おそらく、blobをパラメータとして受け取り、その情報を返すPL/SQL関数を作成できると思います。

フィールドにXMLTypeを使用できる場合は、PL / SQLで確実に解析し、必要な関数を作成できます。

http://www.filibeto.org/sun/lib/nonsun/oracle/11.1.0.6.0/B28359_01/appdev.111/b28369/xdb10pls.htm

もちろん、XMLはかなり遅くなりますが、バイナリデータを解析できない場合は、別の方法です。

于 2009-06-29T20:22:46.050 に答える
0

VARRAY 型も考慮する必要があります。配列全体を操作する必要があります (サブセットの取得、部分的な更新などはありません) が、最大長を定義することができ、Oracle は使用するものだけを格納します。BINARY_FLOAT や NUMBER など、ほとんどすべてのデータ型の VARRAY を宣言できます。BINARY_FLOAT はストレージを最小限に抑えますが、いくつかの小さな精度の問題があります (金融アプリケーションでは重要ですが)。IEEE 754 形式です。

PL/SQL を使用してデータを操作することを計画しているので、BLOB 設計から手を引くかもしれません。VARRAY はより便利に使用できます。BLOB は、後で別の C プログラムで使用するために生の C 浮動小数点数の配列を格納するのに非常に便利です。

これらの使用方法については、PL/SQL ユーザーズ ガイドおよびリファレンスを参照してください。

于 2009-06-29T21:21:40.767 に答える