我正处于为公司编写CMS的计划阶段。我发现自己必须在保存数据库中的页面内容或文件系统的文件夹中进行选择。我已经了解到PHP在读取和写入文件系统方面表现得非常好,实际上比运行SQL查询更好。但是,当涉及到在文件系统上保存页面及其数据时,除了阅读和编写之外,还会涉及更多内容。由于页面将使用PHP类绘制,因此每个页面的数据将只是数据,而不是HTML。因此,必须编写文件的解析器。另外,我怀疑页面中的所有数据都只保存在一个文件中,而是保存在一个目录中,内容框和数据分开存放。
所有这些都可以通过MySQL轻松完成,所以我想问你的专家:
与文件系统保存相比,所有额外的额外费用是否会超过MySQL的速度和资源优势?
感谢您的时间。
答案 0 :(得分:1)
去寻找MySQL。我要说你唯一一次考虑使用文件系统就是当你存储几兆字节的文件(BLOBS)时,数据库(至少是那些你通常用于php网站的数据库)在存储那种数据时通常性能较差数据的。其余的我会说:总是使用关系数据库。 (假设你正在处理数据dat 有关系,当然,如果它是随机数据,那么使用关系数据库没什么好处; - )
添加:如果您定义自己的文件结构,甚至您自己的交叉引用文件的方式,您已经开始自己构建一个“数据库”,这本身并不坏 - 它可能会很有趣! - 但除非你的情况与网络上其他80%的“标准”网站(几页上有文字和图片)截然不同,否则你可能无法获得所需的性能优势。 (如果你正在构建google / youtube / flickr / facebook ......你有不同的情况,并开发自己独特的存储解决方案开始有意义)
答案 1 :(得分:1)
需要考虑的事项
答案 2 :(得分:0)
假设您在此处拥有低流量,单服务器环境......
如果您希望在CMS之外管理这些条目,我的意见是,使用现有工具比使用数据库访问工具更容易 。
例如,能够在文本数据上使用awk,grep,sed,sort,uniq等具有巨大的价值。通过数据库来表示这很难,但并非不可能。
当然,这只是基于经验的意见。
取值
答案 3 :(得分:0)
对于总是作为一条信息访问的大型blob,在文件系统上存储数据可能会更快。实现CMS时,通常不仅要处理此类blob,还要处理具有内部引用的结构化信息(例如属于某个页面的内容字段,该页面具有指向其他页面的链接......)。 SQL数据库提供了一种访问结构化信息的简便方法,文件系统上的文件没有(当然除了可以用文件夹表示的简单层次结构)。
因此,如果您想将cms的结构化数据存储在文件中,则必须使用允许您保存数据内部引用的文件格式,例如: XML。但这意味着您必须解析这些文件,这不仅需要大量工作,还会使访问数据的过程再次变慢。
简而言之,使用MySQL
答案 4 :(得分:0)
使用数据库,从一开始就有很多重要的properties“免费”,如果你采用文件系统的方式,不会以一些次优的方式发明它们。如果您不想仅限于MySQL,则可以使用例如数据库抽象层of the doctrine project。
此外,您还拥有像phpMyAdmin这样的工具,可以轻松查找或处理您的数据与texteditor。
请记住,数据库查询的结果几乎总是可以缓存在内存中,甚至可以缓存在文件系统中,因此您可以使用众所周知的工具和类似的性能来更轻松地进行管理。
答案 5 :(得分:0)
当涉及对网站内容的微小修改(例如修复拼写错误或更新外部链接)时,我发现使用SSH连接到服务器并在文件上使用各种工具(文本编辑器,grep等)更容易而不是我必须使用CMS接口手动更新每个文件(我们的CMS有这样的界面)。
然而,有几个问题要分析和回答,如上所述 - 您是否计划可扩展性,并发修改数据等。
答案 6 :(得分:0)
不,这不值得。
在数据库上使用文件系统没有任何优势,除非您是系统中唯一的用户(无论如何都会失去优势)。一旦事务开始滚动并将级联更新为多个页面和多个文件,您会后悔没有从头开始使用数据库:)
如果您已开始使用缓存,请首先尝试一些现有框架。你会从中学到很多东西。也许你可以为你的CMS窃取一两个想法?