sql server فتح مشغلات قاعدة البيانات




قاعدة بيانات sql جاهزة (10)

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

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

ما هو كونسيسوس عامة هناك حول المشغلات؟ الحب م؟ أكره إم؟ هل تعتقد أنها تخدم غرضا في بعض السيناريوهات؟ هل تعتقد أن وجود حاجة لتجاوز المشغل يعني أنك "تفعل الخطأ"؟


Answer #1

أعمل مع الويب و وينفورمز تطبيقات في C # وأنا أكره المشغلات مع العاطفة. أنا لم تأتي عبر حالة حيث يمكن أن يبرر استخدام الزناد على تحريك هذا المنطق في طبقة الأعمال من تطبيق وتكرار منطق الزناد هناك.

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

بعض الأسباب التي تجعلني لا أحب المشغلات:

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

أنا متأكد من أنني يمكن أن نفكر في المزيد من الأسباب من أعلى رأسي ولكن تلك وحدها تكفي بالنسبة لي عدم استخدام مشغلات.


Answer #2

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

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


Answer #3

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


Answer #4

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


Answer #5

أجد نفسي تجاوز مشغلات عند استيراد البيانات بالجملة. وأعتقد أنه مبرر في مثل هذه الظروف.

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

بشكل عام، كنت سأصوت ل "أنها تخدم غرضا في بعض السيناريوهات". أنا دائما عصبية حول الآثار المترتبة على الأداء.


Answer #6

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

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

UPDATE tblUsers
SET Age = 11
WHERE State = 'NY'

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


Answer #7

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

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

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

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

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

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

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

نعم، وأعتقد أن الحاجة إلى تجاوز الزناد يعني أنك "تفعل ذلك خطأ". في هذه الحالة الزناد ليس لك.


Answer #8

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

ولكن أنا لست مروحة كبيرة من وضع الكثير من منطق الأعمال في نفوسهم. وهذا يمكن أن يجعل الدعم مشكلة بسبب:

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

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

القاعدة العامة التي أود استخدامها مع المشغلات هي الحفاظ عليها خفيفة وسريعة وبسيطة، وغير الغازية ممكن.


Answer #9

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

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

هل يمكن تشغيل المشغلات بشكل صحيح؟ إطلاقا.

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


Answer #10

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

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

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





triggers