如何存储信息?数据库与数据结构与日志文件

时间:2014-03-17 06:00:11

标签: database data-structures logfile

最近我在一个问题中遇到了一个场景:

n个网站,每个网站都有n个网页,n个用户访问这些网站....用户的每次访问都必须保存,并且他/她访问过的网页(未提及是否在数据库或日志文件中,因此取决于开发人员

我决定继续使用它并在数据结构中做一些事情但是当我和我的一个朋友讨论过这个问题时,他说,我们可以将它保存在数据库中,这在逻辑上听起来也是正确的。

因此,我们通常有3种方式存储任何内容...... log files data-structure database

现在我真的很困惑,什么时候应该使用数据结构,数据库或简单的日志文件,不仅仅是针对这个特定场景,而是以通用的方式?

真正的区别是什么?


我知道这个问题主要是基于意见,但在浏览时无法获得具体结果!

1 个答案:

答案 0 :(得分:4)

日志文件通常/通常仅输出 - 这些文件很少(如果有的话)被读取,可能只能手动读取。某些类型的文件可能具有随机访问权限,允许您通过单个索引(通过二进制搜索)相当有效地查找给定记录,但是您不能(轻松地)在单个文件中具有多个索引,这是一个数据库的简单任务。如果您只想稍后记录某些内容以进行手动处理,则日志文件可以正常工作(即使数据库也能正常工作)。

数据库是业界的标准,因为它们为您提供持久性,高效的读写,标准接口和冗余(当然,它们需要正确设置)。 / p>

数据结构解决方案通常不考虑持久存储,因为在程序因某种原因停止运行时确保保留数据。如果您确实想要写入和读取持久存储,那么通常会有一定程度的复杂性来有效地定期执行。多个/复杂指数有点麻烦。这并不是说数据结构不能与持久存储一起使用 - 数据库是使用数据结构构建的,而某些数据结构是专门为磁盘读写而设计的。但是你不想在较低的层面上搞清楚这一点 - 如果你需要持久性,最好让数据库来处理它。

您还可以将数据结构和数据库组合在一起,使用数据库作为持久存储,并使用数据结构来缓存结果,这样您只需要对数据库执行(较慢)写操作,并且可以执行(更快)读取数据结构。这在具有外部数据库的大型系统中并不罕见。虽然比标准地图数据结构更复杂,但可能使您的缓存过于复杂,并且表明您的设计存在更大的问题。


你有什么听起来像一个面试问题,他们可能期望一个数据结构解决方案,只是说“使用数据库”可能不赞成。但是,如果这是一个系统设计问题,那么您几乎肯定需要在设计中包含某种数据库,而不是将自己与数据结构联系起来。