我们正在建立一个网站,它使用一些静态数据,如“国家,与每个国家相关的城市,山脉等”。
我的朋友建议将它们存储在CSV文件中并使用javascript导入它们会更快。他说它比从mysql获取它们更快。
我希望坚持使用mysql,以便我们在一个地方拥有所有东西。我不认为0.00001秒真的很重要。
你能帮助我们吗? 什么时候应该使用mysql和什么时候使用csv?答案 0 :(得分:3)
更快可能不是决定做什么的最佳标准。
我打赌你的朋友没有数据可以支持或反驳这两项建议。
JavaScript是否导入网络跃点,就像调用数据库一样?
我妥协:将它们放入MySQL中,在启动时将它们加载到内存中,并将它们缓存在中间层。您只需支付网络跃点,即可从中间层到浏览器获取它们,并且数据将存储在真实数据库中。
如果你没有中间层,那么你就没有运气了。
每个用户都需要该表中的所有值,还是只需要几个?为什么强迫每个用户接受大量下载?
答案 1 :(得分:2)
通常,可预测位置中的可预测文件比DB Lookup快得多。数据库是查找/定位,从磁盘拉出,交付。文件是您想要的位置,不涉及查找。
许多缓存技术会将内容存储到数据库以用于管理目的,但条目的内容也会写入文件以便在需要时快速查找。
您可能想要考虑两者的混合。数据库管理和文件缓存。您将获得两全其美的优势,并构建一个平台供以后在州列表管理之外使用。
有许多缓存技术和方法。例如,我部署了按需缓存。如果文件不在我期望的位置,我会从DB缓存到按需动态写入的文件中。更新数据库条目后,终止缓存的文件。随后,在按需请求时写入文件。
答案 2 :(得分:1)
对于那种静态数据,使用MySQL(我能想到的)的唯一真正动机是用于数据库验证。我建议您使用CSV,特别是如果您不打算更改它。
答案 3 :(得分:0)
从CSV中检索数据可能会更快,但它不会为您提供参照完整性。如果你说的话是
users (
country_id,
locale_id, ...
)
如果您愿意,可以将该数据缓存在CSV中,但在数据库中复制它,以便您可以拥有一些参照完整性。这样,当您查询数据时,所有字段都包含有关该国家/地区的信息,或者无论何种记录都会返回该数据。这样,您就可以获得缓存它并从更快的数据存储中检索它而不会丢失参照完整性的好处。
答案 4 :(得分:0)
在我看来,使用MySQL存储国家是一个好主意,因为这可以通过外键确保数据的一致性。
在这种情况下,速度并不是很重要,因为你处理的数据很少(几百行)。
请记住,将此类数据存储在数据库之外可能会显着增加应用程序的复杂性。
希望这会有所帮助; - )
答案 5 :(得分:-1)
也许使用SQLite?它有CSV和MySQL的一些好处