2011-04-29 16 views
2

我在寫一個Android應用程序來記錄和保存高速率加速度計數據(以及後來的陀螺儀數據)。我的數據的架構看起來像:將加速度傳感器讀數記錄到SQLite或平面文件?

timestamp, x_accel, y_accel, z_accel 

我應該將數據保存到SQLite的或成平面文件(使用的FileWriter和BufferedWriter將作爲解釋here)?哪一個具有最低延遲或更合適?

最終我需要將數據作爲csv文件導入到Excel中以創建圖形。所以如果我寫入SQLite,我需要稍後將它寫出到csv。

回答

1

要麼會明顯的工作,但我個人(不提倡或任何東西支持)的經驗法則是,如果你可以用文件完成你的任務,去爲它。與數據庫代碼相比,編寫和管理起來更容易,您可以將其格式化爲CSV格式,而且以後不需要轉換。我說不要過度思考。 BufferedWriter將爲您編寫大塊文件,因此只需將輸出流保持打開狀態,直到完成記錄數據爲止,並且不應有任何延遲問題。 (當你完成時,不要忘記flush()close(),Java中的規則和生活中的規則一樣)。

+0

「當你完成時,不要忘記flush()和close(),在Java中適合使用一個規則,就像它在生活中一樣。」 - LOL! – stackoverflowuser2010 2011-04-29 19:47:53

0

您應該看到更好的性能,方法是收集大量的這些數據,然後將其作爲大塊寫入平面文件。正如你所提到的,事後提取會更容易。

1

如果是我,我會使用SQLite數據庫。 SQLite速度非常快,但更重要的是,它比平面文件提供了更大的靈活性。您可以比平面文件格式更容易地更新數據庫結構,並且您可以更好地對數據進行排序和搜索,這對於您必須將其導出到CSV時可能很有用。

+1

SQLite每秒可以處理多少次插入?我計劃以每秒2次(500毫秒間隔)或每秒10次(每隔100毫秒)的速率插入加速度計數據。 – stackoverflowuser2010 2011-05-02 21:52:54

+0

我從來沒有測試過,但SQLite速度非常快。我認爲只要您使用交易,它就可以處理這種數據。 – 2011-05-06 20:32:25