سؤال

قدم المؤسس المشارك لـ Reddit عرضًا تقديميًا حول القضايا التي واجهوها أثناء توسيع نطاق ملايين المستخدمين. ملخص متاح هنا.

ما فاجأني هو النقطة 3:

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

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

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

المحلول

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

نصائح أخرى

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

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

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

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