私は新しい実験室データベースを設計しています。すべてのテストの生の結果をまとめて保存したい。ただし、結果は単一の測定値または未処理の波形のいずれかになります。 (再演のフッターを参照してください)Oracleに波形を保存
どちらのケースが理想的ですか? ...またはあなた自身の理想的なオプションを提供してください。
TEST
test_id*
(other TEST fields)
OPTION 1:以外オプション1
TEST (1 -- many) MEASUREMENT (1 -- many) RECORDING_POINT
OPTION 1
同じ
から重複共通フィールド:
別個の単一の値と波形が
TEST (1 -- many) MEASUREMENT
(\-- many) RAW_HEADER 1 -- many RAW_POINT
MEASUREMENT RAW_HEADER
measurement_id* raw_header_id*
test_id (FK) test_id (FK)
rec_time as DATE start_time as DATE
measurement sample_rate
RAW_POINT
raw_header_id* (FK)
point_index*
raw_measurement
OPTION 2をもたらします MEASUREMENT
:measurement
信号についてはsample_rate
RAW_POINT
ある:measurement_id* (FK)
RAW_HEADER
に変更raw_header* (FK)
:BLOB TEST(にエンコード信号:
オプション3を必要としません1 - 多数)測定
単一値measurement
について MEASUREMENT
measurement_id*
test_id (FK)
rec_time as DATE
measurement
signal as BLOB
は測定値であり、signal
は信号measurement
についてNULL
はsample_rateとsignal
格納する符号化データ点
OPTION 4である:重複共通フィールドが、使用BLOBS
TEST (1 -- many) MEASUREMENT (1 -- many) RAW_DATA
MEASUREMENT
measurement_id*
test_id (FK)
rec_time as DATE
measurement
RAW_DATA
measurement_id* (FK)
raw_data as BLOB
単一の値の場合measurement
はです信号measurement
sample_rateある
凡例 :アスタリスクが続く
__*_
フィールドは 完全なプライマリキーです。(FK)
フィールドの後に(FK)
が続くフィールドには、外部キー制約があることを示します。____
特に指定のない限り、すべてのフィールドはNUMBER
のタイプです。
その他インフォメーション: 生波形データはいくつかの方法で使用されます。 - プロット(プロットが右に見えるん) - (より良いプレゼンテーションのために)平滑化/フィルタリング - 値(時刻を取得最大値、最小値、立ち下がり時間など)
また、データは複数のチャネルで同時に取得されます。チャネル1が最初に500に達すると(何らかのユニットの)チャネル2の値が何であるかを知ることは有用であろう。
波形には、通常、約4,000 - 25,000データポイントがあります。
その他の考え/質問: BLOBの一部は返されますか?言い換えれば、4000バイトで始まる4バイトを引き出すことができますか?
値は、Oracle自体で読み取ることができるように、ブロブは、パックのOracleタイプのものとすることができる(すなわち:MAX、MINなどを得るために)
注:これはとGeneral Oracle Data Collection Storageの再投稿ですより良いオプションを開発。
私は単一の値と信号を分離するので、オプション1が好きです。 raw_point_idを追加してRAW_HEADERにデータポイントの数を格納すると、データポイントをより早く取得できます。 オプション2は、すべてを1か所に配置する共通のフィールドを組み合わせています。 オプション3について、私が間違っている場合は私を修正してください。 BLOBに格納された生データを他の計算で使用するためにデコードするのは、(プログラムの取得ではなく)Oracleにとって難しいことです。 – Steven
典型的な波形の何ポイントですか? – DCookie
4000 - 25000(編集の主な質問を参照) – Steven