سؤال

صممت

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

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

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

المحلول

وقواعد البيانات الموزعة ليست تماما ساذجة كما يعني أوريون. كان هناك قدرا كبيرا من العمل المنجز على تحسين الاستعلامات العلائقية بالكامل خلال قواعد البيانات الموزعة. قد ترغب في النظر في ما شركات مثل مقاومه، Netezza، غرينبلوم، Vertica، AsterData، وما تقوم به. (أوراكل حصل في اللعبة، وأخيرا، كذلك، مع إعلانهم مؤخرا، اشترت مايكروسوفت solition في اسم الشركة التي كانت تسمى DataAllegro)

.

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

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

ولكن إذا كنت في مجموعة تيرا 100، وبكل الوسائل ...

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

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

نصائح أخرى

وأنا لست على دراية جدا معهم (لقد قرأت فقط نفس بلوق / الأخبار / أمثلة بها الجميع) ولكن احملوا على ذلك هو أنها اختارت أن تضحي الكثير من الميزات DB العلائقية طبيعية في اسم من التدرجية - سأحاول شرح

.

وتخيل لديك 200 الصفوف في جدول البيانات.

في مراكز البيانات جوجل، ويتم تخزين 50 من هذه الصفوف على خادم A، 50 على B، و 100 على خادم C. بالإضافة إلى ذلك الخادم D يحتوي على نسخ مكررة من البيانات من الخادم A و B، والخادم E يحتوي على نسخ مكررة من البيانات على الخادم C.

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

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

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

إذا كنت في حاجة للقيام العلائقية الانضمام على بعض البيانات، حيث انتشاره ويقول عبر 5 الخوادم، ستحتاج كل تلك الملقمات لسحب البيانات من بعضنا البعض <م> لكل صف . محاولة القيام بذلك عندما يكون لديك 2000000 صفوف موزعة على 10 الملقمات.

وهذا يؤدي إلى المفاضلة # 1 - لا ينضم

.

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

وهذا يؤدي إلى المفاضلة # 2 - البيانات الخاصة بك قد لا تكون دائما مرئية على الفور بعد كتابته

.

ولست متأكدا ما المفاضلات الأخرى هناك، ولكن من على قمة رأسي تلك هي 2 الرئيسي.

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

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

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

وNovaday تحتاج إلى إيجاد بيئة أكثر interoperational لقواعد البيانات. أكثر في كثير من الأحيان لا تحتاج سوى قواعد بيانات علائقية، مثل الخلية أو MS SQL ولكن أيضا مزارع بيانات كبيرة كما Hadoop أو قواعد بيانات غير العلائقية مثل MongoDB. في بعض الحالات سوف تستخدم كل تلك بالواجبات في حل واحد لذلك أدائها يجب أن تكون متساوية قدر الإمكان في المستوى الكلي. وهذا يعني، أنك لن تكون قادرا على استخدام دعونا نقول أزور SQL كما العلائقية DB وVM واحدة مع 2 النوى و3GB من ذاكرة الوصول العشوائي لMongoDB. يجب أن حجم المتابعة الحل الخاص بك واستخدام DB كخدمة عندما يكون من الممكن (إذا لم يكن ذلك ممكنا، ثم بناء مجموعة الخاصة بك في سحابة).

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