存储大XML数据的最佳位置


Best Place to store Big XML Data

我正在做一个项目,在这个项目中,xml提要通过cron作业从不同的服务器获取到我的服务器,并将其保存为文件,我的网站使用该xml文件在网站上显示数据。

但问题是,xml文件大约有两个大文件(4mb),每次用户访问网站时,服务器都会从同一位置获取文件并对其进行解析,然后为用户提供服务,所以如果点击1000次,服务器就会将其拉1000次(这是我想解决的开销)

我试着使用memcache,但也被限制为2mb。

有人能告诉我,将大xml保存在DB、xml文件或memcache中的最佳方法是什么吗?我应该将大xml分类吗??

我会创建一个数据库,让cron作业获取,然后解析XML并将所有内容插入数据库,并且只为数据库中的用户提供服务。

为了确保数据的一致性,您可以实现基本的版本控制。将当前版本号存储在某个位置;无论何时获得新的XML,都要将下一个版本存储到数据库中,然后更新当前版本号,定期清理。

您可以实现一个原生PHP缓存系统,它不像Memcached那样有内存限制,请阅读以下内容:http://www.the-art-of-web.com/php/buffer/

对4MB的数据使用memcache不是一个好的选择,而且您已经遇到了XML文件的问题。正如@ori所回答的那样,更好的选择是将xml数据存储到某个数据库中,并从数据库中为用户提供服务
找到这个链接MySQL 5.5加载XML语法,例如如何将XML加载到数据库
还有一点,如果您将XML作为web服务(如SOAP)来获取,那么应该有一个只获取更新数据的选项。这样,你也可以节省一些下载时间。

您应该考虑28msec来存储XML数据:http://www.28msec.com

但问题是,xml文件大约有两个大文件(4mb),每次用户访问网站时,服务器都会从同一位置获取文件并对其进行解析,然后为用户提供服务,所以如果点击1000次,服务器就会将其拉1000次(这是我想解决的开销)

因此,您已经缓存了网络访问,但到目前为止还没有缓存解析。为什么不缓存解析?!这将减少显示结果所需的时间,因为XML没有更改,所以解析也不会更改。

如果速度仍然太慢,你可以展望下一步在哪里提高速度,例如缓存每个类别等等。由于您没有显示任何代码,也没有具体概述如何处理数据,因此无法给出更多建议。