在数据库中存储HTML的缺点有哪些?

4

虽然搜索该主题非常容易,但得出结论并不容易。将HTML存储在数据库中使用有哪些缺点?


能详细解释一下吗?HTML 是来自哪里的?它被用于什么目的? - J. Ed
我的第一关注点是转义Javascript,以便有人无法编写恶意网页... - OMG Ponies
3个回答

3

HTML是静态的,从数据库查询数据会使用数据库资源;数据库资源通常是中等到重度使用系统中受限制的资源之一,所以不将HTML存储在数据库中,而是将其放置在文件系统中,可以在不使用关键资源的情况下检索它。


2
那取决于在数据库中使用HTML的情况。如果这些数据只作为blob(即您从不/很少查询HTML内容)访问,那么我认为在某些情况下它是一个好主意。然后问题本质上与“我应该在我的数据库中以xyz格式存储文件吗?”相同。而对于此类问题的答案取决于几个因素:
  1. 文件有多大?将它们存储在文件系统上,仅在DB中使用其文件名/路径是否更有效?
  2. 您需要将数据复制到其他服务器吗?如果是,则如果您已经拥有DB同步基础设施,则在DB中存储原始文件可能比在FS上更容易。
  3. 您的查询用途如何?它们对DB或文件系统存储更友好吗?
现在,如果您要存储需要频繁查询的HTML数据,那就完全改变了游戏规则。
任何数据库规范化纳粹都会告诉您永远不要这样做。但是可能有一些有用的情况。例如,如果您正在使用某种全文搜索引擎,则可能希望将其存储在数据库中 - 或者以全文搜索引擎使用的任何形式存储。

2
在最广义的意义上,HTML是一种文档标记语言,用于将数据结构化成文档。另一方面,数据库应该包含按其逻辑关系组织的原始数据。文档使用格式化并可能重复呈现数据,但真正的基础数据总是固定的。因此,您应该存储可能的最直接、最原始形式的数据,并使用查询语言本身创建适合您目的的视图以及其他特定输出的数据处理来生成文档。
当然,您可以选择缓存输出格式化操作的结果,并选择将缓存存储在数据库中。这当然没问题。但是对于原始负载数据,我总是会选择上述方法。

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