【问题标题】:Should I store values in the database or in an XML or text file?我应该将值存储在数据库中还是 XML 或文本文件中?
【发布时间】:2011-09-27 12:46:53
【问题描述】:

我有几个关于我正在开发的网站上的数据存储的简单问题。有问题的网站将允许用户使用个人资料空间,他们可以使用文本、图像、BB 代码等进行自定义。这些配置文件的字符数限制约为 5000。我想知道如何最好地存储这些数据,因为在数据库中存储的数据量似乎很大。

我在考虑是否可以使用简单的文本文件来存储数据,并用用户 ID 命名它们。你们认为什么对访问和写入速度最有利,它会降低数据库读/写性能吗?因为查看和更新​​个人资料将是网站的很大一部分。

谢谢各位。我期待听到您的意见。

【问题讨论】:

  • @diEcho,规范化与这有什么关系?
  • 我已经对数据库规范化了如指掌。这仅与性能受到的影响有关。不过,感谢您的回复。
  • OP 说 allow users a personal profile space which they have the ability to customise with text, images, BB code and alike. ... will have a character limit of around 5000。哎呀!那不是太多的存储空间!我有应用程序,其中用户存储每个问题的 100 倍,并且数据库中有数千个问题。

标签: mysql xml database performance


【解决方案1】:

我会将它们存储在数据库中,因为:

  1. 数据库中的所有数据都可以使用事务来保持一致;
  2. 单个插入(事务)将满足您的所有存储需求;
  3. 单次选择将检索所有数据;
  4. 备份数据库,大功告成;
  5. 如果遇到速度慢,设置主从方案或分区很容易;
  6. 您可以使用数据库工具在数据中进行搜索;

另一方面,如果您使用文件系统:

  1. 文件系统没有事务,如果插入失败,需要回滚,文件已经保存了怎么办;
  2. 如果文件系统与数据库不同步会怎样?
  3. 它使您的代码复杂化,增加了错误压力;
  4. 写入文件系统会增加一个额外的安全漏洞,因为您的 DB 应用程序现在可以写入并可能覆盖文件系统上的现有文件。

更一般地
使用文件系统是因为在数据库中存储大 blob 可能会很慢。
但是,在速度变慢之前,您不应该进行优化。Premature optimization is the root of all evil.
缓慢可能永远不会成为问题,此外您还可以在数据库中进行大量优化。

【讨论】:

    【解决方案2】:

    如果您已经在使用数据库,那么在其中存储它会容易得多。 5000个字符不算什么。性能在这里似乎有点无关紧要。

    【讨论】:

    • 我不太确定如果经常将大量数据输入数据库会如何影响性能。我担心的是该站点已经是数据库密集型的。感谢您的提醒。
    【解决方案3】:

    将这样的内容保存到数据库中可能是最好的选择。在您拥有至少 MB 大小的文件之前,任何体面的数据库都应该可以很好地处理它们。

    【讨论】:

      【解决方案4】:

      个人资料信息是否与现有数据库信息有任何关联?个人资料信息的结构是完全规则的,还是用户对他或她个人资料的结构有一定程度的控制?您将拥有多少用户?

      如果配置文件信息与数据库的数据库功能完全分离,或者如果它的结构明显可变,并且如果您的文件足够少以免文件系统陷入困境,那么将其存储在单独的 XML 文件中是值得的考虑。

      如果有大量配置文件并且信息适合关系存储,那么我可能会将其放入数据库中。如果它与您的主数据库的功能相关,它可能属于那里。如果没有,您可以考虑为配置文件单独使用一个数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-17
        • 2018-02-01
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        • 2010-10-21
        相关资源
        最近更新 更多