هل يوثر تخزين المعلومات في قاعدة البيانات في تطبيقات أندرويد على سرعة التطبيق؟


التعليقات

13

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

فمثلا قراءة البيانات على ال GUI thread تؤثر على الأداء ويفضل دائما ان تكون عمليات ال DB على thread آخر.

أمر آخر وهو عملية الإتصال مع قاعدة البيانات، هناك من يجد أن فتح وغلق الإتصال هو حل مناسب. بالنسبة لي أقوم بفتح الإتصال مرة واحدة فقط عند أول تعامل مع قاعدة البيانات ومن ثم أترك الإتصال مفتوحا الى أن يتم غلق التطبيق، حيث يقوم نظام التشغيل بغلق كل ال resources المستخدمة (ومنها الإتصال مع قاعدة البيانات). سبب ذلك هو الحوجة الدائمة الى استخدام قاعدة البيانات على أكثر من thread. وفي أندرويد عندما تحاول الكتابة على قاعدة بيانات في اكثر من thread باستخدام أكثر من connection سيحدث لك خطأ SQLiteDatabaseLockedException: database is locked لذلك في مثل هذه الحالات يجب التأكد من استخدام connection واحد فقط.

أيضا عندما تحتاج الى عرض قائمة من ال Objects على ListView، في بعض الحالات يكون عدد العناصر كبير جدا، لذلك عملية قراءة جميع العناصر في List وإدخالها الى ال Adapter ومن ثم عرضها تؤثر على الأداء بشكل كبير جدا. في هذه الحالة يجب أن تستخدم ال cursor (الذي يأتي حين عملية الإستعلام) في ال Adapter.

13

مع انني لا اعتبر نفسي مبرمج اندوريد الا انني اتحدث بشكل عام هنا.

وجود قواعد بياانات في البرنامج او كثرة البيانات في قاعدة البيانات لا يشكل مشكلة ، بل ما يشكل مشكلة فعليا هو طريقة تعاملنا مع هذه البيانات. فان تعاملنا مع البيانات بصورة صحيحة لن يؤدي هذا الى بطئ في العمل. مع الاخذ بالاعتبار طريقة بناء قاعدة البيانات وهيكلية الجداول وانواع الحقول.

خذ مثالا بسيطا . انشاء جدول بحقلين احدهما نص بدون اندكس (index) واضافة 10 سجلات لها ومن ثم البحث في النص بدلالة كلمة ستكون النتيجة سريعه جدا ، مع تضخم حجم البيانات ووصول عدد السجلات الى 500 الف سجل ومحاولة البحث في النص سوف ننصدم من البطئ الحاصل. بينما لو اننا عرفنا حقل النص على انه اندكس قد نتخلص من المشكلة.

بالتالي نستخلص انه:

  • هيكلية قواعد البيانات وانواع الجداول والوصف الصحيح لحقول الجداول.

  • التعامل الصحيح مع البيانات وتحسين الاستعلامات حتى لا تشكل حملا على قاعدة البيانات.

هذا هو ما يجب ان ننتبه اليه.

وهذا لا يعني ان هناك انواع قواعد بيانات قد تكون افضل من انواع اخرى بحسب نوع المشروع.

والله تعالى اعلم


برمجة

المواضيع والنقاشات المتعلقة بالبرمجة بشكل عام او لغات البرمجة التي لايوجد لها مجتمعات فرعية.

24.6 ألف متابع