I hope you can help me with this one.
I am currently redesigning an application (.NET) and now I have come to the part were I 
have to overthink the data storage.

Basically every 10 seconds or so (can vary, but this is the fastest) I get a new dataset containing an array of float values and a timeStamp. (These arrays can be pretty large, so I have to deal with lots of data [Can go up to hundreds of mb or even gb]) The length of a array is fixed per procedure (lets call it run) but will vary during different runs. I will only look at one run at a time.

So my question is:

How do I save this data and how do I handle it in my application?

Especially if I want to read out a dataset with a specific timestamp,

a list of float values from a given index

and a 2d list of float values given an index range and a timestamp range.

[Edit: Data needs to be stored local]