XML文件中的数据:一个大文件还是多个小文件?

Jör*_*örg 7 xml performance parsing

我目前正在开发一个基于XML的CMS,它将数据保存在名为"items"的块中.这些可以在网站上用来显示内容.

现在,目前我为每个项目都有一个单独的XML文件.由于该网站上的大多数页面使用这些项目中的大约三到四个,因此具有例如20个页面的相当小的网站具有大约100个不同的项目.因此,我/ xml/items文件夹中的xml文件数量相同.

是否最好将所有数据存储在一个单独的items.xml文件中,还是我当前的方法更好?

Pro Single File - xml/items.xml

  • 较少的文件(在较大的网站上谈论数千个项目时可能会开始成为性能问题.)
  • 减少磁盘访问(特别是在管理中包含所有项目的列表)

Pro多个文件 - xml/items/*.xml

  • 由于只需要解析一个小文件,因此访问单个项目的速度更快

Thi*_*ies 5

我认为您目前的方法是两种选择中更好的一种。鉴于您的用户使用您创建的界面来编辑文件,他们无论如何都不会在包含许多文件的目录中搜索文件。

考虑到破坏文件需要什么,许多文件的优点是您不会受到一次重大打击,而只会受到单个文件的打击。锁定也更好 - 因为一次锁定一个文件以进行写入,而不是完整的“主 XML 文件”。


Zac*_*ham 5

这里已经有很多深思熟虑的回应。

1 个大文件或许多小文件都应该可以正常工作。需要考虑的问题更可能围绕管理和维护。如果由于项目位于一堆不同的文件中而难以维护,那么也许一个大文件就是答案。

一些想法:

  • 一个大文件意味着一个错误(无效的 xml)可能会破坏整个应用程序,而许多文件只会影响使用该项目的页面。通过不在生产中编辑数据来缓解。

  • 每个服务器都有自己的项目文件结构吗?或者这些项目是否位于单个高可用性共享中?您放置的数据副本越多,数据在特定服务器上不同步的可能性就越大,这可能难以追踪。

  • 无论您选择 1 个文件还是多个文件,您都可以解决/抽象代码中的任何数据访问(锁定、搜索等)问题。您需要编写的代码越多来执行锁定、搜索等操作,您可能需要调试的错误就越多。

  • 如果性能开始成为问题,请考虑将项目缓存一段时间以避免访问磁盘。

您可能想查看 Scott Hanselman 的dasBlog 博客引擎。我相信它本质上是一个基于 xml/text 文件的内容管理系统,它采用了多文件方法,回顾一下可能会有所帮助。