سؤال

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

هل فعلا استفاد من الكتابة المحمولة SQL و رفض لهجة الخاص بك الملكية أدوات/syntax ؟

لم أر حالة من أحدهم أخذ آلام لبناء مجمع التطبيق على الخلية ثم يقول هل تعلم ماذا سيكون فقط ممتاز ؟ دعونا التبديل إلى (كيو|أوراكل|SQL Server)!

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

تحرير: ربما المثال الذي ذكرته هو أيضا المتعرج ، ولكن أعتقد أن تبقى نقطة:إذا كنت تخطط للانتقال من واحد DBMS إلى آخر, أنت من المحتمل إعادة تصميم التطبيق على أي حال ، أو لن تفعل ذلك على الإطلاق.

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

المحلول

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

عند العمل داخل مؤسسة قد تكون قادرة على الاستفادة من المعرفة المنبر.

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

نصائح أخرى

المشكلة مع امتداد هو أن تحتاج إلى تحديث لهم عندما كنت تقوم بتحديث نظام قاعدة البيانات نفسها.المطورين غالبا ما يعتقدون التعليمات البرمجية الخاصة بهم سوف تستمر إلى الأبد ولكن معظم التعليمات البرمجية سوف تحتاج إلى كتابة في غضون 5 إلى 10 سنوات.قواعد البيانات تميل إلى البقاء على قيد الحياة لفترة أطول من معظم التطبيقات منذ المسؤولين أذكياء بما فيه الكفاية أن لا إصلاح الأشياء التي ليست مكسورة حتى أنها في كثير من الأحيان لا ترقية أنظمتها مع كل إصدار جديد.
ما هو الألم الحقيقي عند ترقية قاعدة البيانات الخاصة بك إلى الإصدار الأحدث حتى الآن على امتداد ليست متوافقة مع هذا واحد وبالتالي لن تعمل.يجعل الترقية أكثر تعقيدا وتتطلب المزيد من التعليمات البرمجية إلى إعادة كتابة.
عند اختيار نظام قاعدة البيانات, كنت كثيرا ما كنت عالقة مع هذا القرار منذ سنوات.
عند اختيار قاعدة البيانات و بعض ملحقات كنت عالقا مع هذا القرار بكثير أطول!

الحالة الوحيدة حيث أستطيع أن أرى أنه من الضروري عندما كنت تقوم بإنشاء برنامج العميل شراء واستخدام على الأنظمة الخاصة بهم.الغالبية العظمى من البرمجة لا تقع في هذه الفئة.رفض استخدام بائع رمز معين هو التأكد من أن لديك porrly أداء قاعدة بيانات البائع رمز معين عادة ما تكون مكتوبة على تحسين أداء بعض المهام على ANSII SQL القياسية و مكتوب أن تأخذ advatage من بنية معينة من قاعدة البيانات.لقد عملت مع datbases لأكثر من 30 عاما و ابدأ بعد أن شهدت الشركة تغيير الخلفية قاعدة البيانات دون التطبيق الكامل كتابة أيضا.تجنب بائع رمز معين في هذه الحالة يعني أن تضر الأداء الخاص بك من دون سبب على الإطلاق أكثر من مرة.

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

في الغالبية العظمى من التطبيقات أراهن هناك قليل من دون فائدة و حتى تأثير سلبي من محاولة الكتابة المحمولة sql;ولكن في بعض الحالات هناك حالة استخدام.دعونا نفترض أن كنت بناء تتبع الوقت تطبيق ويب.و نود أن نقدم الذاتي استضافت الحل.

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

  • إذا كنت الشركات, ثم يمكنك استخدام منصة تعطى لك
  • إذا كنت بائع, عليك أن تخطط على منصات متعددة

طول العمر للشركات:

  • ربما عليك إعادة كتابة رمز العميل قبل الهجرة DBMS
  • DBMS ربما تعمر رمز العميل الخاص بك (Java أو c# ضد '80 المركزية)

تذكر:

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

لذا افترض أن لديك تطبيق على SQL Server 6.5.فإنه لا يزال يعمل مع بضعة تعديلات على SQL Server 2008.أراهن أنك لا تستخدم عاقل رمز العميل...

هناك دائما بعض الفوائد وبعض التكاليف باستخدام "القاسم المشترك الأدنى" لهجة من لغة من أجل ضمان قابلية.أعتقد مخاطر قفل معين DBMS منخفضة مقارنة مماثلة مخاطر للبرمجة لانجوجيس ، وجوه وظيفة المكتبات تقرير الكتاب ، وما شابه ذلك.

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

إذا كنت لا تفهم الفرق بين المنطقي النمذجة النمذجة الفيزيائية ، تعلم ذلك.

جعل الكثير من مؤشر هيكل المحمولة كما يمكنك.في حين أن كل قاعدة البيانات الخاصة به مؤشر ملامح العلاقة بين المؤشرات و الجداول و الأعمدة فقط عن DBMS المستقلة.

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

عندما يحين الوقت للتحرك ، نتوقع بعض العقبات, ولكن نتوقع التغلب عليها بطريقة منهجية.

(كلمة "أنت" في أعلاه إلى من يهمه الأمر, و لا العملية على وجه الخصوص.)

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