【问题标题】:Document database to store html content用于存储 html 内容的文档数据库
【发布时间】:2017-11-03 07:03:03
【问题描述】:

我一直在做一个项目,用户可以创建简单的模板并开发他的网站页面。他可以保存它们并在完成后将其放到互联网上。现在我的问题

  1. 当用户在他的模板上工作时,他可以保存他完成的工作副本并稍后再回来(类似于起草电子邮件)。
  2. 这个用户保存的工作通过解析模板页面当前保存在xml文件中。
  3. 我正在考虑一个替代方案,将整个页面本身存储在一个文档数据库中,针对一个唯一的用户 ID,这样就不需要进行任何解析并减少负载和时间。

现在我的问题

  1. 我认为使用 文档数据库 或 nosql 代替 xml 是否可行?
  2. 如果是,哪一个会更灵活工作和易于维护?
  3. 我使用php和mysql进行其他操作,所以我需要doc DB来存储用户创建的模板的html。

【问题讨论】:

  • 有什么理由不使用现有的 CMS 吗?
  • 最终目标是设计一个系统,用户可以创建一个完整的网站,类似于WIX,想法正在建设中,但目前的场景是我描述的。一个CMS会更多我猜是前端然后存储模板。如果你说像 Wordpress 这样的东西,那么它目前还没有达到那个水平,但不能说未来。 ;) :P
  • 是的,众多 NoSQL 数据库中的一种可以很好地为您工作。此外,除非您有特定原因需要传统数据库,否则我会将整个内容保存在该数据库中。我曾经在 CMS 上工作,但从未完成。基本上,我有结构化的文档(可以填写各种字段,标题、描述、正文 HTML 等)。然后为了显示这些文档,这一切都是用 PHP 完成的。 PHP 会查询 Mongo,渲染文档,然后你就完成了。
  • @Brad 我需要稍微澄清一下如何保存 html 文档。我的意思是整个 html 页面本身,或者我们需要进行一些解析以从中获取标签。当前我们遵循的方法是保存在 xml bcoz 它允许创建自定义标签。所以我们解析文档获取标签并将其保存为 xml 文档。**请将其添加为答案,以便我可以接受并关闭线程** .谢谢
  • 您的问题并不能真正让您深入了解:是的,您可以以任何数据库格式存储此内容。鉴于提供的详细信息,SQL 或 NoSQL 无关紧要,因为听起来您只是在保存大量 HTML 模板。如果您想在字段级别构建内容以进行更灵活的查询,则文档数据库可能更适合。在 SQL 中,您可以使用 TEXT 字段来存储大块 HTML(例如,MySQL 的 MEDIUMTEXT 最大为 16Mb,与 MongoDB 中当前的最大文档大小相同)。

标签: php mongodb hbase document-database nosql


【解决方案1】:

我之前写过自定义 CMS。我创建了一个表结构,它允许我存储元数据(作者、发布日期、语言等)和内容(单独),因为我还想实现一个搜索功能,允许我单独搜索它们。我在 MySql 中完成了我的工作,但我必须进行大量 html 编码以防止 SQL 中可能发生的攻击,因此,我建议使用 NoSQL 数据库(Mongo / Cassandra 应该足够了)。

我以前从未真正与 Mongo 合作过。你也可以使用 Cassandra。我更喜欢它,因为它可以是无模式的(就像许多 NoSQL 数据存储一样)。因此,您可以在一行中存储数千个(如有必要)修订,以便您的用户可以在需要时回滚到页面的先前版本。一旦他们对当前版本感到满意,您将清除所有备份数据。这只是一个建议。查看http://cassandra.apache.orghttp://www.datastax.com/technologies/cassandra

希望对你有帮助:-)

【讨论】:

  • 那么,我可以将用户存储的用户模板直接存储在文档数据库中吗?我的意思是不需要执行任何解析或编码,只需获取整个页面内容并转储它进入数据库。当用户回来编辑时,显示存储的相同页面,他可以从他离开的地方开始。
  • YES:在服务器端,您可以直接按原样存储文档。我建议使用html_entities 仍然只是为了确保安全。另请注意,任何类型的存储(包括您当前使用的存储)都不会(根据我的经验)阻止跨站点攻击,因为这些攻击是在客户端执行的,但我认为这个问题仅针对解决存储问题关心。但是,如果您计划允许人们将 HTML 呈现到您的网站中,这也是一个需要密切关注的主题。
猜你喜欢
  • 2013-01-14
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 2010-11-07
  • 2012-10-12
  • 1970-01-01
相关资源
最近更新 更多