هل XML هو أفضل تنسيق تبادل البيانات عند استيراد كميات كبيرة من البيانات كروتين نصوص في PHP؟

StackOverflow https://stackoverflow.com/questions/1069328

  •  21-08-2019
  •  | 
  •  

سؤال

إذا كان لدي 50،000-100،000 منتج SKU مع المعلومات المصاحبة ، بما في ذلك المواصفات والأوصاف ، والتي يجب تحديثها بشكل منتظم (على الأقل مرة واحدة يوميًا) ، هل XML هي أفضل طريقة للذهاب لتنسيق تبادل البيانات؟ يتم كتابة التطبيق في PHP ، وأنا أفكر في SimpleXML لمكالمات MySQL الأصلية الخاصة بـ PHP (بدلاً من استخدام خطافات التطبيق لتفريغ البيانات في الموقع المناسب في DB). سيكون الخادم قائمًا على Linux ، وسأحصل على جذر كامل. أعلم أن هذا سؤال عام إلى حد ما ، وهذا هو السبب في أنني جعلته ويكي المجتمع - أنا أبحث عن نهج عام يعتبر أفضل الممارسات. إذا كان ذلك يهم التطبيق هو Magento.

هل كانت مفيدة؟

المحلول

عليك أن تحدد معلمات "الأفضل" للسيناريو الخاص بك.

XML مطول ، وهو ما يعني شيئين

  • يمكنك توفير الكثير من التفاصيل حول البيانات ، بما في ذلك البيانات الوصفية
  • ملفات الملفات ستكون كبيرة

الميزة الأخرى التي تكسبها مع XML هي التحليل/الاختيار أكثر تقدمًا "خارج الصندوق" بأدوات مثل XPath.

ولكن هناك العديد من التنسيقات الأخرى التي يمكنك اختيارها ، ولكل منها ميزة خاصة بها

والعديد من الآخرين.

نقطتي هي أنك تحتاج إلى معرفة ما هو مهم لنظامك (السرعة؟ دعم محدد الأحرف؟ قابلة للقراءة البشرية؟) واختيار تنسيق سيكون متوافقًا مع كلا الجانبين.

نصائح أخرى

الجانب الحقيقي الوحيد إلى XML هو أنه مطوّل للغاية. ملفات XML كبيرة جدًا بشكل عام مقارنة بالتنسيقات الأخرى. الاتجاه الصعودي هو أنه من السهل نسبيًا قراءته (للأشخاص) والحالة (للبرامج). مع 100 ألف سجل فقط (دون معرفة حجم كل سجل) ، أعتقد أنني سأذهب مع XML.

يأخذ JSON مساحة أقل بكثير من XML ، على الرغم من ضغط XML بشكل جيد للغاية. لدى XML أيضًا ميزة الكثير من المكتبات والأدوات الناضجة.

إذا قمت بتبادل البيانات مع مصادر الطرف الثالث ، فقد ترغب في التحقق من صحة XML مع مخطط. ليس لديك هذا ل JSON.

أنا شخصياً ينتهي بي الأمر باستخدام XML معظم الوقت. إذا كانت المساحة مشكلة ، فأطبق ضغط GZIP على بيانات XML.

أستخدم حاليًا XML كتنسيق استيراد في مشروع التجارة الإلكترونية. لديها حاليًا أكثر من 10000 منتج وسمات وأوصاف وسيقوم بالتكرار عبر البيانات بسرعة كبيرة. ليس لدي أي خيار آخر في هذا الأمر.

سيكون استخدام SOAP بديلاً قابلاً للتطبيق لمجرد تلقي XML الخام (على الرغم من أنني أعتقد أن هذا سيضيف إلى تكلفة الأداء ، حيث يستخدم SOAP XML نظرًا لتنسيق المراسلة على أي حال) ، ومع ذلك ، يمكنك الحصول على بياناتك كنوع PHP أصلي ، مثل صفيف يمكنك نقله مباشرة إلى DAL لإدخاله على قاعدة البيانات ، مما يؤدي إلى جانب الحاجة إلى بناء كائن SimpleXML.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top