سؤال

أنا أعمل على تطبيق ويب باستخدام Python (Django) وأرغب في معرفة ما إذا كان MySQL أو PostgreSQL أكثر ملاءمة عند النشر للإنتاج.

في واحد تدوين صوتي قال جويل إنه واجه بعض المشكلات مع MySQL وأن البيانات لم تكن متسقة.

أود أن أعرف ما إذا كان شخص ما لديه مثل هذه المشاكل.وأيضًا عندما يتعلق الأمر بالأداء الذي يمكن تعديله بسهولة؟

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

المحلول

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


أحسن؟

يتم توفير MySQL بشكل أكثر شيوعًا بواسطة مضيفي الويب.

يعد PostgreSQL منتجًا أكثر نضجًا.

هناك تتناول هذه المناقشة سؤالك "الأفضل".

على ما يبدو، وفقا ل صفحة الويب هذه, يكون MySQL سريعًا عندما تكون مستويات الوصول المتزامنة منخفضة، وعندما يكون عدد عمليات القراءة أكثر من عدد عمليات الكتابة.من ناحية أخرى، فإنه يعرض قابلية التوسع منخفضة مع زيادة الأحمال ونسب الكتابة/القراءة.يعد PostgreSQL بطيئًا نسبيًا عند مستويات التزامن المنخفضة، ولكنه يتحسن بشكل جيد مع زيادة مستويات التحميل، مع توفير عزل كافٍ بين عمليات الوصول المتزامنة لتجنب التباطؤ عند نسب الكتابة/القراءة العالية.ويستمر في الارتباط بعدد من مقارنات الأداء، لأن هذه الأشياء...حساسة للظروف.

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

عندما يهم.

وهو ما قد لا يكون كذلك، لذا ما عليك سوى اختيار قاعدة البيانات التي تفضلها واتبعها؛يمكن شراء أداء أفضل باستخدام المزيد من ذاكرة الوصول العشوائي (RAM) ووحدة المعالجة المركزية (CPU)، وتصميم أكثر ملاءمة لقاعدة البيانات، وحيل الإجراءات المخزنة الذكية وما إلى ذلك - وكل ذلك أرخص وأسهل بالنسبة إلى موقع الويب العشوائي X بدلاً من المعاناة بشأن اختيار MySQL أو PostgreSQL ، والضبط المتخصص من مسؤولي قواعد البيانات الباهظين الثمن.


قال جويل أيضًا في هذا البودكاست أن هذا التعليق سيعود عليه بالصدمة لأن الناس سيقولون أن MySQL مجرد قطعة من الهراء - لم يتمكن جويل من الحصول على count من الصفوف إلى الوراء.جمع الحكاية ليس بيانات. هو قال:

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

وقال أيضا:

إنها مجرد حكاية.وهذا أحد الأشياء التي تحبطني، في الواقع، فيما يتعلق بالتدوين أو الإنترنت بشكل عام.[...] هناك ميل غريب لتحويل الحكايات إلى حقائق، وأنا كمدون بدأت أشعر بالذنب قليلاً بشأن هذا الأمر

نصائح أخرى

يقول البعض أن MySQL بسيطة وسريعة.

سريع - حسنًا، إذا كنت تستخدم محرك التخزين الافتراضي MyIsam، فهو سريع.لا تحتوي على أي ميزة خطيرة لقاعدة البيانات تقريبًا، ولكنها سريعة.إذا كنت ساخرًا، فسأقول إن grep على ملف مسطح سريع أيضًا.من المضحك أن الأمر ليس بعيدًا عن كيفية قيام MyIsam بتخزين البيانات.لذلك لا تتوقع أيًا من ميزات قاعدة البيانات العلائقية هناك.ولا حتى قيود التكامل المرجعية.

بسيطة - لنفترض الآن أنك تريد مجموعة فرعية عادلة من ميزات قاعدة البيانات الحقيقية.ربما بعض الأشياء مثل قيود السلامة، والمشغلات، وعزل المعاملات، والمؤشرات الوظيفية؟لذلك من الواضح أنه يتعين عليك ترك محرك MyIsam بعيدًا والاختيار من بين أحد محركات التخزين الثلاثة الرئيسية الأخرى.تم تطويرها من قبل بائعين مختلفين، ولكل منهم تكوين/سلوك معين.

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

من هذه الحقائق، سأدعك تفكر في أولئك الذين يقولون إن MySql سريع وبسيط.

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

لم أستخدم Django، لكني استخدمت MySQL وPostgreSQL.إذا كنت ستستخدم قاعدة بياناتك فقط كواجهة خلفية لـ Django، فلا يهم كثيرًا، لأنها ستزيل معظم الاختلافات.يعد PostgreSQL أكثر قابلية للتطوير (لا يصل إلى جدار من الطوب بنفس سرعة MySQL مع زيادة حجم البيانات/عدد العملاء).

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

مجرد الرنين في عدة أشهر بعد ذلك.

إن القدرات الجغرافية لقاعدتي البيانات مختلفة جدًا جدًا.يحتوي PostgreSQL على امتداد PostGIS الاستثنائي.الوظيفة الجغرافية لـ MySQL هي صفر تقريبًا بالمقارنة.

إذا كانت خدمة الويب الخاصة بك تحتوي على مكون موقع، فاختر PostgreSQL.

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

أنا أستخدم PostgreSQL.

أنا استخدم كلاهما على نطاق واسع.يتلخص اختياري لمشروع معين في:

  • الترخيص - هل ستقوم بتوزيع تطبيقك (IANAL)
  • البنية التحتية الحالية وقاعدة المعرفة
  • أي صلصة خاصة يجب أن يكون لديك.

بواسطة صلصة خاصة أنا أشياء مثل:

  • النسخ المتماثل السهل/الرخيص = MySQL
  • مشاكل ضخمة في مجموعة البيانات مع نتائج صغيرة = PostgreSQL.استخدم امتدادات اللغة، واحصل على عمليات بيانات فعالة للغاية.(بل/بيثون، بل/تي سي إل، بل/بيرل، إلخ)
  • الواجهة مع مكتبات R الإحصائية = PostgreSQL بل/ر متوفر في ديبيان/أوبونتو

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

من وجهة نظري، يعد PostgreSQL تطبيقًا أكثر "صحيحًا" لقاعدة البيانات بينما mySQl أقل صحة (أقل توافقًا) ولكنه أسرع.

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

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

شكرًا لك.لقد استخدمت Django مع MySQL ولا بأس بذلك.اختر قاعدة البيانات الخاصة بك على الميزات التي تحتاج إليها.من الصعب مقارنة MySQL وPostgres.من الأفضل مقارنة Postgress بخادم SQL.

@وولفمان دراجون

يحتوي PostgreSQL على دعم (صغير) للكائنات، لكنه بطبيعته قاعدة بيانات علائقية.منها حول الصفحة:

PostgreSQL هو مصدر قوي ومفتوح العلائقية نظام قاعدة البيانات.

ماي إس كيو إل هو نظام إدارة قواعد البيانات المرتبطة بينما PostgreSQL هو هدف-نظام إدارة قواعد البيانات المرتبطة.يعد PostgreSQL مناسبًا جيدًا لمطوري C++ أو Java، لأنه يمنحنا المزيد من التحكم في كيفية كتابة الاستعلامات.يوفر لنا ORDBMS أيضًا الكائنات والأنواع المحددة من قبل المستخدم.استعلامات SQL نفسها أقرب بكثير إلى معايير ISO من MySQL.
هل تحتاج إلى ORDBMS أو RDBMS؟هذا سوف يجيب على سؤالك بشكل أفضل.

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