存储大量内容的建议方法是什么?

时间:2013-10-02 15:38:10

标签: php mysql storage

我打算开设一个基于文章的网站,用户可以在其中输入文章并上传图片。

现在我有点困惑,我以什么方式保存数据。在数据库中或使用文件系统作为.txt文件或.html文件或以任何其他方式。将数据保存在数据库中会让我感到有些尴尬,因为最初我打算在共享服务器中运行该站点。那么共享服务器容量是否足以满足巨大内容的需求?或者是否建议将内容另存为单独的.txt文件或.html文件?

考虑:

  1. 搜索功能仅适用于文章标题。文章标题将保存在数据库中。搜索功能未扩展到文章内容。
  2. 我计划使用WYSIWYG编辑器并允许贡献者格式化他们的内容。显然,存储的数据将包含HTML代码。因此,将内容存储在文件系统中是安全的,因为它对数据库进行XSS攻击,这是真的吗?
  3. 图像将存储在文件系统中,而不是存储在数据库中。
  4. 一个。这样做有什么意义可以防止XSS攻击?

    湾如果在数据库中存储是建议的解决方案应该是什么数据类型? TEXT或LONGTEXT?

2 个答案:

答案 0 :(得分:2)

这是我能想到的两种最常见的解决方案:

  1. 将所有内容存储在数据库中。
  2. 将“小”数据存储在数据库中,将所有附件(如PDF和PDF等二进制文件)存储在文件系统的数据库之外。
  3. 这两种解决方案都有优点和缺点。

    解决方案#1:将所有内容存储在数据库中

    优点:

    • 对于一些(强大的)数据库,您甚至可以索引(搜索)常见文件格式的内容,例如PDF(Oracle interMedia就是一个例子)。
    • 您可以轻松确保数据完整性。
    • 您可以轻松确保数据安全。

    缺点:

    • 使数据库变得庞大,如果您从未对数据库/表进行维护,则可能会非常缓慢。
    • 可以更难“浏览”二进制内容以进行调试。
    • 如果您的项目有一个庞大的数据库,并且有许多用户正在读/写它,您尤其需要运行数据库/表维护。
    • 数据库备份可能更难以执行和恢复。
    • 在Web应用程序上提供文件可能有点棘手(需要知道MIME类型才能正确提供文件)。

    解决方案#2 - 将“小”数据存储在数据库中,将所有附件存储在文件系统上的数据库之外

    优点:

    • 文件的HTTP缓存更容易。
    • 更容易浏览文件(用于调试或其他任何方式)。
    • 在不做任何特殊操作的情况下,更容易维护快速系统。

    缺点:

    • 需要创建和维护一个关系表,该关系表将文件系统上的文件链接到数据库中的实体。
    • 无法真正实现数据完整性(如果在文件系统上手动删除文件但数据库中仍存在该文件,会发生什么情况?)。
    • 必须在多个层面上确保安全。

    这是我能想到的快速概述。这两种解决方案都很棒,它实际上取决于您将使用多少用户项目以及可用的硬件。

    对于共享环境,我可能会选择#2,因为共享环境通常不是很强大。

答案 1 :(得分:1)

我目前面临同样的问题。我有数百万个配置文件,每个配置文件本身包含大量数据。建议不要在关系数据库中存储大量数据,因为这会降低网站性能。我推荐这个解决方案。

  1. 将数据存储在数据库中,这是搜索和网站最初需要的数据库。例如ArticleTitle,tags。

  2. 使用NoSQL数据库(CouchDB),其中包含有关文章的所有信息。在CouchDB中保存文档时,请将文章ID作为文档名称,以便您可以轻松地将文章ID映射到文章文档。