سؤال

أنا على وشك أن أرث مجموعة كبيرة ومعقدة من الإجراءات المخزنة التي تقوم بمعالجة شهرية لمجموعات كبيرة جدًا من البيانات.

نحن بصدد تصحيح الأخطاء بحيث تتطابق مع العملية الأصلية المكتوبة في VB6.السبب الذي دفعهم إلى إعادة كتابتها في t-sql هو أن عملية vb تستغرق أيامًا وهذه العملية الجديدة تستغرق ساعات.

كل هذا جيد، ولكن كيف يمكنني أن أجعل هذه الأجزاء الضخمة الآن من كود t-sql (1.5 كيلو + سطر) قابلة للقراءة / الصيانة عن بعد.

أي تجربة في جعل t-sql لا تسبب الكثير من آلام الرأس هي موضع ترحيب كبير.

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

المحلول

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

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

يمكنك الآن إعادة بناء عملياتك بقدر ما تريد، وإجراء اختباراتك بعد ذلك لتأكيد الوظيفة الصحيحة.

نصائح أخرى

بالنسبة لتنسيق SQL/الجميل، لقد حققت نجاحًا مع http://www.sqlinform.com/ - نسخة مجانية عبر الإنترنت يمكنك تجربتها، ونسخة سطح المكتب متاحة أيضًا.

SQLinForm هو منسق أكواد SQL تلقائي لجميع قواعد البيانات الرئيسية (ORACLE، SQL Server، DB2 / UDB، Sybase، Informix، PostgreSQL، MySQL وغيرها) مع العديد من خيارات التنسيق.

بالتأكيد ابدأ بإعادة تنسيق الكود، وخاصة المسافات البادئة.

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

تعد ApexSQLScript أداة رائعة لكتابة نص برمجي لقاعدة بيانات بأكملها - ويمكنك بعد ذلك التحقق من ذلك في التحكم بالمصادر وإدارة التغييرات.

لقد وجدت أيضًا أن توثيق sprocs يتيح لك سحب المعلومات المتعلقة بها باستخدام البيانات المتعلقة بكود المصدر في sys.sql_modules - ويمكنك استخدام العلامات أو أي شيء آخر للمساعدة في توثيق الأنظمة الفرعية.

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

بقدر ما يتعلق الأمر بالكود الكبير، فقد وجدت مؤخرًا أن ميزة SQL2005 CTE مفيدة جدًا في إدارة التعليمات البرمجية مع الكثير من الاستعلامات المتداخلة (ولا حتى العودية).بدلاً من إدارة مجموعة من التداخل والمسافات البادئة، يمكن الإعلان عن CTEs وبنائها ثم استخدامها في البيان النهائي.يساعد هذا أيضًا في إعادة البناء لأنه يبدو من الأسهل كثيرًا إزالة الاستعلامات والأعمدة المتداخلة الزائدة عن الحاجة.

تعد Procs وUDF المخزنة أمرًا حيويًا لإدارة قاعدة تعليمات برمجية كبيرة والتخلص من الزوايا المظلمة.لم أجد طرق عرض مفيدة جدًا لأنها غير قابلة لتحديد المعلمات (يمكن استخدام UDFs في هذه الحالات إذا كانت مجموعات النتائج صغيرة).

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

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

إنها بالتأكيد ليست مجانية، ولكن للحفاظ على تنسيق T-SQL الخاص بك بطريقة متسقة، فإن برنامج Redgate موجه SQL مفيد جدًا.طالما أن بناء جملة proc الخاص بك صحيح، فإن بضع ضغطات على المفاتيح (Ctrl+K,Y) ستؤدي إلى إعادة تنسيقه بالكامل على الفور.تمنحك الخيارات قدرًا كبيرًا من التحكم في كيفية تنسيق SQL الخاص بك.

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