database - Storing Waveforms in Oracle -


I am preparing a new laboratory database. I want to store raw results together for all tests. However, the results can be either a measurement or a raw wave. (See footer)

The case below is the ideal (and why)? ... or provide your own ideal choice.

  test test_id * (other Test field)  

Option 1: separate single values ​​and wave results

  test (1 - many) measurement (\ - too many) RAW_HEADER 1 - many RAW_point solutions RAW_HEADER measurement_id * raw_header_id * test_id (FK) test_id (FK) rec_time DATE as start_time measurement sample_rate RAW_POINT raw_header_id * (FK) point_index * raw_measurement  

Option 2: Overlap common fields from option 1

  Exam (1 - Excluding: - Multiple) Measurements (1 - many) RECORDING_POINT  

Option 1 : Excluding:
& nbsp; & Nbsp; For signals & nbsp; & Nbsp; measurement : measurement sample_additional
& nbsp; & Nbsp; & Nbsp; & Nbsp; RAW_ POINT : raw_header * (FK) has been changed to measure_add * (FK)
& nbsp; & Nbsp; & Nbsp; & Nbsp; RAW_HEADER : not required

Option 3: Encoded signal in Blob Test (1 - many) measurements

  Measurement measure_If BLB  

measurement for a single value measurement and signal NULL
scale sample_tate and signal stores the encoded data points for the signal

Option 4: Overlap normal areas, but Blobs

  test (1 - many) measurement (1 - many) RAW_DATA measurement measurements _ _ _ * test_id (FK) rec_time DATE use RAW_DATA measurement_id * (FK) raw_data as the form of Blob In  

measurement is the solution for a single value Ment
measurement for signal sample_rate

Legend:

  • <__ * _ After the star, the fields are the primary key.
  • After the (FK) field (FK) indicate the foreign key constraint in the field.
  • ____ are all field types of NUMBER unless otherwise specified.

Other information: Raw wave data will be used in many ways: - Plotted (the plot looks correct) - filtered / smoother (for better presentation ) - Get value (maximum, time at minimum price, fall time, etc.)

In addition, the data will be acquired simultaneously on multiple channels. It would be useful to know that the cost of Channel 2 is at a time when Channel 1 reaches the first 500 (some units).

A wave is usually around 4,000 - 25,000 data points.

Other thoughts / questions: Can a part of a blob be returned? In other words, can I remove 4 bytes starting with 4000?

Is an oakical ocular type blob, so that values ​​can be read by Oracle (max: to get minimum, etc.)

Note: < / Strong> This is a post with better developed options.

Whether to believe it or not, I do not think there is really enough information here to make sure for the sake of saying. For example, how will the results usually be processed? Will they be conspirators, or perhaps they have done some sort of numerical analysis? How big is your wave?

Unless your raw results are usually small, I do not like option 1 for this application. To store a data point, there is too much storage overhead

To the lesser extent, the same convulsions will apply to option 2. Option 3: The way I would like to go, I once developed an app to see the waves with an attack of electricity - millions of points per wavelength are the only viable option for that kind of dataset. There is a blob. And (again, depending on some unknown) I seriously consider storing data as binary float or doubles and processing with Java or external programs. Seriously, do you need access to your personal data points? Is not the array being loaded and indexing it so far is simple, more compact and efficient?


Comments

Popular posts from this blog

c++ - Linux and clipboard -

Visual Studio 2005: How to speed up builds when a VSMDI is open? -

booting ubuntu from usb using virtualbox -