سلام عليكم ورحمة الله وبركاته
أتساءل إذا كان التطبيق يستخدم MySQL في سيرفر، فهل يعني هذا عدم استخدام SQLite ؟
أين أستخدم SQLite في هذه الحالة؟ وهل من داعٍ لذلك؟
mysql بيانات الاتصال ستكون عند المستخدم لذا لاتكون آمنة يمكن للمستخدم حذف وتعديل معلومات الغير إن هناك صلاحيات لذلك او إدخال معلومات لذا sqlite أفضل
وأن تريد إبقاء البيانات في الشبكة قم ببناء api.
هل يجب إذاً المزامنة بين SQLite و MySQL ؟
هل هذه هي الطريقة الأفضل أو الطريقة الشائع استخدامها في التطبيقات؟
نعم يمكن المزامنة لكن المعلومات لن يستطيع المستخدم الدخول اليها من هاتف آخر مثلًا وإن ضاعت قاعدة البيانات عند المستخدم ستفقد البيانات إذًا عليك بحفظ البيانات المهمة في قاعدة بيانات خارجية ايًا كانت mysql , sql server أو حتى sqlite في الخادم (عن طريق وسيط) , .....
لكن لاتضع معلومات القاعدة في التطبيق بل التواصل من خلال api مثلًا عمل رابط example.com/api/getLastNotifications
يقوم بإخراج بيانات json أو xml أو ... والتطبيق يقراءها.
أنا لا أسأل عن ماهيّة SQLite أو MySQL ، ولا عن طريقة استخدامهما؛ لأني أعلم ذلك سلفاً.
بالمثال، أرجو أن تضح الفكرة أكثر..
ولنفرض أن هناك تطبيقاً بحاجة لاستخدام قاعدة بيانات في سيرفر. فهل في هذه الحالة ستسخدم SQLite ؟ ولماذا؟
إن كان لديك مثالاً أفضل فأرجو منك كتابته.
SQLite يقصد به مكان التخزين على جهاز الأندرويد، امكانية الوصول إلى المعلومات فقط ضمن الجهاز.
MySQL سيكون سيرف لقاعدة بيانات خارج الجهاز أي جهاز اخر يستطيع جلب و اضافة المعلومات له.
ربط تطبيق اندرويد بشكل مباشر بـ MySQL صعب ومعقد ، اعتقد ذلك.
أنا لا أسأل عن ماهيّة SQLite أو MySQL ، ولا عن طريقة استخدامهما.
سؤالي عن هل لِــ SQLite داعٍ في ظل وجود MySQL ؟
لمَ لا يتعامل المستخدم مع MySQL؟
لماذا تحفظ البيانات في SQLite ومن ثمّ نُزامنها مع MySQL (إذا وجد اتصال)؟
هل هناك سبب ؟ (غير مشكلة الاتصال)
SQLite موجودة في نظام الأندرويد لاتستطيع ازالته !
هل داعٍ لوجوده في ظل وجود MySQL حسب التطبيق الذين تريد ان تبرمجه هل سيتعامل مع SQLite أم مع MySQL.
لمَ لا يتعامل المستخدم مع MySQL؟
لان MySQL تحتاج سيرفر خاص ، و ربط تطبيق اندرويد مع MySQL مباشرة ليس بالأمر السهل.
لماذا تحفظ البيانات في SQLite ومن ثمّ نُزامنها مع MySQL (إذا وجد اتصال)؟
لان SQLite موجودة على الجهاز و MySQL موجودة على سيرفر ولايتم التواصل معه الا من خلال وجود اتصال بالانترنت.
اتمنى اني قد وضحت لك استفساراتك
تعتمد على التطبيق.
بعض التطبيقات تقدم تجربة مستخدم جيدة Better User Experience وبالتالي تحتاج الى local database في التطبيق لعمل caching للبيانات دون الحاجة الى طلبها، أيضا توفر non blocking operation وبالتالي عند ارسال بيانات مثلا، يتم حفظها في قاعدة البيانات ، وبمجرد توفر اتصال انترنت أو عندما تعمل ال service الخاصة بتنفيذ هذه الطلبات يتم قرائتها.
شكراً. نقطتك واضحة.
لكن هل هذا هو السبب الوحيد؟ أم أن هناك أسباب أخرى؟ على سبيل المثال أن التعامل مع SQLite أسرع...
بالطبع توجد اسباب اخرى، لا يمكنني حصرها الان.
مثلا:
عرض List مكون من عدد كبير من العناصر مثلا 1000 عنصر أو أكثر. الطريقة المناسبة لعرضها هي حفظها في SQLite ومن ثم الإستفادة من AdapterCursor والذي هو عبارة عن مؤشر الى ال recrod الحالي، وعندما تقوم بعمل scroll لل list يقوم ال cursor بتحميل ما يحتاجه من records فقط دون الحوجة الى تحميل جميع ال records كما في ال list structure.
أيضا التطبيقات التي تحتاج الى عمل مزامنة Sync data تتطلب وجود local storage.
التعليقات