【问题标题】:Android: CSV database vs SQLite databaseAndroid:CSV 数据库与 SQLite 数据库
【发布时间】:2015-09-13 17:34:35
【问题描述】:

CSV 数据库与 Android 中的 SQLite 数据库相比如何?

查看 StackOverflow 上的其他问题并阅读 Android 开发人员文档后,我发现 SQLite 数据库的使用频率远高于从 CSV 文件中读取数据的频率。还有一些问题是用户希望将 CSV 文件导入 SQLite 数据库(例如,this questionthis one)。使用 SQLite 优于 CSV 是否有优势?

我曾尝试同时使用 CSV 和 SQLite,但在性能方面我没有看到很大的差异,但如果我在这里错了,请纠正我。
我知道读取 CSV 文件有不同的方法,我使用 BufferedReader 打开并读取它,如下所示:

BufferedReader reader = 
        new BufferedReader(new InputStreamReader(context.getAssets().open(fileName)));

并且SQLite数据库以通常的方式打开:

SQLiteDatabase db = helper.getReadableDatabase();

我不太确定功能上的差异,尽管我假设 SQLite 更易于管理和过滤,这就是我问这个问题的原因。

总结一下:

  • 就性能而言,两者中的哪一个更快?
  • SQLite(或 CSV)是否有任何其他功能没有的附加功能,尤其是在 Android 中(我知道 Android 有自己的 SQLiteDatabase class
  • 为什么 SQLite 的使用似乎远远超过 CSV 数据库(即读取和过滤 CSV 文件)?

编辑:

澄清一下,我知道 CSV 文件只是一个用逗号分隔值的文件,即不像 SQL 数据库那样是“数据库”。但是,我仍然可以将 CSV 文件用作一种数据库,其中逗号分隔的值表示不同的列,也可以通过检查特定列是否与特定值匹配来过滤这些列。所以我在问哪个更好地读取数据。

【问题讨论】:

  • CSV 文件不是数据库。它只是纯文本文件中的记录列表。这些记录不可搜索,您无法对它们进行汇总或排序。而且,如果您想操作(即:更新)一行,那将是真正的痛苦。
  • @FrankN.Stein 是的,但我仍然可以使用 CSV 文件作为一种数据库,其中逗号分隔的值表示不同的列,也可以通过检查特定的列来过滤这些列列匹配特定值。
  • Filtered... 仅当您逐行读取文件时,这根本没有效率。假设 CSV 更像是单个表的临时备份。

标签: android csv android-sqlite android-database


【解决方案1】:

SQLite 和 CSV 并不是一回事,这使得比较变得相当困难。 SQLite 是一个(有限的)SQL 数据库,这意味着您可以使用它来存储结构化和相关数据,以确保一致性(相关记录在被删除时不会弄乱)和简单的方式。

即使对于平面数据,SQLite 也可以更轻松地查询数据的子集(例如,其中一列小于三的所有记录),根据需要对数据重新排序并在中间某处插入记录.

另一方面,CSV 只是一个文本文件,您可以将其用于非常简单的数据。它的开销很小,但在数据完整性和易于查询方面对您没有多大帮助。如果您不需要这个,并且总是阅读所有内容,当然,您可以使用 CSV。

如果这些都没有给您敲响警钟(相关记录和数据完整性等),我建议您阅读关系数据库系统。一如既往,Wikipedia is an excellent source

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 2014-03-23
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多