【问题标题】:flat-file database php application平面文件数据库 php 应用程序
【发布时间】:2010-12-10 15:00:18
【问题描述】:

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

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

我真的很喜欢备份和传输数据库的便利性,我发现使用 mySQL 更难。我看到每个人似乎都更喜欢 mySQL 方式——在查询方面它可能更快,但除此之外,还有什么理由远离平面文件 dbs 并(最终)正确学习 mysql ?


编辑 只是为了让人们知道, 我最终选择了 mySQL,并且正在使用 CodeIgniter 框架。仍然喜欢平面文件 db,但现在意识到这个项目比必要的复杂得多。

【问题讨论】:

  • 感谢您将我引向 Mimesis。一个有趣的应用程序!
  • 一个注意事项,如果你使用它,你必须注意解锁。我在服务器上遇到了一个严重的错误,因为有 20 个脚本正在等待清除锁,因为我在发布之前返回了一个。因此,为数据库构建适当的处理程序非常重要。但它非常适合小东西。

标签: php database sqlite flat-file


【解决方案1】:

想通知 Mimesis 已从原始 URL 移至 http://mimesis.site11.com/

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

【讨论】:

    【解决方案2】:

    大家好,我是 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 并不是唯一可用的技术这一事实,而且考虑到平面文件更专业,在适当的开发范式下,平面文件优于关系数据库。

    平面文件和勇敢面对随之而来的头痛的编码人员万岁。

    【讨论】:

    • 嘿,很高兴看到创作者的 cmets!我想知道您是否对如何集成多个表以几乎充当关系数据库有任何建议?虽然我意识到这不是重点,但仍有空间在模仿之上构建关系数据库,不是吗?
    • 绝对是丹尼尔。这需要一些创造性的想法,但并非不可能。在 Mimesis 中,行被赋予标签以将它们彼此区分开来。这些行标签类似于主键。通过跨表使用巧妙的标签方案,您可以在它们之间创建引用。 Mimesis 唯一不支持(至少不支持)的操作是列的插入/删除。在这些情况下,有必要重写整个数据库。我的观点是,如果您事先考虑好您的表格需要什么,那么柱状插入/删除是不必要的。
    【解决方案3】:

    使用平面文件的问题在于,为了调整情况以进行进一步开发,您必须更改大量代码以改善系统的基础。然而,如果它是一个纯 SQL 系统,则将来几乎不需要修改即可继续进行。

    【讨论】:

      【解决方案4】:

      我真的很喜欢备份的便捷性 并传输数据库,其中 我发现使用 mySQL 更难。

      使用SQLite,如另一个答案中所述。只需备份一个文件,或将 MySQL 数据库定期转储到 SQL 文件。这是一件相对简单的事情。

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

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

      除此之外还有什么理由 远离平面文件数据库和 (终于)正确学习mysql?

      使用数据库解决方案肯定有很多理由,但对于平面文件仍有争议。学习“通常”使用的东西以外的东西总是好的。 大多数决定取决于应用程序。您将拥有多少并发用户?您需要交易支持吗?

      【讨论】:

        【解决方案5】:

        您还可以查看http://lukeplant.me.uk/resources/flatfile/ 以获得 PHP 平面文件包。

        【讨论】:

        • 还没有听说过这个,可能值得比较一下模仿,谢谢
        【解决方案6】:

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

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

        如果你在这个过程中发现的太远,知道你做出了错误的选择是不好的。但是,如果您了解关系结构的重要性,并在需要时尽早升迁,那么您就可以了。

        【讨论】:

        • 关系结构 - 这是一个很好的考虑因素。我正在计划一个主表,其中行内有其他表名,因此为此目的就足够了,但我要注意这是一个很好的限制 - 谢谢
        • 嗯!听起来您将竭尽全力使用平面文件应用程序对关系数据库进行建模。如果是这样的话,我会担心的。
        • 基本上,你应该学习 MySQL。便携性和备份比您估计的要简单得多。我使用好的 ol' phpMyAdmin,并且我已经成功恢复。没有尝试移植到另一个站点。制作备份非常快速和简单。我的问题是,你们有测试网络服务器(LAMP/WAMP)吗?如果你缺少这个和一个像样的 IDE,那么任何学习和实验都会觉得很累。
        【解决方案7】:

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

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

          • cauko,我遇到过这个解决方案(sqlite.org)几次。我是在看错网站还是遗漏了什么?似乎我需要在主机上设置它,这可能会使部署它比 mySQL 更难
          • 主机需要安装 SQLite,但是现在很多主机都默认安装了。如果已安装,主机无需为您执行任何操作即可使用它。
          • 不,您将其指向一个文件,它将仅使用该文件(如果它不存在则创建)。之后,您将其用作常规关系数据库,即使用 CREATE TABLE 创建表,使用 INSERT 插入数据等。有关示例,请参阅文档 - php.net/manual/en/function.sqlite-open.php
          猜你喜欢
          • 2012-01-15
          • 2015-12-24
          • 2016-05-03
          • 2011-01-22
          • 1970-01-01
          • 2015-12-14
          • 1970-01-01
          • 2012-03-10
          • 1970-01-01
          相关资源
          最近更新 更多