【问题标题】:Database in flat files平面文件中的数据库
【发布时间】:2012-07-25 22:49:00
【问题描述】:

我正在创建一个网络应用程序,我必须将所有数据存储在文件中(而不是 MySQL)。现在我有几个问题:

  1. 哪种结构更好/更有效:DOM 结构(XML 文件)或普通文本文件(数据将由定义的分隔符分隔)。
  2. 如果是文本文件,我应该使用哪些分隔符?
  3. 如果我有很多文章,我应该将所有这些都保存在一个文件中,还是每篇文章一个文件?

【问题讨论】:

  • 你能用SQLite吗?
  • 你要保存什么样的数据,你打算如何使用这些数据?
  • 您希望获得多少数据?
  • 奇怪的是,您可以使用 xml 或 txt 但不能使用 SQLite - 这正是它适合的情况。
  • 如果你能解释一下为什么你有这个限制,那将会很有帮助。有人可能会指导您绕过限制,这肯定比接受可能不是最佳的建议要好! (但是,如果您必须使用文件,请使用多个而不是一个 - 至少您将从文件系统缓存中受益)。

标签: php database file


【解决方案1】:

这是我掌握的关于您的 3 个子问题的最佳信息。

1) XML 文件可以让您利用 XSLT 和 XPath 等其他工具来搜索和操作您的数据。它将以牺牲大小和性能为代价(如果大小是可管理的,这可能没什么大不了的。如果您想将新数据添加到后续行而不是重新处理旧数据(您可以在每行的开头使用格式版本号来实现这一点,但您的代码可能会很快变得丑陋)。

2) 坚持有效,CSV 得到很好的支持,libraries

3) 这里有两个限制要考虑。

文件大小)文件的最大大小(取决于文件系统)以及大文件对以后备份或拆分数据的影响。

文件数量)一个文件夹中可以拥有的文件数量有上限(同样取决于文件系统,但有限制)

我倾向于每个资产 1 个文件。如果可以将数据拆分为可管理的块,则可以更轻松地解决许多其他问题。同样与 Mike 的回答一致,当您不需要类似 XSLT 或 XPath 的能力时,JSON 是一种更好的序列化形式。这很容易推理并且更小。

【讨论】:

    【解决方案2】:

    您可以考虑在文本文件中使用 JSON 作为序列化,因为它可以让您存储更复杂的数据关系。

    话虽如此。如果您希望您的系统有任何类型的负载,那么读取和写入文本文件将是疯狂的扩展。

    如果您仅限于使用其他 cmets 中提到的文件系统 SQLite 可能是您最好的选择。

    【讨论】:

      【解决方案3】:

      如前所述... JSON ...

      除了复杂的数据,使用 JSON,您还可以使用 javascript(及其框架,如 jquery 或 extjs )来处理客户端的数据......在我看来这是一个很大的目标

      【讨论】:

        猜你喜欢
        • 2011-01-22
        • 1970-01-01
        • 2012-03-10
        • 2011-10-14
        • 2015-12-24
        • 2016-05-03
        • 2010-11-06
        • 2015-04-04
        • 1970-01-01
        相关资源
        最近更新 更多