تحذيرات لاستخدام وظائف جدول الأنابيب في Oracle لتنفيذ وظيفة العرض المخبرية؟

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

سؤال

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

الجزء الأكبر من التعليمات البرمجية المتكررة (الجداول المنوطة بشكل مناسب) سيكون في الرأي، بحيث لن يكون لدينا العديد من الإجراءات والوظائف المختلفة مع نسخها الخاصة من الأعمال المشتركة والمرشحات.

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

لقد قرأت الكثير عن هذا في مجموعة متنوعة من الأماكن، بما في ذلك stackoverflow:

href="https://stackoverflow.com/Questions/2059299/Table-Valued-Functions-in-oracle-11g-parameterized-views"> وظائف الجدول القيمة في Oracle 11g؟ (المشاهدات المعلمة)

قاعدة البيانات: وظائف خطوط الأنابيب

href="https://stackoverflow.com/questions/1597467/is-using-a-select-side-a-pipelined-pl-sql-table-function- المستلأ"> يستخدم من الداخل وظيفة جدول PL / SQL MIBLINED المسموح بها؟

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

لدي الكثير من النجاح باستخدام هذه التقنية في SQL Server مع وظائف مضمنة من جدول الجدول، وساعدت حقا في جعل النظام أكثر متماسكا وأسهل لتتبع التبعيات وتأثيرات التغييرات المقترحة، لأن هناك ) أقل رمز و B) المزيد من إعادة الاستخدام وأقل التكرار.

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

يرجى مشاركة تجاربك وظائف جدول الأنابيب وما أحتاجه للبحث عنه؟ أيضا إذا كان هناك بديل أفضل، اسمحوا لي أن أعرف في إجابتك أيضا؟

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

المحلول

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

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

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

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

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