1

我开发了一个界面,用户将上传一个包含数百个 XML 文件的 zip 文件,其中 XML 文件的长度大约为 200 到 8000 行。

上传 ZIP 文件后,必须提取所有 XML 文件并将其显示给用户,因为用户需要手动编辑文件并批准 XML 文件的内容,然后才能将其移动并永久存储在服务器中。

并且从永久存储中,所有 XML 文件都将通过私有 API 调用返回给请求用户。

令我困惑的是数据应该存储在临时或永久存储中的方式,因为它需要编辑、排序、分页和搜索 XML 文件中的内容。

我正在探索许多选择,其中一些是。

  1. 使用 MySql 数据库存储数据
  2. 使用像 Apache Lucene 这样的全文搜索引擎来存储(这可能是个坏主意,但不确定)。
  3. 将其存储在永久目录中并直接读取/写入文件。

我想知道是否有人遇到过类似的问题,或者采取这种情况的可行方法是什么?

PS:我正在使用 Zend Framework 和 Doctrine 进行应用程序开发。

4

1 回答 1

1

如果数据没有以任何其他方式使用,而不是作为 XML 文件使用(因此不需要查询或搜索数据),那么最好将数据保存在文件中。将其存储在数据库中会增加不必要的开销,尤其是因为您不断在 db 和 XML 之间来回转换数据。

如果是这种情况,我会使用例如 SimpleXML ( http://php.net/manual/en/book.simplexml.php ) 编写一个包装器,它可以执行基本任务,如循环 XML 文件、保存行等。如果您需要添加某种搜索功能,您可以使用 DOMXPath ( http://www.php.net/manual/en/class.domxpath.php ) 添加一些很酷的东西。

另一方面,如果以其他方式(如 API、查询搜索等)需要数据,我会解析传入的 XML 文件并将它们存储在数据库中。

附言。我想补充一点,如果客户对系统和功能的长期意图不是 100% 清楚(只有您可以以某种方式确定),我会选择数据库存储,尽管如果只使用 XML 格式会产生开销。如果所有内容都整齐地存储在数据库中,那么添加计算、搜索、数据合并等新功能就不是问题。如果您有一个充满 XML 文件的驱动器,您可能需要重写大量代码。

于 2013-07-27T12:33:02.513 回答