在简单的 Web 文档系统(或基本 CMS)上使用 RDBMS 与平面文件有啥真正的好处吗?

Posted

技术标签:

【中文标题】在简单的 Web 文档系统(或基本 CMS)上使用 RDBMS 与平面文件有啥真正的好处吗?【英文标题】:Are there any real benefits to using a RDBMS vs. flat files on a simple Web doc system (or basic CMS)?在简单的 Web 文档系统(或基本 CMS)上使用 RDBMS 与平面文件有什么真正的好处吗? 【发布时间】:2010-11-09 19:58:16 【问题描述】:

项目

我被要求从事一个有趣的项目——相当于一个基本的 Web CMS——它使用 html/CSS/jQuery 和 php。但是,一个要求是不会有一个数据库来存储数据(他们想要文档/页面的平面文件——最好是 JSON 格式)。

在非常基本的意义上,它将用于通过非常“非技术人员”的界面生成 HTML 页面。每个安装只有大约 20 页,但有几个可能达到 100 页。它必须相当容易放到支持 PHP 的服务器上并运行,并且只需要很少的设置。

外面有什么

有大量的 CMS 选项和相当多的平面文件版本。但是 OSS 或其他现有的 CMS 不是一种选择。他们需要一个简单的礼节制度。

初步想法

它是平面文件......但我真的很想得到一些关于缺点的反馈,如果值得努力说服他们使用 mysql 之类的东西(SQLite 或 CouchDB 已经退出,因为没有的服务器可以配置为在当前运行它们)。

当然,文档文件非常简单,但我们还讨论了每次安装的 1 或 2 个管理员的登录信息、一些列表以及配置/设置(也可以很容易地存储在一个文件中保护)。

两难境地

如果在像这样的简单项目中使用 MySQL 而不是 JOSN 格式的文件和一些数组有好处 - 超出我自己的先入为主的概念 :) - 我一定会争论它们。

但老实说,我看不出有什么比他们不需要数据库系统更重要。

感谢您的见解和意见。

【问题讨论】:

【参考方案1】:

如果您无法指出对关系表设计的特定需求,那么您可以使用平面文件。按规定构建。当您可以引用特定需求时,让他们知道;如果您认为是及时的(也就是说,如果您没有必要对应该早先集成的数据进行规范化),升级并不是那么难。

【讨论】:

【参考方案2】:

很遗憾你不能使用CouchDB,这似乎是它的完美应用。请记住,使用平面文件会严重限制您的架构,尤其是可扩展性。

您的 CMS 应用的最佳案例方案是什么?它成功了,人们想更多地使用它吗?如果您使用的是平面文件,则服务和改进系统将更加困难(例如,使其更健壮,并为未来版本添加新功能)并且性能无法很好地扩展。因此,在这种情况下,“成功”充其量只是短暂的,因为成功会转化为越来越多的工作,而在功能集和性能方面的收益却越来越少。

【讨论】:

【参考方案3】:

再说一次,如果 CSM 设计正确,那么在平面文件和 RDMS 之间切换应该就像使用不同的数据访问文件一样简单。

【讨论】:

【参考方案4】:

这是否会安装在任何共享主机站点上。为了使其工作更安全,需要正确设置像 suEXEC 这样的机制,因为 Web 服务器需要对各种目录的写入权限。

【讨论】:

【参考方案5】:

对于一个通过 JSON 和 jQuery 提供的简单网站,最酷的地方在于,该网站不需要在每次点击时加载。只是相关数据会改变。然后,您可以使用地址栏中的哈希值来跟踪您的位置(例如http://localhost/#about)

问题在于,如果他们正在编辑原始 JSON 文件,他们可能会很快搞砸。我认为您的管理工具必须根据输入生成 JSON 文件,这样您才能确保没有任何中断。管理工具会比网站更重要(尽管动态网站并非总是如此)

【讨论】:

太多的网站这样做是因为它很“酷”。几乎没有任何好处,尤其是在传统的内容发布网站上。 但他不是在谈论传统的 CMS……他是在谈论将数据保存在平面文件中的专有系统。【参考方案6】:

CMS 的预测数据大小是多少?

使用 RDMS 的一个重要原因是快速、具体地访问大量数据。数据格式可能不会很大,但如果数据很多,那么从长远来看,RDMS 可能会更好。

再说一次,如果 CSM 设计正确,那么在平面文件和 RDMS 之间切换应该就像使用不同的数据访问文件一样简单。

【讨论】:

【参考方案7】:

虽然 RDBMS 对于非常大的 CMS 可能是必需的,但小型的可以很好地处理平面文件。我认为,很多 CMS 产品在这方面都失败了,因为在没有真正需要的情况下将 RDBMS 加入其中。

但是,如果您使用的是平面文件,则存在其他人强调的安全问题。我遇到的另一个问题是托管服务提供商使用 php.ini 中的 disable_functions 指令来禁用文件 I/O 功能,例如 fopen() 和朋友。如果您将 CMS 托管在您控制的盒子上,则不会遇到此问题,但如果您使用的是第三方提供商,请先检查。

【讨论】:

【参考方案8】:

作为原始发帖人,我没有登录,所以我正在跟进答案中的答案(对不起,如果这是错误的形式)。

可能会出现这种情况 共享主机。 虽然 JSON 文件在技术上可以 被编辑,这不会是这种情况。 管理界面将是强大的 足以完成所有页面的创建/编辑 每次安装的大小将为 相对较小 - 1 - 2 个管理员, 10-100 页。一些常见的列表 项目可能会运行更长时间(sn-ps 例如复制)。 安全将是一个大问题——任何 关于此的其他选项建议 具体来说?

【讨论】:

【参考方案9】:

好吧,他们不信任任何数据库系统是否存在问题?他们的问题不在于他们的思想而不是技术吗?也许他们害怕数据库,因为这对他们来说听起来很复杂。在这种情况下,如果您只是向他们展示一些非常简单的 CMS(比如 CMS 变得简单,我听说这非常简单而且学习过程非常快),如果他们看到一切都很简单,那么可能他们只是不关心后面是什么,如果它是一个数据库或其他什么!

他们可以听到诸如更好的维护、更低的维护成本、比专有解决方案更好地移交给另一个网站管理员(他们不依赖于您)等争论。

【讨论】:

以上是关于在简单的 Web 文档系统(或基本 CMS)上使用 RDBMS 与平面文件有啥真正的好处吗?的主要内容,如果未能解决你的问题,请参考以下文章

Web站点信息收集

蓝色简单的cms文档管理系统模板——后台

CentOS7上安装稻壳CMS

如何利用CMS建站系统进行网站建设需要学习哪些?

基于java开源的OA系统都有哪些啊?

如何在 Web 应用中实现实时预览功能?