从文件读取数据比从数据库中读取数据更快吗?

4
在资源和效率方面,文件读/写操作和数据库读/写操作哪个更昂贵?我在使用Python的MongoDB,每分钟将对数据库/文件进行约100k次请求。此外,数据库/文件中大约有15,000个文档。哪种方法更快?谢谢。

你好James!看看这个问题https://dev59.com/G3A85IYBdhLWcg3wEPVL,也许会对你有所帮助;) - Edward83
4个回答

6

这取决于...如果你需要读取有序的数据,文件可能更快,如果你需要读取随机数据,数据库更有可能被优化以满足你的需求。

(毕竟 - 数据库也从文件中读取其记录,但它具有内部结构和算法以增强性能,它可以更智能地使用内存,并且在后台执行许多操作,因此结果将更快)

在需要频繁进行随机读取的情况下 - 我会选择数据库选项。


3

有太多因素影响具体答案,但以下是一些需要考虑的因素:

  1. 磁盘带宽
  2. 磁盘延迟
  3. 磁盘缓存
  4. 网络带宽
  5. MongoDB 集群大小
  6. MongoDB 客户端活动量(除非您的机器忙于其他工作负载,否则磁盘只有一个“客户端”)

1
从数据库中读取数据可能更加高效,因为你可以直接访问记录并利用索引等。使用普通的平面文件,你基本上必须按顺序逐个读取它们。(主机支持直接访问文件,但这些文件介于平面文件和数据库之间。)
如果你处于多用户环境中,即使多个用户尝试同时更新数据,你也必须确保数据保持一致。对于平面文件,你必须锁定文件,除了一个用户外,其他所有用户都不得进行更新,直到该用户完成更新,然后锁定下一个用户。数据库可以在行级别上进行锁定。
你可以使基于文件的系统与数据库一样高效,但这需要编写自己的数据库系统。

0

如果不使用缓存,按定义使用文件的顺序IO操作更快。数据库最终会使用文件,但在数据到达文件之前会经过更多层。但是,如果您想使用数据库查询数据,则更有效率,因为如果选择文件,则必须自己实现它。对于您的任务,我建议研究不同数据库的集群,它们可以按比例扩展。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接