我正在编写一个Android应用来记录和保存高速加速度计数据(以及后来的陀螺仪数据)。我的数据架构如下:
timestamp, x_accel, y_accel, z_accel
我应该将数据保存到SQLite还是平面文件中(使用FileWriter和BufferedWriter,如here所述)?哪一个具有最低延迟或更合适?
最终我需要将数据作为csv文件导入Excel以创建图形。因此,如果我写入SQLite,我需要稍后将其写入csv。
答案 0 :(得分:1)
要么显然会起作用,但我的个人(不提倡或任何东西支持)经验法则是,如果你可以用文件完成任务,那就去做吧。编写和管理比数据库代码更容易,并且您可以在运行时将其格式化为CSV,以后不需要转换。我说不要过度思考。 BufferedWriter
将负责为您编写大量文本,因此只需保持输出流处于打开状态,直到您完成记录数据为止,并且您不应该遇到任何延迟问题。 (当你完成时,不要忘记flush()
和close()
,这是Java中适用的规则,与生活中一样。
答案 1 :(得分:1)
如果是我,我会使用SQLite数据库。 SQLite非常快,但更重要的是,它提供了比平面文件更大的灵活性。您可以比平面文件格式更轻松地更新数据库结构,并且您将能够更好地排序和搜索数据,这对于您必须将其导出为CSV时非常有用。
答案 2 :(得分:0)
通过收集大量此类数据,然后将其作为大块写入平面文件,您应该会看到更好的性能。正如您所提到的,之后提取起来会更容易。