سؤال

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

على سبيل المثال ، وتقول الوثائق أن الاستخدام الرئيسي PL/Perl هو أنه جيد جدا في معالجة النصوص.ولكن أليس هذا أكثر شيء يجب أن تكون مبرمجة في التطبيق ؟

ثانيا: هل هناك أي سبب وجيه لاستخدام غير موثوق بها اللغة ؟ يبدو أن يجعلها بحيث يمكن لأي مستخدم تنفيذ أي عملية لن تكون فكرة سيئة على نظام الإنتاج.

PS.نقاط المكافأة إذا كان شخص ما يمكن أن تجعل PL/LOLCODE يبدو مفيدا.

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

المحلول

"أليس هذا [نص التلاعب] أكثر شيء يجب أن تكون مبرمجة في التطبيق؟"

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

إذا كنت تحتاج فقط القليل من المنطق الأكثر المحمولة اللغة ربما ينبغي أن تستخدم (pl/pgSQL).إذا كنت بحاجة إلى القيام ببعض خطيرة البرمجة على الرغم من أنك قد تكون أفضل حالا باستخدام أكثر تعبيرا عن اللغة (ربما pl/روبي).هذا سوف يكون دائما دعوة الحكم.

"هل هناك أي سبب وجيه لاستخدام غير موثوق بها اللغة؟"

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

نصائح أخرى

@مايك:هذا النوع من التفكير يجعلني عصبية.لقد سمعت مرات عديدة "هذا يجب أن يكون بلا حدود المحمولة" ، ولكن عندما يتم طرح السؤال:هل فعلا تتوقع أن يكون هناك أي ترقية?الجواب هو:لا.

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

  • تقييم واقعي إذا كان هناك حاجة إلى دعم متعددة RDBMS هو.على سبيل المثال إذا كنت تكتب ويب مفتوح المصدر التطبيق, وهناك احتمالات بأن كنت بحاجة إلى دعم MySQL و PostgreSQL على الأقل (إذا كان لا MSSQL و Oracle)
  • بعد التقييم ، المنبر لك تبت

و BTW:كنت خلط العلائقية مع عدم علاقة قواعد البيانات (CouchDB هو لا أ RDBMS مقارنة مع أوراكل على سبيل المثال), مزيد من تجسد النقطة التي يرى أنها تحتاج إلى قابلية مرات عديدة كثيرا من المبالغة.

في هذه الأيام, أي "فريدة" أو "بارد" ميزة في DBMS يجعلني عصبية بشكل لا يصدق.كنت في طفح جلدي و يجب أن تتوقف عن العمل حتى الحكة يذهب بعيدا.

أنا فقط أكره أن يكون مؤمنا في منصة دون داع.افترض أنك في بناء جزء كبير من النظام الخاص بك في PL/Perl داخل قاعدة البيانات.أو في C# داخل SQL Server أو PL/SQL في اوراكل, وهناك الكثير من الأمثلة*.

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

(*باعتراف الجميع ، مقابل المنتجات إلى حد ما تسعى إلى تأمين كنت في طريق إقناع لك استخدام ميزات فريدة من نوعها ، والتي ليس اتهاما تستطيع أن نوجهها في مقدمي الخدمات المجانية ، ولكن التأثير هو نفسه).

حتى خرف على الجزء الأول من السؤال.القلبية ، على الرغم من.

هل هناك أي سبب وجيه لاستخدام غير موثوق بها اللغة ؟ يبدو مما يجعلها بحيث يمكن لأي مستخدم تنفيذ أي عملية لن تكون فكرة سيئة

يا إلهي, إنه كذلك!نوعا من "بيرل حقن الهجوم"?تقريبا يستحق القيام به فقط لرؤية ما يحدث ، اعتقدت.

لأسباب فلسفية المبينة أعلاه أعتقد أنني سوف تمر على PL/LOLCODE التحدي.على الرغم من أنني كنت إلى حد ما عن دهشتها لاكتشاف كان وصلة إلى شيء موجود.

من وجهة نظري, اعتقد ان الجواب هو 'ذلك يعتمد'.

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

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

ثم كتب binning الخوارزمية في PL/pgSQL وانها عملت بشكل أسرع بكثير.

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

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

أعتقد أن معظم لغات إضافية يتم تقديمها بحيث إذا وضع في تلك اللغة على أساس منتظم ، يمكنك أن تشعر بالراحة كتابة db وظائف, مشغلات, الخ.فائدة من هذه الميزات هو توفير الرقابة على البيانات أقرب إلى البيانات ممكن.

مثال مفيدة الإجراء المخزن كتبت مؤخرا في خارجي اللغة التي لم يكن ممكنا في pl/sql هو نسخة من 'df' الذي يسمح SQL الجدول مولدات لاختيار tablespace مع معظم المساحة الحرة المتوفرة في وقت التشغيل.

اعتدت plperlu ، وكان بسيطة نسبيا, على الرغم من أنني كان يجب أن أكون حذرا مع كتابة البيانات.

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