متى يحين وقت تغيير الواجهة الخلفية لقاعدة البيانات؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

فكرتي الأولية هي أن الترتيب لهذا سيبدو كما يلي (ولكن ليس بالضرورة، ولهذا السبب أطرح السؤال).

  1. ملفات مسطحة
  2. بي دي بي
  3. سكليتي
  4. ماي إس كيو إل
  5. PostgreSQL
  6. خادم قاعدة البيانات
  7. وحي
هل كانت مفيدة؟

المحلول

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

من المحتمل أن تحصل على فائدة أكبر بكثير من تخزين البيانات مؤقتًا باستخدام شيء مثل com.memcached من التبديل إلى خلفية تخزين عشوائية أخرى.

نصائح أخرى

إذا كنت تعتقد أنك ستحتاج في أي وقت إلى أحد الشركات ذات الوزن الثقيل (SqlServer، Oracle)، فيجب أن تبدأ بأحد هؤلاء في البداية.عمليات ترحيل البيانات صعبة للغاية.على المدى الطويل، سيكلفك البدء من القمة والبقاء هناك أقل.

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

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

أيها يجب أن تعتمد بشكل أكبر على التثبيتات الحالية للعميل ومهارات DBA المتاحة أكثر من اعتمادها على كمية البيانات التي تحتفظ بها.

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

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

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

الآن، مكان آخر عملت فيه استخدم MySQL ببساطة لأنه تم تطبيع البيانات، بيانات قياسية صفًا بعد صف.

كان لدى SQL Server، لفترة طويلة، حد أقصى لقاعدة البيانات يبلغ 4 جيجابايت (انظر SQL Server 2000)، ولكن على الرغم من هذا القيد، فإنه يظل نظامًا أساسيًا مستقرًا للغاية للتطبيقات الصغيرة والمتوسطة التي يتم مسح البيانات القديمة لها.

الآن، من خلال العمل مع Oracle وSQL Server 05/08، كل ما يمكنني قوله هو أنه إذا كنت تريد الحصول على أفضل النتائج من حيث الاستقرار وقابلية التوسع والمرونة، فإن هذين هما أفضل رهان لك.بالنسبة لتطبيقات المؤسسات، أوصي بها بشدة (لمجرد أن هذا هو ما نستخدمه حيث أعمل الآن).

أشياء أخرى يجب مراعاتها:

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

يعد استخدام تطبيقك لقاعدة البيانات هو الأكثر أهمية.ما هي الاستعلامات الأكثر استخدامًا بشكل أساسي (SELECT أو INSERT أو UPDATE)؟

لنفترض أنك إذا كنت تستخدم SQLite، فهذا يعد بمثابة تطبيقات أصغر ولكن بالنسبة لتطبيق "الويب"، فقد يكون من الممكن استخدام تطبيق أكبر مثل MySQL أو SQL Server.

إن الطريقة التي تكتب بها البرامج النصية ومنصات تطبيقات الويب الخاصة بك مهمة أيضًا.إذا كنت تقوم بالتطوير على منصة Microsoft، فإن SQL Server هو البديل الأفضل.

عادة، أتبع ما هو مقبول بشكل عام في أي إطار عمل أستخدمه.لذلك، إذا كنت أستخدم .NET => SQL Server، أو Python (عبر Django أو Pylons) => MySQL أو SQLite.

على الرغم من ذلك، لا أستخدم الملفات المسطحة أبدًا تقريبًا.

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

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

هذا التقدم يبدو مؤلما.إذا كنت ستقوم بتضمين منتجات MS (خصوصًا SQL Server المدفوع) هناك في أي مكان، فيمكنك أيضًا استخدام المجموعة بأكملها، نظرًا لأنه يتعين عليك فقط الدفع مقابل آخر ما يلي:

SQL Server Compact -> SQL Server Express -> SQL Server Enterprise (clustered).  

إذا كنت تستهدف تطبيقك SQL Server Compact في البداية، فسيتم ضمان ترقية كل تعليمات SQL البرمجية الخاصة بك إلى الإصدار التالي دون تعديل.إذا أصبحت أكبر من SQL Server Enterprise، فتهانينا.هذا ما يسمونه أ جيد مشكلة لديك.

أيضًا:ارجع وتحقق من ملفات SO.أعتقد أنهم تحدثوا عن هذا لفترة وجيزة.

هذا السؤال يعتمد على حالتك حقا.

إذا كان لديك التحكم في الخادم الذي تقوم بالنشر إليه ويمكنك تثبيت أي خدمات تحتاج إليها، فإن الوقت اللازم لتثبيت خادم MySql أو MSSQL Express والتعليمات البرمجية مقابل إطار عمل قاعدة البيانات الحالي VERSUS مقابل بنية الملفات الثابتة لا يستحق كل هذا الجهد. من النظر.

ماذا عن فايربيرد؟أين يمكن أن يتناسب ذلك مع تلك القائمة؟

ودعنا لا ننسى المتطلبات التي يجب أن تتوفر أيضًا في "عميل" الحل الخاص بك.إذا كنت تكتب تطبيقًا تجاريًا لشركة صغيرة، فقد لا تكون Oracle خيارًا جيدًا...ولكن إذا كنت تكتب حلاً مخصصًا لمؤسسة كبيرة يجب أن تشارك البيانات بين جامعات متعددة، ولديها قسم جيد لتكنولوجيا المعلومات، فإن قرار Oracle مقابل Sql Server سيرجع إلى ما قام العميل على الأرجح بنشره بالفعل.

إن ترحيل البيانات في الوقت الحاضر ليس أمرًا سيئًا نظرًا لأن لدينا تلك الأدوات الرائعة من Embarcadero، لذلك أود بدلاً من ذلك أن أترك لاحتياجات العميل هي التي تقود القرار.

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

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

أعتقد أن قائمتك ذاتية ولكني سألعب لعبتك.

ملفات مسطحة

بي دي بي

سكليتي

ماي إس كيو إل

PostgreSQL

خادم قاعدة البيانات

وحي

تيراداتا

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