在Web数据存储中,数据库总是解决方案吗?

6

我没有数据库方面的经验,但打算学习并在我计划中的网站项目中使用它。

不过,我的一个朋友给了我建议,认为数据库的使用应该比我计划的更加广泛。他相信将几乎所有的数据都存储在数据库中,而我则认为数据库最方便的是存储用户数据(只是一些小数据),以及静态文件中的页面内容数据等(除了非常小的数据)。我对这个假设没有任何了解。

  • 哪种方法更好?尽可能少地使用数据库,还是找到有效存储数据的方法尽可能多地使用数据库?
  • 使用静态文件和数据库有性能差异吗?
  • 最好的解决方案是否取决于网站的流量情况?

我打算使用PHP和MySQL的组合。


你的实际问题是什么? - Mitch Wheat
抱歉如果不太清楚:在什么情况下,哪种存储页面内容数据的方法最好(任何类型,但不包括像二进制文件这样的较大文件)? - Sune Rasmussen
3
大多数情况下是这样,但42也是一种选择。 - Alix Axel
7个回答

4
如果您想基于多个参数搜索特定数据,则确实需要使用数据库。SQL语言为此提供了WHERE子句。此外,每当需要创建和更新数据时,数据库是最好的选择,因为它提供了约束条件以确保数据到某种程度上的唯一性。此外,数据之间的关系最好由数据库管理(使用外键等)。
例如,用户配置文件最好存储在数据库中。用户控制的输入必须存储在数据库中。另一方面,服务器端包含/模板文件最好作为服务器本地磁盘文件系统中的普通文件存储,因为没有必要在其中搜索。如果您希望将文件名与某些更多(元)信息(例如菜单/子菜单)“链接”,则可以最终将它们存储在数据库中。相同的方法适用于二进制文件(图像、下载等),您不希望将它们存储在数据库中,除非您需要非常高的可移植性。

3

数据库并不是唯一的 持久化 数据存储方式,它们只是最常见的。

有些文档/博客引擎根本不使用数据库。当页面被创建、修改或评论时,会创建或修改一个静态 html 文件。例如,Movable Type

同样,你可以拥有纯内存存储系统,在这种系统中,如果系统关闭,则内存中的数据会被简单地重建,或者转储了内存内容,然后恢复,没有涉及数据库。这通常在具有极高吞吐量或需要极低(微秒级)延迟的系统中完成。

你提出的问题实际上不能得到回答,因为你问的所有问题的答案都是“取决于”,而且无论如何你都可能使其工作。

我想说的是,在遇到问题之前不要过于关注性能。你遇到的大多数性能问题可能归结于数据库中的索引和主键。

PHP 和 MySQL 是一个好选择。


是的,这些或许是替代方案,但它们更好吗?从性能角度来看呢?在数据库中,你可以轻松地找到你要查找的内容;而在每次页面更改时都需要修改的HTML文件中,你需要进行一些搜索才能找到需要更改的内容,然后再进行更改。对于访问量大的网站来说,这不是非常愚蠢吗? 除此之外还有一些好的观点。 - Sune Rasmussen
我不同意关于担心性能的观点——平面文件与数据库是一种设计选择,你可以让自己陷入困境。 - OMG Ponies

2

数据库是存储严格数据的正确位置。相比于数据库中的数据,平面文件无法被索引得那么快速。然而,设置数据库需要更多的学习和掌握。

二进制数据(如照片)在数据库中不太适合。


实际上,现代的MySQL和其他数据库可以很好地将像jpg和png这样的文件存储为二进制大型对象。人们喜欢将这些媒体资产放入普通文件中,即使在WordPress、Joomla!和Drupal等系统中,原因是将它们传递给浏览器的HTML模型非常以文件为中心。当然,观察WordPress、Joomla!或Drupal肯定是一次极好的学习经验。 - O. Jones
与Apache提供静态文件的性能相比,数据库的性能完全不足。Drupal不会将文件存储在数据库中,只会存储有关文件的信息。有很多关于此的谷歌信息,但我发现以任何框架引导从数据库中获取数据的成本要比Apache查找文件系统以确定文件是否存在要高得多。 - Chuck Vose

0
  • 我认为:数据库中的所有内容都可以。数据库针对这些事情进行了优化。大多数博客软件也使用数据库来存储内容,是安全的。编辑:哦,二进制文件确实比文件更好。但是MySQL也可以安全地处理它们。如果您只有一张照片,将其存储在数据库中是可以的(因为更容易维护),但是如果您托管了10,000张照片,请改用文件,并在数据库中保留文件的引用(它们的位置等)。
  • 当然可以:数据库再次进行了优化,底层使用文件:但是您不必再担心这个问题了。
  • 针对常规站点流量,MySQL数据库完全可以胜任。

PHP和MySQL是一个不错的选择。


0

如果数据操作需要事务处理,那么数据库几乎总是唯一的良好解决方案。


0

MySQL是一种具有数据完整性的常见数据库。如果您计划存储大量数据,MySQL是最好的选择。在使用数据库时还应考虑安全性。MySQL非常安全且易于使用,您还可以在网络上搜索更好的文档和示例。


0

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