0

我们正在建立一个网站,它使用一些静态数据,如“国家、与每个国家相关的城市、山脉等”。

我的朋友建议将它们存储在 CSV 文件中并使用 javascript 导入它们会更快。他说它比从 mysql 获取它们要快。

我想坚持使用 mysql,以便我们将所有东西都放在一个地方。我不认为 0.00001 秒真的很重要。

你能帮助我们吗?我们什么时候应该使用mysql,什么时候使用csv?

  • 我们正在谈论静态数据。我们将来不会改变它们
  • 我们正在建设的网站是php,angularjs
4

6 回答 6

3

更快可能不是决定做什么的最佳标准。

我敢打赌,你的朋友没有任何数据支持或反驳这两个建议。

JavaScript 导入不是网络跃点,就像对数据库的调用一样吗?

我会妥协:将它们放在 MySQL 中,在启动时将它们加载到内存中,然后将它们缓存在中间层。您只需支付网络跃点费用,即可将它们从中间层获取到浏览器,并且数据将存储在真实数据库中。

如果你没有中间层,那么你就不走运了。

每个用户都需要该表中的所有值,还是只需要几个?为什么要强迫每个用户接受大下载?

于 2012-09-18T16:55:41.383 回答
2

一般来说,可预测位置的可预测文件比数据库查找要快得多。DB 是查找/定位,从磁盘中提取,交付。文件是您想要的位置,并且不涉及查找。

许多缓存技术会将内容存储到数据库以用于管理目的,但条目的内容也会写入文件以便在需要时快速查找。

您可能需要考虑两者的混合。数据库管理和文件缓存。您将两全其美,并构建一个平台供以后在州列表管理之外使用。

有许多缓存技术和方法。例如,我部署按需缓存。如果文件不在我期望的位置,我会从数据库缓存到按需动态写入的文件中。当数据库条目被更新时,杀死缓存的文件。随后,当文件被请求时,该文件被写入。

于 2012-09-18T17:11:34.900 回答
1

对于这种静态数据,使用 MySQL(我能想到的)的唯一真正动机是数据库验证。我建议只使用 CSV,特别是如果您不打算更改它。

于 2012-09-18T16:49:36.683 回答
0

从 CSV 检索数据可能会更快,但它不会为您提供参照完整性。如果你说类似

users ( 
    country_id,
    locale_id, ...
)

如果您愿意,您可以将该数据缓存在 CSV 中,但将其复制到数据库中,这样您就可以获得一些参照完整性。这样,当您查询数据时,所有包含该国家/地区信息的字段或任何将返回的任何记录都将加入它。这样,您就可以获得缓存它并从更快的数据存储中检索它而不会丢失参照完整性的好处。

于 2012-09-18T17:19:42.433 回答
0

在我看来,使用 MySQL 存储国家/地区是一个好主意,因为这可以通过外键确保数据的一致性。

在这种情况下,速度并不是很重要,因为您处理的数据很少(数百行)。

请记住,将此类数据存储在数据库之外可能会显着增加应用程序的复杂性。

希望这可以帮助 ;-)

于 2012-09-18T17:20:02.263 回答
-1

也许使用 SQLite ?它同时具有 CSV 和 MySQL 的一些优点

于 2012-09-18T17:17:24.270 回答