如何在数据库中保存大型html内容?开发CMS

时间:2012-03-08 09:47:08

标签: c# asp.net sql-server-2005

我正在为我的网站开发内容管理系统。我面临着如何在数据库中保存大型html内容的问题。存储过程将其参数限制为8000个字符,并且不接受超过此长度的任何内容。那我怎么能把我的内容存储在数据库中。

或者还有其他更好的方法来完成这项工作,在哪里保存html内容。此外,如何存储图像(内部html)或其链接,实现方案是什么?

很多CMS系统正在运行,他们如何实现此功能。

请提出更好的建议,如何处理这一要求。

我正在使用的工具: C#.NET SQL Server 2005 Asp.net 2.0

4 个答案:

答案 0 :(得分:5)

如果您正在使用SQL Sever 2005,为什么不使用VARCHAR(MAX)数据类型?

VARCHAR(MAX)NVARCHAR(MAX)可以容纳旧版TEXTNTEXT可容纳的相同数量的数据(2 GB),但它们比{{{{}}更灵活1}} / TEXT。它们存储在用于其他数据类型的相同类型的数据页中。

至于如何处理图像,我建议将它们存储在文件系统中,只需使用指向它们的普通NTEXT标记即可。

这对于CMS来说非常典型,可以将文章内容存储在一个表中,该表稍后会嵌入到某个模板中。尽管像MongoDB这样的文档数据库在这种类型的应用程序中越来越受欢迎。

答案 1 :(得分:0)

您可能希望在此处阅读有关大值数据类型的信息 - http://msdn.microsoft.com/en-us/library/ms178158(v=sql.90).aspx

您可以使用大值数据类型来存储最多2 ^ 31-1个字节的数据。希望这会有所帮助。

答案 2 :(得分:0)

在数据库中使用blob字段(例如MySQL中的BIGTEXT)。然后,您可以将HTML内容流式传输到数据库字段中。或者,如果要采用文档类型方法,请将HTML内容另存为文件并保留数据库中内容的位置。如果您想使用hadoop等来搜索大量内容,后一种方法就很好。如果你最初想要更简单的东西,我会选择blob方法,因为在过去的几年里,blob中的内容搜索已经走了很长一段路。但是,请注意,MySQL的集群版本(例如)对您可能需要的某些内容(例如xpath)没有很好的支持。

答案 3 :(得分:0)

您不应保存图像,HTML或任何不会在SQL WHERE语句中使用的内容。相反,我会将这些HTML代码片段和图像保存在文件系统上,类似于[PARENT_TABLE_NAME]。[ROW_PRIMARY_KEY] .html。这样,您可以在查询时释放数据库时间,因为您可能不会对这些HTML片段使用WHERE过滤器,并且您的HTML更新/删除/插入可能不会更快并且可以由操作系统正确缓存。