كنت قد امضيت وقتا طويلا في استخدام الملفات من نوع xml التي يرى البعض أنها الطريقة الأمنة ذات الكفاءة في تخزين البيانات الخاصة بطريقة مشابهة للتخزين في أي قاعدة بيانات تجارية.
ولكن حقيقة مؤلمة أفجعتني في الفترة السابقة عندما بدأت أتعامل مع xml بشكل صارخ ولا محدود، وهي أن استخدام xml غير عملي بالمرة بالمقارنة مع قواعد البيانات بالنظر إلى حجم البيانات.
اسمحولي أن أشرح مبسطا المشاكل التي تواجه المعتمدين على xml:
1- عندما يزيد حجم ملفات الـxml تتفتق مشكلة البطء الشديد في معالجة البيانات المتضمنة في الملف. مثلا لو كان حجم الملف 50MB وأردت أن تقوم بتعديل أحد العقد أو الـnodes أو اضافة أخرى الى الملف، وسواء استخدمت أي component أو اعتمدت على الـstreams، فإنك بلا شك ستلاحظ البطء الشديد في النتائج.
2- أجريت تجربة لتحويل ملف نصي csv حجمه 20MBإلى xml وكانت النتيجة أن حجم الملف الـxml تعدى 100MB مما يعني أن حجم البيانات قد تضاعف بشكل غير مقبول على الإطلاق.
3- معظم الـcomponents الموجودة التي تستخدم لمعالجة البيانات في ملفات xml تحمّل كل العقد (nodes) في الذاكرة، وكمثال أنا كنت أستخدم Microsoft XML DOM، ووجدت أن الذاكرة تتعرض لضغط شديد جدا في حالة استحضار بيانات الـxml.
بعد تجارب عديدة ومضنية وصلت مع xml إلى طريق مسدود، فحين أحتاج لمعالجة البيانات بدون اسراف في الذاكرة ألجأ إلى الـstreams ويصيبني احباط من البطء الشديد. وعندما أقرر استخدام الذاكرة يصيبني الإحباط من البطء+الإسراف المبالغ فيه. وعند التخزين النهائي تنهار أعصابي من الحجم غير المقبول للملفات، وعلى هذا أظن بإمكاني أن أنصح الجميع بأن لا يستخدموا xml إلا في الحالات الأتية:
1- أن يكون حجم البيانات المراد تخزينها صغير نسبيا (مثلا تخزين التفضيلات الخاصة بالمستخدم).
2- أو تكون البيانات شبه ثابتة لن تتغير في كل حين (كالبيانات التي تستنبط من قاعدة بيانات شهرية)
3- أو أن يكون لا سبيل أخر غير استخدام الـxml (لا يوجد مثال على ذلك).