在PHP中作为脚本例程导入大量数据时,XML是最好的数据交换格式吗?
如果我有50000-100000个产品SKU以及需要定期(至少每天一次)更新的附带信息(包括规格和说明),XML是作为数据交换格式的最佳方式吗?该应用程序是用PHP编写的,我考虑将SimpleXML转换为PHP的本机MySQL调用(而不是使用应用程序挂钩将数据转储到数据库中的适当位置)。服务器将基于Linux,我将拥有完全的根访问权限。我知道这是一个相当普遍的问题,这就是为什么我把它作为社区维基——我正在寻找一种被认为是最佳实践的总体方法。如果重要的话,应用程序是Magento。XML唯一真正的缺点是它非常冗长。与其他格式相比,XML文件通常非常大。好处是它相对容易阅读(对于人)和解析(对于软件)。由于只有10万条记录(不知道每条记录的大小),我想我应该使用XML。我目前在电子商务项目中使用XML作为导入格式。它目前拥有10000多个产品、属性和描述,并将非常快速地对数据进行迭代。不过,在这件事上我别无选择在PHP中作为脚本例程导入大量数据时,XML是最好的数据交换格式吗?,php,xml,import,magento,Php,Xml,Import,Magento,如果我有50000-100000个产品SKU以及需要定期(至少每天一次)更新的附带信息(包括规格和说明),XML是作为数据交换格式的最佳方式吗?该应用程序是用PHP编写的,我考虑将SimpleXML转换为PHP的本机MySQL调用(而不是使用应用程序挂钩将数据转储到数据库中的适当位置)。服务器将基于Linux,我将拥有完全的根访问权限。我知道这是一个相当普遍的问题,这就是为什么我把它作为社区维基——我正在寻找一种被认为是最佳实践的总体方法。如果重要的话,应用程序是Magento。XML唯一真正的
使用SOAP将是仅接收原始XML的可行替代方案(尽管,我认为这会增加性能成本,因为SOAP使用XML作为其消息传递格式),但是,您可以将数据作为本机PHP类型获取,例如可以直接传递给DAL以插入数据库的数组,跳过构造SimpleXML对象的需要 您必须为给定场景定义“最佳”参数 XML是冗长的,这意味着两件事
- 您可以提供大量关于数据的详细信息,包括元数据
- 文件大小将会很大
我的观点是,您需要找出什么对您的系统很重要(速度?字符集支持?人类可读性?),并选择一种双方都兼容的格式。JSON比XML占用的空间小得多,尽管XML压缩得很好。XML还具有许多成熟库和工具的优势 如果您与第三方源交换数据,您可能希望使用模式验证这些XML。对于JSON,您没有这样的功能
就我个人而言,我大部分时间都在使用XML。如果空间是个问题,我会对XML数据应用gzip压缩 当你说“作为原生PHP类型”,你是什么意思?如果服务器A(具有原始数据)调用服务器B(具有应用程序实例),它将发送什么?好的,SOAP服务器(在它的WSDL中(如果使用),可以将“type”指定为“type=”xsd:struct“,这意味着您的PHP SOAP客户端应该将来自SOAP函数调用的响应解释为数组。不需要创建SimpleXML对象,因为您的客户端已经为您返回了一个数组。二进制文件不需要完全解析,因此可以非常快速地映射到内存中。然而,在交换数据时,这可能会变得棘手,因此在这里,XML可能是合适的。