Хранение волновых форм в Oracle - PullRequest
2 голосов
/ 26 июня 2009

Я создаю новую лабораторную базу данных. Я хочу хранить необработанные результаты для всех тестов вместе. Однако результаты могут быть либо единичным измерением, либо необработанным сигналом. (репост см. нижний колонтитул)

Какой случай ниже идеален (и почему)? ... или предоставьте свой идеальный вариант.

TEST
  test_id*
  (other TEST fields)

ВАРИАНТ 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

ВАРИАНТ 2: Перекрывать общие поля из опции 1

TEST (1 -- many) MEASUREMENT (1 -- many) RECORDING_POINT

То же, что и OPTION 1, за исключением:
MEASUREMENT: measurement для сигналов - sample_rate
RAW_POINT: raw_header* (FK) изменено на measurement_id* (FK)
RAW_HEADER: не требуется

ОПЦИЯ 3: Кодировать сигналы в BLOB ТЕСТ (1 - много) ИЗМЕРЕНИЕ

MEASUREMENT
  measurement_id*
  test_id (FK)
  rec_time as DATE
  measurement
  signal as BLOB

Для одного значения measurement - это измерение, а signal - NULL
Для сигналов measurement - это sample_rate, а signal хранит кодированные точки данных

.

ВАРИАНТ 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, если не указано иное.

Другая информация: Необработанные данные формы волны будут использоваться несколькими способами: - построено (выглядит ли сюжет правильно) - отфильтрованный / сглаженный (для лучшей презентации) - получить значения (время при максимуме, минимальное значение, время падения и т. д.)

Кроме того, данные будут получены одновременно по нескольким каналам. Было бы полезно узнать, каково значение канала 2, когда канал 1 впервые достигает 500 (некоторой единицы).

Форма сигнала обычно имеет от 4000 до 25 000 точек данных.

Другие мысли / вопросы: Можно ли вернуть часть BLOB? Другими словами, можно ли извлечь 4 байта, начиная с байта 4000?

Может ли BLOB-объект иметь упакованный тип Oracle, чтобы значения могли быть прочитаны самим Oracle (т. Е. Для получения max, min и т. Д.)

ПРИМЕЧАНИЕ: Это репост Общее хранилище сбора данных Oracle с улучшенными параметрами.

Ответы [ 2 ]

3 голосов
/ 27 июня 2009

Верьте или нет, я не думаю, что здесь действительно достаточно информации, чтобы сказать наверняка. Например, как обычно будут обрабатываться результаты? Будут ли они построены на графике или, возможно, будет проведен какой-то численный анализ? Насколько велики ваши формы волны?

Если ваши необработанные результаты обычно невелики, мне не нравится вариант 1 для этого приложения. Для хранения одной точки данных требуется много ресурсов.

В меньшей степени то же самое возражение будет применяться к варианту 2.

Вариант 3 - путь, по которому я бы, скорее всего, пошел. Однажды я разработал приложение для просмотра сигналов от ударов молнии - миллионы точек на сигнал. Единственным жизнеспособным вариантом является BLOB для такого рода набора данных. И (опять же, в зависимости от некоторых неизвестных), я бы серьезно подумал о том, чтобы хранить данные в виде двоичных чисел с плавающей запятой или удваивать и обрабатывать их с помощью Java или внешних программ на Си. Серьезно, вам нужен ключевой доступ к вашим отдельным точкам данных? Разве загрузка массива и индексация в нем не намного проще, компактнее и эффективнее?

0 голосов
/ 27 июня 2009

Как вы будете анализировать эти данные позже?

Предполагая, что вы делаете FFT или аналогичные позже, просто перейдите к варианту 3 - это будет проще и быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...