【发布时间】:2012-02-15 20:24:23
【问题描述】:
先介绍一些背景
我正在为一个新的 PHP Web 应用程序规划架构,并尝试使其尽可能易于安装。因此,我不在乎最终用户正在运行什么 Web 服务器,只要他们可以访问 PHP(将我的要求设置为 PHP5)。
但应用程序将需要某种数据库支持。我决定使用嵌入式解决方案,而不是使用 MySQL。一些朋友推荐了 SQLite - 我可能仍然会朝那个方向发展 - 但我很犹豫,因为它需要 PHP 中的其他模块才能工作。
请记住,目标是易于安装...大多数外行用户不知道他们的服务器有哪些 PHP 模块,甚至不知道如何找到他们的 php.ini 文件,更不用说启用其他工具了。
我目前的目标
所以我目前倾向于使用基于文件系统的数据存储。 “数据库”将是一个文件夹,每个“表”将是一个特定的子文件夹,每个“行”将是该子文件夹中的一个文件。例如:
/public_html
/application
/database
/table
1.data
2.data
/table2
1.data
2.data
数据库中还有其他文件来定义架构要求、关系等。但这是我倾向于的基本结构。
我对 Microsoft 构建其 Open Office XML 文件格式 (.docx/.xlsx/etc) 的方式非常满意。每个文件实际上是一组定义文档的 XML 文件的 ZIP 存档。
它干净、易于解析、易于理解。
我想实际设置我的目录结构,使/database 真正成为驻留在服务器上的 ZIP 存档 - 一个单一的可移植文件。
但是随着数据存储大小的增长,这不会开始影响服务器的性能吗? PHP 是否需要将 整个 存档读取到内存中以提取它并读取其复合文件?
我可以使用哪些替代方法来实现这种文件结构,但仍使其尽可能可移植?
【问题讨论】:
-
From the manual: “从 PHP 5.3.0 起默认启用 SQLite3 扩展。”。 :)
-
我想说,如果你按照自己的想法继续下去,然后遇到实际问题,你会学到最多的东西。但是,根据您的概述,我倾向于说您处理设计的方式非常错误。即使是在过去 10 年里有点追随你的格言的 wordpress,他们甚至是从 mysql 开始的。重新发明轮子然后抱怨这样做的坏处,你一定很疯狂。
-
MySQL 有自己的问题——最大的问题是它需要配置。非技术用户在安装“一键式”应用程序时会回避任何看起来像设置的东西。这就是为什么这么多人坚持使用像 GoDaddy 这样抽象配置步骤的 ****y 主机。