2012-03-08 101 views
3

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

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

很多CMS系统正在运行,他们是如何实现这一功能的。

请提出更好的想法,如何处理这个要求。

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

回答

5

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

VARCHAR(MAX)NVARCHAR(MAX)可容纳相同的数据量,老TEXTNTEXT可以举行(2 GB),但他们比TEXT/NTEXT灵活得多。它们存储在用于其他数据类型的相同类型的数据页中。

至于如何处理图像,我的建议是将它们存储在文件系统中,并简单地使用指向它们的正常img标记。

这对于CMSes来说是相当典型的,用于将文章内容存储在表中,稍后将其嵌入到某个模板中。尽管像MongoDB这样的文档数据库在这种类型的应用程序中的应用越来越普遍。

+2

+1 - 同意。指定max可以达到2^31-1字节(2 GB),这应该足够了。 – ChrisBD 2012-03-08 09:52:10

+0

+1。这是一种“RTFM”类型的答案,因为OP声明限制超出了他的想象,而不是从产品开始(SP#s的限制参数长度与陈述不符)。 – TomTom 2012-03-08 10:01:40

+1

@MuhammadIdress,为什么这个答复不被接受? – Jodrell 2012-10-16 13:27:05

0

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

0

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