我的Web应用程序将产品信息存储在Web服务器上的磁盘上的XML文件中。这对于一些产品来说非常好,但我担心大量文件可能会导致问题。
因此,假设我将拥有20,000个产品,这意味着目录中包含20,000个XML文件。我不熟悉Web服务器磁盘存储基础架构,这么多文件会导致访问速度大幅下降和/或磁盘碎片过多等问题吗?存储服务器甚至是碎片,碎片是一个我需要在服务器上担心的问题吗?
我更愿意将我的xml文件保持个性化,因为我可以通过http直接访问它们作为静态内容,从而为我提供更快的访问速度和缓存。另一种方法是创建一个大的二进制数据文件,并以二进制模式将每个产品数据xml存储在该文件中,然后使用服务器端脚本从该大数据文件中提取xmls。 (是的,我知道我可以将它们保存在数据库中,但这不是我感兴趣的情况。)
答案 0 :(得分:0)
看看Berkeley DB XML数据库系统。您可以保留原生XML,同时获得数据库的所有ACID优势。
请记住,磁盘IO将成为最昂贵的操作之一。
链接:http://www.oracle.com/database/berkeley-db/xml/index.html
答案 1 :(得分:0)
最好限制任何特定目录中的文件或目录数量。
一种策略是,如果您有每个XML文件的唯一标识符,请创建使用该标识符的文件夹结构。
e.g。
产品000123存储在:
产品\ 00 \ 01 \ 23 \ product.xml
和产品019384存储在:
产品\ 01 \ 93 \ 84 \ product.xml
这会将任何特定文件夹中的项目数量减少到100,这是相当合理的。
希望有所帮助。
答案 2 :(得分:0)
如果你明白你拥有那么多产品,我强烈建议你使用某种类型的数据库系统。如果您的主要关注点是缓存,那么有很多caching methods可以为数据库驱动的系统提供类似静态的性能。另外,如果您的公司需要管理20,000个产品,那么管理数据库表是他们最不担心的问题;)
答案 3 :(得分:0)
数据库是要走的路。如果你不想要外部依赖,你可以使用sqlite。它内置于php中,默认情况下在当前版本的php上启用。
基础数据存储通常是单个文件。
答案 4 :(得分:-1)
文件大小是多少?点击次/秒?每个文件的相对受欢迎程度是多少?多少个磁盘?内存多少钱?你在使用RAID吗?
基本上 - 这取决于。