هل عملية serialize و unserializ هي عملية مكلفة للذاكرة . مثال على ذلك ..

السلام عليكم ورحمة الله وبركاتة

لدي مشروع اعمل عليه الان فخطرت على بالي فكرة هي ان يتم جمع المعلومات من قاعدة البيانات ( الرسائل ) بين زوجين من الاعضاء ووضعها في serialize

الفكرة هي في حالة تجاوز عدد الرسائل بين الطرفين 10 رسائل يتم وضعها في serialize ويتم استبدال جميع الحقول ( العشرة ) بـ serialize ويتم حذف العشرة حقول من القاعدة حيث تتبقى فقط المعلومات داخل serialize ومن ثم يمكنني الاستعلام عن حقل بدل من ١٠ حقول وهكذا مع كل 10 رسائل بين الطرفين يتم جمع الحقول في serialize ويتم استبدال العشرة حقول

ولكن ماذا لو كان مجموع الرسائل بين الطرفين 200 رسالة ( 200/10 ) = 20 => serialize

هل العملية مكلفة من ناحية الذاكرة او على اداء البرنامج

وهل يفضل استخدام json بدلال من serialize

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

من تجربة -ادمانية- على استخدام نفس الطريقة لمن بـ JSON أقول :

1 - json أفضل من serialize لأن الاولى تخزن المفتاح والقيمة ببساطة، بينما الثانية تخزن المفتاح وعدد حروفه والقيمة وعدد حروفها، ولو تغير شيء بسيط في الترميز أو ثمت يدويا بتغيير قيمة ما فسيظهر خطأ

2 - حقل التخزين، هل سيكون TEXT أم أقل أم أكثر ؟

إذا كان الحقل كبيرا فسيستهلك الاستعلام موارد أكبر من استهلاك بضعة حقول

3 - تصور أنك اخترت حقل من نوع TEXT الذي سعته 65535 رمز

وكل مرة تستخرج منه محتوياته وتفككها ثم تضيف إليها محتويات جديدة ثم تعيد تخزينها مرة أخرى

ماذا سيحدث حين تتجاوز القيمة المخزنة 65535 رمز ؟

سيتكسر التشفير ولن تستطيع استخراج البيانات مرة أخرى إلى بتدخل يدوي لإنقاذ ما تبقى منه !

لذلك يجب عليك أن تعرف لماذا ومتى تستخدم هذه الطريقة، لأنها في الحقيقة مجدية كثيرا لكن مع أخذ الاحتياطات اللازمة.

ماذا سيحدث حين تتجاوز القيمة المخزنة 65535 رمز ؟

فعلت نفس الطريقة من قبل لاكن لم اختر TEXT بل LONGBLOB مع تشفير gzip سعته 4294967295 رمز لم اواجه اي مشكلة به

صحيح استخدام json افضل من serialize اذا كنت تبحث عن مصفوفة ولكن السيريالايز افضل من json اذا كنت ترغب في تفصيل المعلومات اكثر

كما ان الطريقة التي ارغب في اعتمادها لاتعتمد على التعديل على السيريالايز او ال جسون

مثال على ذلك :

id = 2

message 50

id = 3

message 50

هذه هي الطريقة المعتمده ولكن مايشغل بالي طريقة التفكيك في حال كانت لدي ١٠٠٠ json او serialize

هنا بأعتقادي ان اداء البرنامج سيتغير كثيراً

اين هي المشكلة في الاستعلام عن 10 حقول ؟

المشكلة لو كانت الرسائل بين الطرفين ٢٠٠ رسالة

وفي موضوعي هو ان يتم جمع كل ٢٠ رسالة في serialize واستبدال ال ٢٠ حقل التابع للرسائل بـ serialize التي تحتوي على ال ٢٠ رسالة

اتمنى ان تكون قد اتضحت الصورة

جميل .. لم افهم لماذا تريد القيام بذلك ؟

مثلا إذا كان لديك نظام أعضاء وكل عضو لديه ملف به 300 تعريف من الاسم والوظيفة وغير ذلك، حينها الأمر يكون أسهل بجمع التعاريف في حقل واحد بدل 300 حقل!

-1

قم بتقسيمها إلى tabs و كل تاب يتم تحميله بالأجاكس , هذا حل أبسط

لا أقصد العرض وإنما التخزين والمعالجة أخ عبد الله

نفس الكلام أخى Rifizm ... التخزين و المعالجة يتم جزئياً على كل tab على حده

في حال تجاوزت الرسائل بين الطرفين ١٠٠٠ رسالة هنا توجد مشكلة

استخدام limit سيفي بالغرض

ولكن لسبب ما اريد وضعها في serialize

البيانات الكبيرة كما قلت (1000) لا أنصح بهذه الطريقة

تصور استعلام،معالجة ثم تخزين في الذاكرة

هذا أعقد من جلب الحقول مع التقطيع بـ limit

في الواقع لاتوجد مشكلة في ادخال واستخراج البيانات وعمل serialize لها واستبدالها في مكان الصفوف

المشكلة هي في حال كان لديك 100 serialize وكل واحده منهم تحتوي على مصفوفة بداخلها ٥٠ عنصر

5000 = عنصر

هنا المشكلة :( لو كنت تستخدم لوب لإستخراج ٥٠٠٠ عنصر

تفضل أحد الإخوة هنا عن حساسية Serialize، لذلك أتعامل مع ال JSON في أغلب مشاريعي.

ربما قد يكون ردي خارج المقال لكن هي فعلاً مشكلة تخزين الرسائل

عندما افكر في الامر فانا لا احتاج الى تخزين كل رسالة بين طرفين ! وفي نفس الوقت يجب تخزينها للرجوع اليها (الطرفين وليس احد اخر طبعاً)

بعد التفكير قررت ان افعل كما فعلت شركة الواتساب واخزن كل رسالة على قاعدة بيانات ناحية العميل SQLite

اجد هذا الحل فعال اكثر بامانه وربما ساعدني نظام لاندرويد في حل المشكلة ولكن هل هناك قاعدة ناحية العميل في المواقع ؟ (لم ابحث بعد انما افكر هههههه)

اجل هناك webSQL و هو عبارة عن API يمكن من التعامل مع البيانات دون اللجوء إلى خدمات السيرفرـ بحيث أن كل البيانات يتم تخزينهــا لدى المستخدم

حيث يقوم المتصفح بدور الــSGBD أي نظام التعامل مع فواعد البيانات.

و يمكنك زيارة الموضوع التالي لمعلومات اكتر :

و ايضا هناك مكتبة JavaScript للتعامل مع قاعدة بيانات من ناخية العميل و اسمها TaffyDB

ابحت عنها اضن موقعها taffydb.com

لكن المشكل في هدا هو مشكل حماية البيانات

اضن عمل قاعدة بيانات SQLite في الموقع و كل عضوية يتم تسجيلهم في قاعدة لوحدها احسن في نظري من قاعدة بيانات من جهة العميل

يمكنك ان تحفظها مشفرة وتنفك في ناحية السيرفر او حفظ معلومات غير ضارة على ما اظن