平面文件数据库php应用程序

时间:2009-10-27 19:24:48

标签: php database sqlite flat-file

我正在创建和依赖数据库的应用程序,而且我打算使用平面文件数据库,是否有任何严重的理由要远离这个?

我正在使用模仿(http://mimesis.110mb.com) 它比使用mySQL更简单,我不得不承认我没有经验。 我想知道db的安全性。但文件存储为php,它似乎是一个可靠的数据库解决方案。

我非常喜欢备份和传输数据库的简易性,我发现mySQL更难。我看到每个人似乎都更喜欢mySQL方式 - 它在查询方面可能更快但除此之外是否有理由远离平面文件dbs和(最后)正确学习mysql?


修改 只是为了让人们知道, 我最终使用mySQL,并使用CodeIgniter框架。仍然像平面文件db,但现在已经意识到这个项目的方式比必要的更复杂。

8 个答案:

答案 0 :(得分:3)

使用SQLite,您将获得具有许多SQL功能的数据库,但它只是一个文件。

答案 1 :(得分:3)

问候,我是Mimesis的创造者。在需要处理大量数据的情况下,关系数据库和SQL非常重要。平面文件优于关系数据库吗?好吧,你可以问谷歌,因为他们的整个归档系统适用于平面文件,它是地球上最受欢迎的搜索引擎。 Mimesis与他们的系统相比吗?可能没有。

创建Mimesis是为了解决特定的利基问题。我只使用免费网站进行在线活动。大量免费网站提供使用PHP的能力。但是,它们不提供免费的SQL数据库访问。因此,我需要创建一个存储数据,实现锁定和解决文件权限的数据库。这些是Mimesis的主要设计参数,并且在所有这些参数上都取得了成功。

如果您需要了解Mimesis的速度,如果您导航到第一页,它将告诉您您正在查看该网站的国家/地区。这个免费的数据库取自网站ip2nation.com并移植到Mimesis ffdb中。它有数百个(如果不是数千个)条目。

此外,主页上的点击计数器已经跟踪了超过7000个访问者。这些是UNIQUE访问,这意味着脚本必须搜索数据库以查看正在访问的IP地址是否已存在,并且还执行总IP的计数。

如果您注意到主页面加载速度非常快,并且在后端运行了两个相当密集的Mimesis数据库脚本。 Mimesis存储数据的方式是为了加快读写程序和翻译程序。大多数ffdb示例脚本或其他ffdb脚本使用简单的CVS文件或其他一些此类结构来存储数据。 Mimesis实际上在某些级别解释二进制数据以增强其功能。 Mimesis在平面文件数据库和关系数据库之间有点混合。

大多数其他ffdb脚本都涉及每次更新时重写COMPLETE文件。 Mimesis不会这样做,它只重写结构文件并更新实际的行内容。因此,即使发生错误,您也只会丢失已添加的新数据,而不会丢失任何旧数据。 Mimesis也保持着它的历史。除非刷新表,否则行先前包含的数据仍然包含在内。

我可以继续讨论所有功能,但这不是“Mimesis是有史以来最伟大的数据库”的咆哮。更重要的是,它旨在让人们看到SQL不是唯一可用的技术这一事实,并且平面文件在给定适当的开发范例时优于关系数据库,考虑到它们更专业。

万岁平板文件以及勇于接下来头痛的编码员。

答案 2 :(得分:1)

如果您只需要平面文件结构,答案是“好”。一个测试:一个简单的电子表格是否能满足所有需求?如果没有,则需要关系结构,而不是平面文件。

如果您不确定,也许您可​​以启动平面文件。 SQLite是一个很棒的入门应用程序。

如果你在这个过程中弄清楚了,那么你做出错误的选择是不好的。但是,如果您了解关系结构的重要性,并在必要时尽早升级,那么您就可以了。

答案 3 :(得分:1)

  

我真的很喜欢备份的方便性   和运输数据库   我发现mySQL更难了。

使用另一个答案中提到的SQLite。只有一个文件可以备份,或者将MySQL数据库的定期转储设置为SQL文件。这是一件相对简单的事情。

  

我看到每个人似乎都更喜欢   mySQL方式 - 很可能是   在查询方面更快

速度绝对是一个考虑因素。数据库往往要快得多,因为数据组织得更好。

  

除此之外是有任何理由的   远离平面文件dbs和   (最后)正确学习mysql?

确实有很多理由使用数据库解决方案,但是有些参数可以用于平面文件。除了“通常”使用的东西之外,学习其他东西总是好的。 大多数决策取决于应用程序。您将拥有多少并发用户?你需要交易支持吗?

答案 4 :(得分:1)

想要通知Mimesis已从原始网址转移到http://mimesis.site11.com/

此外,我正在将Mimesis的焦点从ffdb转移到键值存储。这是更明智的鉴于我正在存储的信息类型和我用来检索它的方法。 Mimesis的编码中也存在严重错误(我已经修复过)。但是,我仍处于新键值存储类型的测试阶段。我也被其他事情所左右。锁定也已从使用文件创建更改为目录创建作为互斥机制。

答案 5 :(得分:0)

互操作性。 MySQL可以基本上与任何重要的语言接口。 Mimesis不太可能在PHP之外使用。

当您尝试使用分析器或从外部修改数据时,这变得非常重要。

答案 6 :(得分:0)

您还可以查看http://lukeplant.me.uk/resources/flatfile/以获取PHP Flatfile包。

答案 7 :(得分:0)

go flatfile的问题在于,为了进一步开发调整情况,您必须更改大量代码以改进系统的基础。然而,如果它是一个纯SQL系统,那么将来几乎不需要修改就可以了。