سؤال

على صفحة الويب الرسمية SQLite3 هناك مكتوب يجب أن أفكر في SQLite كبديل لوظيفة FOPEN ().

ما رأيك في ذلك؟ هل هو دائمًا حل جيد لاستجابة تخزين البيانات الداخلية للتطبيق مع SQLite؟ ما هي الإيجابيات والسلبيات من هذا الحل؟

هل لديك بعض الخبرة في ذلك؟

تحرير: ماذا عن تجربتك؟ هل هي سهلة الاستخدام؟ هل كانت مؤلمة أم سعيدة إلى حد ما؟ هل أحببت ذلك؟

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

المحلول

هذا يعتمد. هناك بعض التحركات المتناقضة:

  • بالنسبة لملفات التكوين ، يكون استخدام النص العادي أو XML أسهل بكثير في التصحيح أو التغيير من استخدام قاعدة بيانات علائقية ، حتى خفيفة الوزن مثل SQLite.

  • من الأسهل وصف هياكل الأشجار باستخدام (على سبيل المثال) XML من استخدام الجداول العلائقية

  • تم توثيق واجهة برمجة تطبيقات SQLite بشكل سيء للغاية - لا توجد أمثلة كافية ، وارتفاع الارتباط ضعيف. OTOH ، المعلومات كلها هناك إذا كنت تهتم بالحفر من أجلها.

  • سيكون استخدام التنسيقات الثنائية الخاصة بالتطبيق أسرع من تخزين نفس التنسيق مثل النقطة في قاعدة بيانات

  • يمكن أن يعني فساد قاعدة البيانات LOS من الكل بياناتك بدلاً من ذلك في ملف سيء واحد

OTOH ، إذا كانت بياناتك الداخلية تتناسب بشكل جيد مع النموذج العلائقي ، وإذا كان هناك الكثير منه ، فإنني أوصي SQLite - أستخدمه بنفسي في أحد مشاريعي.

فيما يتعلق بالتجربة - أستخدمها ، فهو يعمل بشكل جيد ويسهل الاندماج مع التعليمات البرمجية الحالية. إذا كانت الوثائق أسهل في التنقل ، فسأعطيها 5 نجوم - كما هو سأعطيها أربعة.

نصائح أخرى

كما هو الحال دائمًا ، لا توجد حلول "مقاس واحد يناسب الجميع"

إذا كنت بحاجة إلى تخزين البيانات في ملف مستقل ويمكنك الاستفادة من إمكانات قاعدة البيانات العلائقية لقاعدة بيانات SQL من SQLite رائعة.

إذا لم تكن بياناتك مناسبة لنموذج علائقي (بيانات هرمية على سبيل المثال) أو تريد أن تكون بياناتك قابلة للقراءة إنسانيًا (ملفات التكوين) أو تحتاج إلى التبادل مع نظام آخر من SQLite لن تكون مفيدة للغاية وقد تكون XML كن افضل.

إذا كنت بحاجة من ناحية أخرى ، فأنت بحاجة إلى الوصول إلى البيانات من برامج أو أجهزة كمبيوتر متعددة في نفس الوقت من مرة أخرى ، فإن SQLite ليس خيارًا مثاليًا وتحتاج إلى خادم قاعدة بيانات "حقيقي" (MS SQL ، Oracle ، MySQL ، Posgresql ...) .

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

أجد أن SQLite يسعدني العمل معه ، لكنني لن أعتبره بديلاً يناسب الجميع لـ FOPEN ().

على سبيل المثال ، كتبت للتو جزءًا من البرنامج يقوم بتنزيل الصور من خادم ويب وتخزين مؤقتها محليًا. تخزينها كملفات فردية ، يمكنني مشاهدتها في Windows Explorer ، والتي لها فوائد بالتأكيد. لكنني بحاجة إلى الاحتفاظ بفهرس يطرح الخرائط بين عنوان URL وملف الصورة من أجل استخدام ذاكرة التخزين المؤقت. تخزينها في قاعدة بيانات SQLite ، وهم جميعًا يجلسون في ملف صغير أنيق واحد ، ويمكنني الوصول إليها بواسطة URL (حدد IMGDATA من ذاكرة التخزين المؤقت حيث url = 'http: //foo.bar.jpg') مع القليل من الجهد.

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