Some simple ERDDAP timing tests

Time how long it takes to get data via ERDDAP.

Here we are using the IOOS NERACOOS ERDDAP service at http://www.neracoos.org/erddap.

Lots of factors affect timing, as described at the end.

But for these tests it's pretty darn speedy!


In [1]:
%matplotlib inline
import urllib, json
import pandas as pd

Try CSV response for 1 week of accelerometer (wave) data from NERACOOS Buoy B off Portland, ME


In [2]:
url = 'http://www.neracoos.org/erddap/tabledap/B01_accelerometer_all.csv?time,significant_wave_height&time>"now-7days"'
print(url)


http://www.neracoos.org/erddap/tabledap/B01_accelerometer_all.csv?time,significant_wave_height&time>"now-7days"

In [3]:
%%timeit
df_sb = pd.read_csv(url,index_col='time',parse_dates=True,skiprows=[1])  # skip the units row


1 loop, best of 3: 67 ms per loop

In [4]:
df_sb = pd.read_csv(url,index_col='time',parse_dates=True,skiprows=[1])  # skip the units row 
df_sb.plot(figsize=(12,4),grid='on');


How about 1 year of data?


In [18]:
url = 'http://www.neracoos.org/erddap/tabledap/B01_accelerometer_all.csv?time,significant_wave_height&time>"now-365days"'
print(url)


http://www.neracoos.org/erddap/tabledap/B01_accelerometer_all.csv?time,significant_wave_height&time>"now-365days"

In [19]:
%%timeit
df_sb = pd.read_csv(url,index_col='time',parse_dates=True,skiprows=[1])  # skip the units row


1 loop, best of 3: 388 ms per loop

In [20]:
df_sb = pd.read_csv(url,index_col='time',parse_dates=True,skiprows=[1])  # skip the units row 
df_sb.plot(figsize=(12,4),grid='on');


Try JSON response -- might want to use this in a web app


In [8]:
url = 'http://www.neracoos.org/erddap/tabledap/B01_accelerometer_all.json?time,significant_wave_height&time>"now-7days"'
print(url)


http://www.neracoos.org/erddap/tabledap/B01_accelerometer_all.json?time,significant_wave_height&time>"now-7days"

In [9]:
%%timeit
response = urllib.urlopen(url)
data = json.loads(response.read())


10 loops, best of 3: 96.4 ms per loop

In [10]:
response = urllib.urlopen(url)
data = json.loads(response.read())

In [11]:
data


Out[11]:
{u'table': {u'columnNames': [u'time', u'significant_wave_height'],
  u'columnTypes': [u'String', u'float'],
  u'columnUnits': [u'UTC', u'meters'],
  u'rows': [[u'2017-01-18T17:00:00Z', 2.1363115],
   [u'2017-01-18T17:30:00Z', 2.6868901],
   [u'2017-01-18T18:00:00Z', 2.86435],
   [u'2017-01-18T18:30:00Z', 3.0311515],
   [u'2017-01-18T19:00:00Z', 2.9257133],
   [u'2017-01-18T19:30:00Z', 2.902714],
   [u'2017-01-18T20:00:00Z', 2.853798],
   [u'2017-01-18T20:30:00Z', 3.1318264],
   [u'2017-01-18T21:00:00Z', 3.4343703],
   [u'2017-01-18T21:30:00Z', 3.4868062],
   [u'2017-01-18T22:00:00Z', 2.6982548],
   [u'2017-01-18T22:30:00Z', 3.3352795],
   [u'2017-01-18T23:00:00Z', 3.1377385],
   [u'2017-01-18T23:30:00Z', 2.984962],
   [u'2017-01-19T00:00:00Z', 3.1228244],
   [u'2017-01-19T00:30:00Z', 3.080198],
   [u'2017-01-19T01:00:00Z', 2.9236872],
   [u'2017-01-19T01:30:00Z', 3.1152282],
   [u'2017-01-19T02:00:00Z', 3.0849724],
   [u'2017-01-19T02:30:00Z', 2.8047462],
   [u'2017-01-19T03:00:00Z', 2.7223408],
   [u'2017-01-19T03:30:00Z', 2.8003414],
   [u'2017-01-19T04:00:00Z', 2.6096396],
   [u'2017-01-19T04:30:00Z', 2.500588],
   [u'2017-01-19T05:00:00Z', 2.2412627],
   [u'2017-01-19T05:30:00Z', 2.4880273],
   [u'2017-01-19T06:00:00Z', 2.16857],
   [u'2017-01-19T06:30:00Z', 2.0880904],
   [u'2017-01-19T07:00:00Z', 1.8989073],
   [u'2017-01-19T07:30:00Z', 2.19355],
   [u'2017-01-19T08:00:00Z', 1.8575447],
   [u'2017-01-19T08:30:00Z', 2.1683164],
   [u'2017-01-19T09:00:00Z', 2.064709],
   [u'2017-01-19T09:30:00Z', 1.6505376],
   [u'2017-01-19T10:00:00Z', 1.8509429],
   [u'2017-01-19T10:30:00Z', 1.797358],
   [u'2017-01-19T11:00:00Z', 2.0426307],
   [u'2017-01-19T11:30:00Z', 1.7955549],
   [u'2017-01-19T12:00:00Z', 1.7976843],
   [u'2017-01-19T12:30:00Z', 1.6082859],
   [u'2017-01-19T13:00:00Z', 1.8651937],
   [u'2017-01-19T13:30:00Z', 1.8388188],
   [u'2017-01-19T14:00:00Z', 1.7441597],
   [u'2017-01-19T14:30:00Z', 1.7808914],
   [u'2017-01-19T15:00:00Z', 1.7679493],
   [u'2017-01-19T15:30:00Z', 1.7344997],
   [u'2017-01-19T16:00:00Z', 1.8045877],
   [u'2017-01-19T16:30:00Z', 1.6712806],
   [u'2017-01-19T17:00:00Z', 1.8222216],
   [u'2017-01-19T17:30:00Z', 1.736502],
   [u'2017-01-19T18:00:00Z', 1.5858434],
   [u'2017-01-19T18:30:00Z', 1.4575255],
   [u'2017-01-19T19:00:00Z', 1.6349002],
   [u'2017-01-19T19:30:00Z', 1.7859513],
   [u'2017-01-19T20:00:00Z', 1.6962956],
   [u'2017-01-19T20:30:00Z', 1.5245198],
   [u'2017-01-19T21:00:00Z', 1.6378174],
   [u'2017-01-19T21:30:00Z', 1.473151],
   [u'2017-01-19T22:00:00Z', 1.7500677],
   [u'2017-01-19T22:30:00Z', 1.5099304],
   [u'2017-01-19T23:00:00Z', 1.7201148],
   [u'2017-01-19T23:30:00Z', 1.7150124],
   [u'2017-01-20T00:00:00Z', 1.6445683],
   [u'2017-01-20T00:30:00Z', 1.5702142],
   [u'2017-01-20T01:00:00Z', 1.6389626],
   [u'2017-01-20T01:30:00Z', 1.6687053],
   [u'2017-01-20T02:00:00Z', 1.5752987],
   [u'2017-01-20T02:30:00Z', 1.7527572],
   [u'2017-01-20T03:00:00Z', 1.5582483],
   [u'2017-01-20T03:30:00Z', 1.6097484],
   [u'2017-01-20T04:00:00Z', 1.7237676],
   [u'2017-01-20T04:30:00Z', 1.6993961],
   [u'2017-01-20T05:00:00Z', 1.7755157],
   [u'2017-01-20T05:30:00Z', 1.7836603],
   [u'2017-01-20T06:00:00Z', 1.5769743],
   [u'2017-01-20T06:30:00Z', 1.6498504],
   [u'2017-01-20T07:00:00Z', 1.8417139],
   [u'2017-01-20T07:30:00Z', 2.0874074],
   [u'2017-01-20T08:00:00Z', 1.7532817],
   [u'2017-01-20T08:30:00Z', 1.6205124],
   [u'2017-01-20T09:00:00Z', 1.6662254],
   [u'2017-01-20T09:30:00Z', 1.6642132],
   [u'2017-01-20T10:00:00Z', 1.5567672],
   [u'2017-01-20T10:30:00Z', 1.5993571],
   [u'2017-01-20T11:00:00Z', 1.6755167],
   [u'2017-01-20T11:30:00Z', 1.3917139],
   [u'2017-01-20T12:00:00Z', 2.1052175],
   [u'2017-01-20T12:30:00Z', 1.7916903],
   [u'2017-01-20T13:00:00Z', 1.3310652],
   [u'2017-01-20T13:30:00Z', 1.4262727],
   [u'2017-01-20T14:00:00Z', 1.8314042],
   [u'2017-01-20T14:30:00Z', 1.4297895],
   [u'2017-01-20T15:00:00Z', 1.5410335],
   [u'2017-01-20T15:30:00Z', 1.6658181],
   [u'2017-01-20T16:00:00Z', 1.6267589],
   [u'2017-01-20T16:30:00Z', 1.6230087],
   [u'2017-01-20T17:00:00Z', 1.7241735],
   [u'2017-01-20T17:30:00Z', 1.3210121],
   [u'2017-01-20T18:00:00Z', 1.3458747],
   [u'2017-01-20T18:30:00Z', 1.4755024],
   [u'2017-01-20T19:00:00Z', 1.458999],
   [u'2017-01-20T19:30:00Z', 1.3441204],
   [u'2017-01-20T20:00:00Z', 1.3749188],
   [u'2017-01-20T20:30:00Z', 1.5098542],
   [u'2017-01-20T21:00:00Z', 1.1950682],
   [u'2017-01-20T21:30:00Z', 1.2655256],
   [u'2017-01-20T22:00:00Z', 1.0826076],
   [u'2017-01-20T22:30:00Z', 1.2674309],
   [u'2017-01-20T23:00:00Z', 0.94046944],
   [u'2017-01-20T23:30:00Z', 1.2576339],
   [u'2017-01-21T00:00:00Z', 1.0983876],
   [u'2017-01-21T00:30:00Z', 1.4548879],
   [u'2017-01-21T01:00:00Z', 1.429063],
   [u'2017-01-21T01:30:00Z', 1.3878609],
   [u'2017-01-21T02:00:00Z', 0.8826352],
   [u'2017-01-21T02:30:00Z', 1.3041992],
   [u'2017-01-21T03:00:00Z', 1.358704],
   [u'2017-01-21T03:30:00Z', 1.1080343],
   [u'2017-01-21T04:00:00Z', 1.3672534],
   [u'2017-01-21T04:30:00Z', 1.3176409],
   [u'2017-01-21T05:00:00Z', 1.330971],
   [u'2017-01-21T05:30:00Z', 1.17535],
   [u'2017-01-21T06:00:00Z', 1.1869936],
   [u'2017-01-21T06:30:00Z', 1.3036836],
   [u'2017-01-21T07:00:00Z', 1.2781302],
   [u'2017-01-21T07:30:00Z', 1.2119478],
   [u'2017-01-21T08:00:00Z', 1.2010633],
   [u'2017-01-21T08:30:00Z', 0.42743105],
   [u'2017-01-21T09:00:00Z', 1.2775978],
   [u'2017-01-21T09:30:00Z', 0.50333226],
   [u'2017-01-21T10:00:00Z', 1.1920077],
   [u'2017-01-21T10:30:00Z', 1.3591453],
   [u'2017-01-21T11:00:00Z', 1.2469006],
   [u'2017-01-21T11:30:00Z', 1.3735657],
   [u'2017-01-21T12:00:00Z', 1.345861],
   [u'2017-01-21T12:30:00Z', 1.2198412],
   [u'2017-01-21T13:00:00Z', 1.4167954],
   [u'2017-01-21T13:30:00Z', 0.54383063],
   [u'2017-01-21T14:00:00Z', 1.7043433],
   [u'2017-01-21T14:30:00Z', 1.7027516],
   [u'2017-01-21T15:00:00Z', 1.4171711],
   [u'2017-01-21T15:30:00Z', 1.4782482],
   [u'2017-01-21T16:00:00Z', 1.4629267],
   [u'2017-01-21T16:30:00Z', 1.7497244],
   [u'2017-01-21T17:00:00Z', 1.322843],
   [u'2017-01-21T17:30:00Z', 1.4402841],
   [u'2017-01-21T18:00:00Z', 1.6624367],
   [u'2017-01-21T18:30:00Z', 1.6458187],
   [u'2017-01-21T19:00:00Z', 1.3145082],
   [u'2017-01-21T19:30:00Z', 0.32325843],
   [u'2017-01-21T20:00:00Z', 1.6292748],
   [u'2017-01-21T20:30:00Z', 1.7405411],
   [u'2017-01-21T21:00:00Z', 1.36964],
   [u'2017-01-21T21:30:00Z', 1.3881631],
   [u'2017-01-21T22:00:00Z', 1.5137212],
   [u'2017-01-21T22:30:00Z', 1.1356192],
   [u'2017-01-21T23:00:00Z', 1.0985093],
   [u'2017-01-21T23:30:00Z', 1.1402829],
   [u'2017-01-22T00:00:00Z', 1.3752464],
   [u'2017-01-22T00:30:00Z', 1.5713907],
   [u'2017-01-22T01:00:00Z', 1.2281907],
   [u'2017-01-22T01:30:00Z', 1.7152399],
   [u'2017-01-22T02:00:00Z', 1.3646251],
   [u'2017-01-22T02:30:00Z', 1.5843903],
   [u'2017-01-22T03:00:00Z', 1.4582276],
   [u'2017-01-22T03:30:00Z', 1.5472696],
   [u'2017-01-22T04:00:00Z', 1.6512576],
   [u'2017-01-22T04:30:00Z', 1.5608788],
   [u'2017-01-22T05:00:00Z', 1.849599],
   [u'2017-01-22T05:30:00Z', 1.5416849],
   [u'2017-01-22T06:00:00Z', 1.5557686],
   [u'2017-01-22T06:30:00Z', 1.5147209],
   [u'2017-01-22T07:00:00Z', 1.6018555],
   [u'2017-01-22T07:30:00Z', 2.2458715],
   [u'2017-01-22T08:00:00Z', 1.5902505],
   [u'2017-01-22T08:30:00Z', 1.7543564],
   [u'2017-01-22T09:00:00Z', 1.3019818],
   [u'2017-01-22T09:30:00Z', 1.3374741],
   [u'2017-01-22T10:00:00Z', 1.583749],
   [u'2017-01-22T10:30:00Z', 1.3423568],
   [u'2017-01-22T11:00:00Z', 1.1780806],
   [u'2017-01-22T11:30:00Z', 1.3322272],
   [u'2017-01-22T12:00:00Z', 1.6810244],
   [u'2017-01-22T12:30:00Z', 0.31402516],
   [u'2017-01-22T13:00:00Z', 0.34840515],
   [u'2017-01-22T13:30:00Z', 0.5090882],
   [u'2017-01-22T14:00:00Z', 1.9162728],
   [u'2017-01-22T14:30:00Z', 1.7289457],
   [u'2017-01-22T15:00:00Z', 2.0365963],
   [u'2017-01-22T15:30:00Z', 1.939999],
   [u'2017-01-22T16:00:00Z', 1.1841121],
   [u'2017-01-22T16:30:00Z', 1.2747388],
   [u'2017-01-22T17:00:00Z', 1.309546],
   [u'2017-01-22T17:30:00Z', 1.3955045],
   [u'2017-01-22T18:00:00Z', 1.7599446],
   [u'2017-01-22T18:30:00Z', 1.3378097],
   [u'2017-01-22T19:00:00Z', 1.8640904],
   [u'2017-01-22T19:30:00Z', 1.2780277],
   [u'2017-01-22T20:00:00Z', 1.1232182],
   [u'2017-01-22T20:30:00Z', 1.7800462],
   [u'2017-01-22T21:00:00Z', 1.3819249],
   [u'2017-01-22T21:30:00Z', 1.3130558],
   [u'2017-01-22T22:00:00Z', 1.4781324],
   [u'2017-01-22T22:30:00Z', 1.4922742],
   [u'2017-01-22T23:00:00Z', 1.683036],
   [u'2017-01-22T23:30:00Z', 1.735533],
   [u'2017-01-23T00:00:00Z', 1.5152596],
   [u'2017-01-23T00:30:00Z', 1.4987535],
   [u'2017-01-23T01:00:00Z', 1.9739679],
   [u'2017-01-23T01:30:00Z', 1.7127569],
   [u'2017-01-23T02:00:00Z', 1.8494241],
   [u'2017-01-23T02:30:00Z', 2.353102],
   [u'2017-01-23T03:00:00Z', 2.384237],
   [u'2017-01-23T03:30:00Z', 1.9646969],
   [u'2017-01-23T04:00:00Z', 2.034077],
   [u'2017-01-23T04:30:00Z', 1.9373648],
   [u'2017-01-23T05:00:00Z', 1.8246719],
   [u'2017-01-23T05:30:00Z', 1.9953657],
   [u'2017-01-23T06:00:00Z', 2.7441301],
   [u'2017-01-23T06:30:00Z', 2.2272305],
   [u'2017-01-23T07:00:00Z', 2.2653515],
   [u'2017-01-23T07:30:00Z', 2.557363],
   [u'2017-01-23T08:00:00Z', 2.3603942],
   [u'2017-01-23T08:30:00Z', 2.3619132],
   [u'2017-01-23T09:00:00Z', 2.1248932],
   [u'2017-01-23T09:30:00Z', 2.2588675],
   [u'2017-01-23T10:00:00Z', 2.2597582],
   [u'2017-01-23T10:30:00Z', 2.2380655],
   [u'2017-01-23T11:00:00Z', 2.490169],
   [u'2017-01-23T11:30:00Z', 2.3678296],
   [u'2017-01-23T12:00:00Z', 2.5232735],
   [u'2017-01-23T12:30:00Z', 2.1556194],
   [u'2017-01-23T13:00:00Z', 2.3644252],
   [u'2017-01-23T13:30:00Z', 2.3493738],
   [u'2017-01-23T14:00:00Z', 2.38378],
   [u'2017-01-23T14:30:00Z', 2.296518],
   [u'2017-01-23T15:00:00Z', 2.356626],
   [u'2017-01-23T15:30:00Z', 2.576331],
   [u'2017-01-23T16:00:00Z', 2.6571913],
   [u'2017-01-23T16:30:00Z', 2.722297],
   [u'2017-01-23T17:00:00Z', 2.9410543],
   [u'2017-01-23T17:30:00Z', 2.563412],
   [u'2017-01-23T18:00:00Z', 2.9121656],
   [u'2017-01-23T18:30:00Z', 3.1028032],
   [u'2017-01-23T19:00:00Z', 2.931221],
   [u'2017-01-23T19:30:00Z', 2.7692926],
   [u'2017-01-23T20:00:00Z', 3.0167482],
   [u'2017-01-23T20:30:00Z', 3.024919],
   [u'2017-01-23T21:00:00Z', 2.8847978],
   [u'2017-01-23T21:30:00Z', 3.2907817],
   [u'2017-01-23T22:00:00Z', 3.466841],
   [u'2017-01-23T22:30:00Z', 3.1951795],
   [u'2017-01-23T23:00:00Z', 3.268244],
   [u'2017-01-23T23:30:00Z', 3.699075],
   [u'2017-01-24T00:00:00Z', 3.163894],
   [u'2017-01-24T00:30:00Z', 3.517477],
   [u'2017-01-24T01:00:00Z', 3.537812],
   [u'2017-01-24T01:30:00Z', 3.4126236],
   [u'2017-01-24T02:00:00Z', 3.509783],
   [u'2017-01-24T02:30:00Z', 3.6157544],
   [u'2017-01-24T03:00:00Z', 3.9307997],
   [u'2017-01-24T03:30:00Z', 4.0241213],
   [u'2017-01-24T04:00:00Z', 4.822984],
   [u'2017-01-24T04:30:00Z', 4.1191483],
   [u'2017-01-24T05:00:00Z', 4.5353417],
   [u'2017-01-24T05:30:00Z', 4.5181317],
   [u'2017-01-24T06:00:00Z', 4.2853913],
   [u'2017-01-24T06:30:00Z', 4.479068],
   [u'2017-01-24T07:00:00Z', 4.772439],
   [u'2017-01-24T07:30:00Z', 5.6696296],
   [u'2017-01-24T08:00:00Z', 5.8485355],
   [u'2017-01-24T08:30:00Z', 5.76195],
   [u'2017-01-24T09:00:00Z', 4.99296],
   [u'2017-01-24T09:30:00Z', 5.2033753],
   [u'2017-01-24T10:00:00Z', 5.474797],
   [u'2017-01-24T10:30:00Z', 4.6557956],
   [u'2017-01-24T11:00:00Z', 6.3097324],
   [u'2017-01-24T11:30:00Z', 5.3429084],
   [u'2017-01-24T12:00:00Z', 5.42],
   [u'2017-01-24T12:30:00Z', 5.880131],
   [u'2017-01-24T13:00:00Z', 7.3962607],
   [u'2017-01-24T13:30:00Z', 5.3783092],
   [u'2017-01-24T14:00:00Z', 6.1151204],
   [u'2017-01-24T14:30:00Z', 2.4983869],
   [u'2017-01-24T15:00:00Z', 5.9329224],
   [u'2017-01-24T15:30:00Z', 5.4836802],
   [u'2017-01-24T16:00:00Z', 7.6538734],
   [u'2017-01-24T16:30:00Z', 0.8008922],
   [u'2017-01-24T17:00:00Z', 6.014764],
   [u'2017-01-24T17:30:00Z', 6.1032743],
   [u'2017-01-24T18:00:00Z', 8.2486105],
   [u'2017-01-24T18:30:00Z', 6.2274766],
   [u'2017-01-24T19:00:00Z', 7.7879725],
   [u'2017-01-24T19:30:00Z', 6.31124],
   [u'2017-01-24T20:00:00Z', 6.233973],
   [u'2017-01-24T20:30:00Z', 8.502454],
   [u'2017-01-24T21:00:00Z', 5.7541685],
   [u'2017-01-24T21:30:00Z', 5.535206],
   [u'2017-01-24T22:00:00Z', 5.500937],
   [u'2017-01-24T22:30:00Z', 5.234795],
   [u'2017-01-24T23:00:00Z', 5.0667562],
   [u'2017-01-24T23:30:00Z', 4.620173],
   [u'2017-01-25T00:00:00Z', 5.8019886],
   [u'2017-01-25T00:30:00Z', 1.5193235],
   [u'2017-01-25T01:00:00Z', 4.495218],
   [u'2017-01-25T01:30:00Z', 4.7069545],
   [u'2017-01-25T02:00:00Z', 4.723055],
   [u'2017-01-25T02:30:00Z', 5.161412],
   [u'2017-01-25T03:00:00Z', 4.509254],
   [u'2017-01-25T03:30:00Z', 4.2276497],
   [u'2017-01-25T04:00:00Z', 4.403115],
   [u'2017-01-25T04:30:00Z', 4.653558],
   [u'2017-01-25T05:00:00Z', 4.8003645],
   [u'2017-01-25T05:30:00Z', 3.8106747],
   [u'2017-01-25T06:00:00Z', 3.78945],
   [u'2017-01-25T06:30:00Z', 4.0594463],
   [u'2017-01-25T07:00:00Z', 3.5626378],
   [u'2017-01-25T07:30:00Z', 4.112329],
   [u'2017-01-25T08:00:00Z', 3.7344484],
   [u'2017-01-25T08:30:00Z', 3.7410007],
   [u'2017-01-25T09:00:00Z', 3.593731],
   [u'2017-01-25T09:30:00Z', 3.477847],
   [u'2017-01-25T10:00:00Z', 3.2032561],
   [u'2017-01-25T10:30:00Z', 3.079367],
   [u'2017-01-25T11:00:00Z', 3.0754032],
   [u'2017-01-25T11:30:00Z', 3.1170216],
   [u'2017-01-25T12:00:00Z', 2.7903783],
   [u'2017-01-25T12:30:00Z', 3.0181916],
   [u'2017-01-25T13:00:00Z', 2.5165727],
   [u'2017-01-25T13:30:00Z', 2.508993],
   [u'2017-01-25T14:00:00Z', 2.7889051],
   [u'2017-01-25T14:30:00Z', 2.5887632],
   [u'2017-01-25T15:00:00Z', 2.656679],
   [u'2017-01-25T15:30:00Z', 2.6607733],
   [u'2017-01-25T16:00:00Z', 2.4840262]]}}

In general the time to retrieve data depends on:

  • the length of the time period requested
  • the sampling interval
  • how the data is stored/accessed (various binary file types vs various text file types vs database vs remote data servers, vs ...)
  • how the data is organized in the source files (one file per station? one file per station per month?)
  • whether the HTTP header of the request includes accept-encoding ("gzip", "x-gzip", or "deflate"). Browsers automatically include this. Compression is more work but less data to be transferred, especially for text formats like .csv and .json.
  • the response file type (some are streamable, some are cached, some are verbose, ...)
  • The load on the server, especially the RAID/drives.
  • The available bandwidth of the server's and the user's network.

Bob Simons from NOAA adds: "Some timing issues are counter-intuitive. For example, .nc files are binary so you would expect a request for a .nc file to be done very quickly. But .nc files can't be streamed. So they must be completely created on the server, then transmitted. In contrast, a .csv file can be streamed (ERDDAP reads from a file, writes a chunk to the user, reads another file, writes another chunk to the user). And although csv files are verbose, compression during transmission means that the number of bytes transmitted may actually be less than an uncompressed .nc file. So the actual results are hard to predict -- there are lots of factors."

But this is encouraging, as this suggests ERDDAP would be fast enough to acts as a backend data system to build a dashboard to status a bunch of instruments