【问题标题】:Rails CMS: static files or database records?Rails CMS:静态文件还是数据库记录?
【发布时间】:2011-03-26 14:40:47
【问题描述】:

我正在尝试确定何时应将“文本条目”存储在数据库中与作为静态文件存储的截止时间。这里有什么经验法则吗?文本条目最多有几个段落,并具有指向图像和表格的链接(以及指向其他文本条目的超链接)。文本输入的一些标准:

  1. 我正在考虑使用 DITA 作为内容格式
  2. 文本应该是可搜索的
  3. 如果文本被修改,将创建一个新版本

提前致谢,查克

【问题讨论】:

    标签: ruby-on-rails content-management-system dita


    【解决方案1】:

    “rails 方式”将使用数据库。

    该解决方案将更具可扩展性,因此更快并且可能更易于开发(使用迁移等)。使用文件系统,您必须自己构建许多功能,这些功能已经为数据库使用而实现。

    您可以创建模型(例如)文档并轻松使用现有的版本控制系统,例如 paper_trail。使用索引搜索时,您可以只拥有一个 has_many 关系,使您能够实现模型之间的依赖关系(破坏模型意味着破坏搜索索引)。

    【讨论】:

    • 为了清楚起见,如果我引用这些文本条目,我不会使用“rails 方式”吗?例如,在 Rails 照片应用程序中,管理是通过对静态图像文件的引用来处理的(它们不会作为 blob 存储在数据库中,对吧?)。
    • 使用 Document-Modell 来实现搜索、版本控制等将是必须的。将照片写入磁盘是很常见的,因为它们不经常更改并且大小很大,因此同步数据库系统和文件系统是一项工作。在您的情况下,“一个”文档将有(imo)太多依赖,并且与图像相比尺寸很小,因此您不需要减轻数据库的负载......
    • 对不起那个错字:将照片写入光盘是很常见的,因为它们不经常更改并且尺寸很大,所以同步数据库的工作值得 -system 和文件系统。
    【解决方案2】:

    您可以查看数据库提供的内容,然后问自己这些功能是否有用,而不是截断。采取隔离(ACID 中的 I):如果您担心多个人可能同时尝试编辑一个条目,那么数据库会处理得很好,而您必须自己处理文件处理锁.或原子性:您可能希望一次更新两件事(例如索引页和入口页),并且知道它们要么都成功,要么都失败。

    除了 ACID 之外,数据库还可以做许多事情,例如利用多种数据类型、简化查询以及允许扩展。这是一个值得提出的问题,因为大多数数据库最终都将数据存储在磁盘上的一堆文件中。如果您自己使用文件,您最终会编写一个迷你数据库吗?

    此外,如果您使用 Rails,您还可以利用它的 ActiveRecord 功能,并可以使用许多需要数据库的插件。

    即使是小型单用户 Rails 应用程序,我也会使用数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2015-11-24
      • 2018-11-16
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多