سؤال

ونحن نعمل على مشروع PHP، الذي كان قيد التطوير لأكثر من 2 سنوات، والآن الفريق جاهز ويشعر استعداد لتبديل تطوير الدخول إلى مكتب إدارة السجلات. لأنه يسرع حقا حتى في التنمية وتسمح لك أن تعمل من كائنات وليس التفكير في كود SQL وجداول قاعدة البيانات أكثر من مرة.

ولقد قررنا اختيار عقيدة ORM، لأنه يحتوي YAML تحميل تركيبات البيانات - نحن في حاجة إليها كثيرا لدينا اختبارات وحدة

.

والخوف الرئيسي لدي، هو أن استخدام إطار ORM جديد يمكن أن يبطئ أداء الموقع. ونحن لا يمكن إجراء اتصال مشتركة بين طبقة قاعدة بيانات التجريد الحالية (والذي يستخدم في بناء الجملة pg_connect، وليس PDO متوافقة). آلية اتصال قاعدة البيانات لا يمكن أن تنتقل إلى شركة تنمية نفط عمان متوافق، لأن هناك الكثير من التعليمات البرمجية SQL تتعارض مع تركيب PDO_SQLITE.

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

وماذا تنصحين لنا أن نفعل في هذه الحالة؟

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

المحلول

ما أهمية هو PDO_SQLITE؟

وإذا لم تخطط فعلا على استخدام سائق سكليتي ثم لم يتم تكليف التوافق من قبل شركة تنمية نفط عمان.

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

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

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

نصائح أخرى

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

public function connect() {
  if (!defined('CONNECT')) {
    mysql_connect(...);
  }
}

public function db_query($query) {
  connect();
  $ret = mysql_query($query);
  if (!$ret) {
    die(mysql_error());
    error_log(mysql_error() . ' - ' . $query);
  }
  return $ret;
}

ولتقليل كمية من التكرار وفتح فقط اتصال عندما كنت في حاجة واحدة.

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

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

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

حسنا، نعم ولا - لن يتم مضاعفة اتصالات DB الخاصة بك طالما لديك كل من شركة تنمية نفط عمان غير واتصال PDO

ولست متأكدا ماذا يعني لك مع الإشارة PDO_SQLITE، منذ سكليتي هو قاعدة بيانات مختلفة كليا من كيو يبدو أنك تستخدم الآن.

ويجب أن تكون قادرة على تشغيل الاستعلامات الحالية من خلال شركة تنمية نفط عمان :: الاستعلام تماما كما تفعل اليوم إلا إذا كنت تفعل شيئا خاطئا جدا:)

scroll top