2017-06-02 84 views
0

我想讀取不同的生物傳感器以及平板傳感器數據並將它們存儲在SQL數據庫中。生物傳感器數據是例如皮膚電導率,心率,心率變異性等。這些只是數字(與一個單位)。關於平板電腦傳感器數據,我有觸摸輸入,加速度,前凸輪,觸控筆輸入等。基本上這些也只是除了手寫筆和前凸輪之外的其他數字。用於存儲傳感器測量的數據庫方案

關於我想創建一個表中的列時間戳用戶ID片劑ID傳感器ID單元的SQL數據庫方案。的關鍵將是(時間戳用戶ID片劑ID傳感器ID),因爲可以有在同一時間不同的傳感器的測量值。我使用平板電腦記錄所有傳感器值(也是生物傳感器數據),因此總是有平板電腦ID。這也意味着數據庫在平板電腦上保留。我正在使用Android。

我不知道這些是否合理。也許每個傳感器都有一個單獨的表格會很好。你會如何制定這樣一個計劃,或者是否有另一個提出一個好計劃的建議?

其次,我應該如何存儲手寫輸入和前置攝像頭(視頻)錄製?我想將視頻記錄不是存儲在數據庫中,而是存儲在外部,然後以某種方式將數據庫鏈接到該外部文件(例如通過文件名)。

將會有大量的數據存儲。我將在60分鐘內收集傳感器數據,並且每秒都會寫入幾個值(例如,對於生物傳感器數據每1/10秒就有一個新值)。所以這可能是數據庫變得太大或太慢的問題。順便說一下,我只想寫入數據庫。讀取數據庫我會在第二個(離線)步驟中完成。

+0

您的桌子是否需要鑰匙?據推測,你只是存儲一大堆數據,該數據不會從任何其他表中引用... –

+0

@RB。是的,只有一張桌子我不需要鑰匙,但正如我寫的,我正在尋求一個更好的方案與多個表。 – machinery

+0

@ dan1111觸控筆和前置攝像頭輸入不僅僅是數字。 – machinery

回答

1

我會傾向每個傳感器的單獨表格。原因:

  • 它似乎並不像你通常要分析的數據不同的傳感器一起,因爲它們代表了不同的東西。
  • 您不必存儲設備或傳感器ID。如果您正在處理大量傳感器讀數 - 特別是在存儲有限的平板電腦環境中,存儲節省可能會很大。
  • 如果您嘗試以高速率從多個不同傳感器插入記錄,則共享表可能存在鎖定問題

我還會創建一個表來捕獲與設備的一個交互週期。我們稱之爲「會話」。

這將爲其他表格提供一個關鍵字,還允許您定義視頻和手寫筆數據文件與該會話關聯的內容。

所以,你會是這樣的:

session (
    session_id, 
    user_id, 
    tablet_id, 
    video_file, 
    stylus_data_file, 
    session_start_time, 
    session_end_time, 
    ... any other session-level data ... 
) 

然後爲每個傳感器有一個表,如:

heart_rate_readings (
    session_id, 
    timestamp, 
    value 
) 

注:我不知道有足夠的瞭解手寫筆數據給出明智的意見。上面假設它將被存儲在一個單獨的文件中。但是,如果它只是您接收的座標流,則可以考慮將其存儲在數據庫中的單獨表中。

+0

非常感謝你的回答。我應該使用交易(如果是,何時提交)還是應該將每個傳感器讀數放入一個交易中?其次,我應該爲處理數據庫的每個傳感器使用一個線程(插入新行)? – machinery

1

一些想法:

我假設每個傳感器的數據總是使用相同的單位。也就是說,如果今天傳感器#7以歐姆爲單位給出一個值,明天它不會以毫米爲單位給出一個值。更合理的是,我想可能會有一些設置讓你在英寸和釐米之間切換等等。但是如果單位總是相同,那麼不要將單位存儲在同一個表中。有一個單獨的「傳感器」表,爲傳感器提供單元,可能還包括有關傳感器的其他信息,如名稱。

是否每個傳感器都有一個表格或每個傳感器有單獨的表格:一個表格的巨大優勢是,如果添加新的傳感器,則不必更改模式,只需要數據:添加記錄傳感器表,你就完成了。如果有很多數據,這個表格可能會變大。但是每個記錄都非常小:我認爲傳感器ID和平板電腦ID可以是int。用戶ID可能是一個int或一個GUID。

我從來沒有試圖將視頻存儲在數據庫中。我存儲了圖像,與其他數據相比,這些圖像非常龐大。視頻通常至少爲兆字節。我的直覺就是將它們存儲爲單個文件並存儲文件名。我會很樂意屈服於任何想要將視頻添加到數據庫中的人,並且可以說出結果。

+0

我是否應該使用交易(如果是,何時提交)還是應該將每個傳感器讀數放入一個交易?其次,我應該爲處理數據庫的每個傳感器使用一個線程(插入新行)? – machinery

+0

我猜測傳感器讀數是獨立有效的。我的意思是,如果你得到心率,但由於某種原因系統無法獲得血壓,心率可能仍然是一個很好且有用的測量。假設這是事實,它們不應該是交易。如果只有一起閱讀纔有意義,則可能存在交易的情況。使用交易的正常原因是爲了防止不一致的狀態,就像試圖在兩個賬戶之間轉移資金一樣,所以你從一個賬戶中扣除,但是然後未能嘗試添加到另一個賬戶中,所以現在這些錢... – Jay

+0

...剛剛消失。 – Jay