سؤال

أقوم ببعض الأبحاث في قواعد البيانات وأبحث في بعض القيود المفروضة على قواعد البيانات العلائقية.

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

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

فيما يتعلق بهذا، أنا أتساءل عن الأساليب غير الطبيعية التي تستخدمها قواعد بيانات الخدمة السحابية مثل BigTable وSimpleDB.يرى هذا السؤال.

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

المحلول

إلغاء التطبيع لتحسين الأداء؟يبدو الأمر مقنعًا، لكنه لا يحمل الماء.

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

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

وجد أن:

  • ومنهم من يعقد لحالات خاصة
  • كلهم يفشلون في سداد الاستخدام العام
  • كل منهم أسوأ بكثير بالنسبة للحالات الخاصة الأخرى

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

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

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

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

من المهم أن نفهم أن عمليات فحص الجدول (فحص كل صف في الجدول أثناء إنشاء الصلة) نادرة في الممارسة العملية.سيختار مُحسِّن الاستعلام فحص الجدول فقط عند تعليق واحد أو أكثر من العناصر التالية.

  • يوجد أقل من 200 صف في العلاقة (في هذه الحالة سيكون الفحص أرخص)
  • لا توجد فهارس مناسبة في أعمدة الربط (إذا كان من المفيد الانضمام إلى هذه الأعمدة، فلماذا لا تتم فهرستها؟اصلحه)
  • مطلوب نوع الإكراه قبل أن تتمكن من مقارنة الأعمدة (WTF؟!إصلاحه أو العودة إلى المنزل) راجع الملاحظات النهائية لمشكلة ADO.NET
  • إحدى حجج المقارنة هي تعبير (بدون فهرس)

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

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

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

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

وأود أيضا الرد على

الانضمامات هي مجرد منتجات ديكارتية مع بعض ملمع الشفاه

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

الطريقة الوحيدة التي ستجعل المُحسِّن ينتج منتجًا ديكارتيًا هي الفشل في توفير مسند: SELECT * FROM A,B


ملحوظات


يقدم David Aldridge بعض المعلومات الإضافية المهمة.

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

نصيحة عملية:إذا كان من الممكن استخدامه كمفتاح خارجي، فقم بفهرسته، بحيث تكون استراتيجية الفهرس متاح إلى المحسن.

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


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

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

ينضم نكون المنتجات الديكارتية...

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

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


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


في بعض الأحيان يكون عدم التطبيع فكرة جيدة

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

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

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

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

لا ترتكب خطأ إلغاء تسوية قاعدة بيانات OLTP (قاعدة البيانات التي يتم إدخال البيانات فيها).قد يكون الأمر أسرع بالنسبة لعمليات تشغيل الفواتير، ولكن إذا قمت بذلك، فسوف تحصل على تحديثات شاذة.هل حاولت يومًا أن تجعل مجلة Reader's Digest تتوقف عن إرسال الأشياء إليك؟

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


مشكلة ADO.NET مع عدم تطابق النوع

لنفترض أن لديك جدول SQL Server يحتوي على عمود مفهرس من النوع varchar، وأنك تستخدم AddWithValue لتمرير معلمة تقيد استعلامًا في هذا العمود.سلاسل C# هي Unicode، وبالتالي فإن نوع المعلمة المستنتجة سيكون NVARCHAR، والذي لا يتطابق مع VARCHAR.

يعد VARCHAR إلى NVARCHAR تحويلاً موسعًا، لذا فهو يحدث ضمنيًا - ولكن قل وداعًا للفهرسة، ونتمنى لك حظًا سعيدًا في معرفة السبب.


"عد عدد مرات الوصول إلى القرص" (ريك جيمس)

إذا تم تخزين كل شيء مؤقتًا في ذاكرة الوصول العشوائي (RAM)، JOINs رخيصة إلى حد ما.أي أن التطبيع ليس فيه الكثير عقوبة الأداء.

إذا تسبب المخطط "المطبيع". JOINs لضرب القرص كثيرًا، ولكن المخطط المكافئ "غير الطبيعي" لن يضطر إلى ضرب القرص، ثم يفوز إلغاء التسوية بمنافسة الأداء.

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

نصائح أخرى

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

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

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

تم تصميم قواعد البيانات للانضمام، وهي مرنة جدًا في كيفية القيام بذلك، كما أنها ذات أداء عالٍ بشكل عام ما لم تخطئ في آلية الانضمام.

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

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

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

عنق الزجاجة هو إلى حد كبير دائماً الإدخال/الإخراج للقرص، وبشكل أكثر تحديدًا - الإدخال/الإخراج العشوائي للقرص (بالمقارنة، تكون القراءات المتسلسلة سريعة إلى حد ما ويمكن تخزينها مؤقتًا باستخدام استراتيجيات القراءة المسبقة).

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

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

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

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

  • يعد ربط الحلقة رخيصًا جدًا لمجموعة بيانات صغيرة (واحدة على الأقل).
  • تتطلب صلة الدمج نوعًا من مجموعتي البيانات أولاً.ومع ذلك، إذا انضممت إلى عمود مفهرس، فسيتم فرز الفهرس بالفعل ولا يلزم القيام بمزيد من العمل.بخلاف ذلك، هناك بعض الحمل الزائد على وحدة المعالجة المركزية والذاكرة أثناء عملية الفرز.
  • يتطلب انضمام التجزئة كلاً من الذاكرة (لتخزين جدول التجزئة) ووحدة المعالجة المركزية (لإنشاء التجزئة).مرة أخرى، يعد هذا سريعًا إلى حد ما فيما يتعلق بإدخال/إخراج القرص. لكن, ، إذا لم يكن هناك ما يكفي من ذاكرة الوصول العشوائي (RAM) لتخزين جدول التجزئة، فسيستخدم Sql Server tempdb لتخزين أجزاء من جدول التجزئة والصفوف التي تم العثور عليها، ثم يقوم بمعالجة أجزاء فقط من جدول التجزئة في المرة الواحدة.كما هو الحال مع كل شيء القرص، وهذا بطيء إلى حد ما.

في الحالة المثالية، لا تتسبب هذه في أي إدخال/إخراج للقرص - وبالتالي فهي لا تذكر من منظور الأداء.

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

نظرًا لأن تكاليف الإدخال/الإخراج تهيمن على وقت الاستعلام عادةً، ولا يتغير حجم بياناتك (مطروحًا منه بعض الحمل الزائد للصفوف الصغيرة جدًا) مع إلغاء التسوية، فليس هناك قدر هائل من الفوائد التي يمكن الحصول عليها من خلال دمج الجداول معًا.نوع إلغاء التسوية الذي يميل إلى زيادة الأداء، IME، يقوم بتخزين القيم المحسوبة مؤقتًا بدلاً من قراءة 10000 صف مطلوب لحسابها.

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

لبعض قواعد البيانات لا يهم، على سبيل المثال MS SQL لا تعرف الانضمام الترتيب الصحيح في معظم الوقت. بالنسبة لبعض (مثل IBM ينفورميكس) الترتيب يجعل جميع الفرق.

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

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

والنقاش للتطبيع وdenormalization لن تنتهي لأن المشاكل واسعة جدا. هناك العديد من المشاكل التي تتطلب الحل الطبيعي كلا النهجين.

وكقاعدة عامة، لقد المخزنة دائما بنية تطبيع والذي لم تتم تسويته مخابئ التي يمكن إعادة بنائها. في نهاية المطاف، هذه المخابئ انقاذ مؤخرتي لحل المشاكل التطبيع في المستقبل.

ووضع ما قاله الآخرون،

وينضم هي المنتجات فقط ديكارت مع بعض LIPGLOSS. {1،2،3،4} X {1،2،3} أن تعطينا 12 مجموعات (nXn = ن ^ 2). تعمل هذه المجموعة المحسوبة كمرجع التي تطبق الشروط. وينطبق الشيء DBMS الظروف (مثل على حد سواء حيث اليسار واليمين هي 2 أو 3) لتعطينا حالة مطابقة (ق). في الواقع هو أكثر الأمثل ولكن المشكلة هو نفسه. ومن شأن هذه التغييرات أن حجم مجموعات زيادة حجم النتيجة بشكل كبير. مقدار الذاكرة وحدة المعالجة المركزية دورات تستهلك كلها تنفذ من حيث الأسي.

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

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