【发布时间】:2016-07-30 17:43:26
【问题描述】:
我正在使用 last.fm 数据集开发一个歌曲推荐系统。该数据集由 100 万个 JSON 文件组成,每个文件包含一首歌曲的详细信息。我正在考虑将数据集转移到 MySQL 数据库或 CSV 文件或 TXT 文件。
要推荐一首歌曲,我需要所有其他歌曲的数据。所以基本上我必须检索所有存储的数据。那么数据应该存储在哪里以提供最短的检索时间呢?
我知道数据库的设计目的是在我们检索存储数据的子集时有效地存储和检索数据,并且在大多数情况下,与 CSV 或 TXT 文件相比,它是更好的选择。但在这种情况下,如果我将数据存储在 MySQL 数据库中,然后要检索数据,我将只触发 select * from table 查询。这比将数据存储为 CSV 或 TXT 文件有什么优势吗?
它将成为 Tomcat 服务器上的 Java Web 应用程序。 即使我使用 MySQL 数据库来存储和检索数据,我也会查询一百万个条目。是否有可能耗尽内存错误?如果是 CSV 或 TXT 文件,我将逐行读取文件。所以不会出现内存不足的错误。
需要考虑的事项:
- 数据是静态的。一旦数据被存储,数据将只被读取。
- 需要所有歌曲的数据。然而,一次只需要一首歌曲的数据。
- MySQL 数据库是本地的。所以没有带宽开销。
- 我将使用
BufferedReader来读取 CSV 或 TXT 文件
【问题讨论】:
-
问:数据应该存储在哪里以提供最短的检索时间? A:在记忆中的一棵树中。