هل قاعدة البيانات هي الخيار الصحيح لتخزين البيانات لتطبيق C# الخاص بي؟

StackOverflow https://stackoverflow.com/questions/3514284

  •  29-09-2019
  •  | 
  •  

سؤال

أقوم بتطوير تطبيق C# وأريد التأكد من اختيار الخيار الأفضل لتخزين البيانات الذي يناسب هذه المواصفات.

يمكن أن يكون للبرنامج كمية لا حصر لها من البيانات ، ولكن سيتم استخدام هذه البيانات فقط من قبل مستخدم واحد يستخدم التطبيق. في كل مرة يتم فيها إغلاق التطبيق ، أحتاج إلى حفظ البيانات ، ويجب تحميله عند بدء تشغيل التطبيق.

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

أشرني في الاتجاه الصحيح من فضلك!

شكرا ، OC

تحرير: أحد العوامل المهمة التي نسيت تضمينها هو ضرورة السماح للمستخدم واحد بحفظ جميع الإدخالات التي أدخلها وتصديرها إلى ملف خارجي يمكن مشاركته بسهولة بين التطبيقات/المستخدمين.

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

المحلول

دون معرفة المزيد حول ما يفعله تطبيقك المحدد ، من الصعب (بالنسبة لنا) تحديد ما إذا كانت قاعدة البيانات هي الخيار الصحيح. ومع ذلك ، هناك بعض القواعد التي يمكنك استخدامها للمساعدة في توجيه قرارك.

قد تكون قاعدة البيانات خيارًا جيدًا عندما:

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

قد لا تكون قاعدة البيانات هي الخيار الأفضل عندما:

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

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

في العديد من البيئات ، (مثل iPhone ، على سبيل المثال) ، توجد طبقة قاعدة بيانات مدمجة متوفرة مباشرة على النظام الأساسي. هناك أيضًا أدوات (مثل NSCOREDATA) التي تساعدك على التغلب على عدم تطابق النمذجة العليا للكائنات (ORM). في مثل هذه الحالات ، قد يكون من المنطقي استخدام قاعدة بيانات لتخزين البيانات البسيط للغاية.

هناك أيضًا عدد من طبقات ثبات البيانات مفتوحة المصدر (NHiberante ، DB4O ، وغيرها) التي تساعد على تبسيط قاعدة بيانات كمتجر ثبات ... إذا كنت تستطيع استخدامها ، يمكنها تغيير المعادلة لصالح استخدام قاعدة البيانات .

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

أحد الاعتبارات المهمة ، هو ما إذا كان المستخدمون سيشاركون البيانات التي يقومون بإنشائها/استهلاكها باستخدام التطبيق الخاص بك. إذا كان تطبيقك أكثر توجهاً نحو المستند (فكر في Word ، Excel ، PowerPoint) ، فقد يكون نموذج التسلسل المستند إلى الملف أكثر ملاءمة. إذا لم تتم مشاركة بيانات التطبيق الخاص بك - فقد تكون قاعدة البيانات منطقية.

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

نصائح أخرى

من المحتمل أن تكون قاعدة بيانات العميل/الخادم الكاملة مثل MySQL أو SQL Server مبالغة لمستخدم واحد. لكن من المحتمل أن تحصل على بعض الاستخدام من محرك مضمن/قائم على الملفات مثل sqlite أو SQL Server CE, ، خاصة إذا كنت تريد أن تفعل أكثر مع البيانات أكثر من مجرد البحث عن سجلات واحدة عن طريق ID. إذا قمت بتخزين البيانات بنفسك ، فيجب عليك كتابة الكثير من التعليمات البرمجية للحصول على سجلات تفي بمعايير معينة ، وأنا أضمن جميعًا أنك لن تفعل ذلك أيضًا مثل الأشخاص الذين يقومون بذلك من أجل لقمة العيش.

شخصيا بالنسبة لي أكثر عن البيانات أكثر من عدد المستخدمين الذين يستخدمون التطبيق.

فكر في بياناتك ، هل هي معقدة؟ إذا كنت ستنشئ بالفعل قاعدة بيانات مدى حجمها من حيث الكائنات ، وليس مقدار الصفوف ... كم عدد الجداول وما إلى ذلك ...

فكر في المستقبل ، على الرغم من أن مستخدمها الوحيد ، إلا أن البيانات ستزداد أفترض ، وكم سيتم حفظ البيانات في كل مرة؟

سيؤدي نهج قاعدة البيانات إلى تسريع تطورك بلا شك - وستكون بياناتك سلامة أفضل من ملف XML. أنا أكره استخدام الملفات شخصيًا ... لقد واجهت تجارب في الماضي حيث اختفت البيانات وما إلى ذلك من الملف.

تذكر أن هناك دائمًا إصدار SQL Compact إذا كنت ترغب في الحفاظ على مواردك محدودة.

إذا قمت بتطبيق وظائف التخزين الخاصة بك في مستودع 1) 2) ، فيمكنك البدء بتخزين الملفات ، ثم الانتقال إلى تخزين قاعدة البيانات إذا حددت لاحقًا حاجة إلى القيام بذلك

1) http://martinfowler.com/eaacatalog/repository.html
2) https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08/the-repository-pattern.aspx

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