سؤال

نظرا التالية HBase مخطط السيناريو (من المسؤول التعليمات)...

كيف يمكنك تصميم Hbase الجدول في العديد من العديد من الرابطة بين اثنين من الكيانات ، على سبيل المثال طالب ، الدورة ؟

أود أن تعريف جدولين:

الطالب:طالب معرف بيانات الطالب (الاسم, العنوان, ...) دورات (استخدام بالطبع معرفات عمود تصفيات هنا)

الحال:طبعا معرف مسار البيانات (الاسم ، المنهج, ...) الطلاب (استخدام الطالب معرفات عمود تصفيات هنا)

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

كيف يمكنك تلبية الطلب:"أعطني جميع الطلاب أن مشاركة اثنين على الأقل من المقررات المشتركة"?يمكنك بناء "الاستعلام" في HBase أنه سيعود إلى أن مجموعة, أو هل لديك لاسترداد كافة البيانات ذات الصلة وأزمة نفسك في الكود ؟

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

المحلول

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

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

نصائح أخرى

وهذا النوع من الاستعلام غير متوفرة من خلال API 0.20.0. لست متأكدا ما إذا كانت هناك أي خطط لذلك (اشك في انه قد تظهر في أي وقت قريب). ستجد بعض تفاصيل خارطة الطريق على الموقع HBase أن <م> قد الإجابة على هذا السؤال.

وستحتاج إلى حساب الجواب في التطبيق الخاص بك (على الرغم من أنني أحب أن أثبت خطأ).

استخدم المدون لتحقيق ذلك.

وSingleValueFiler المدون = SingleValueFiler الجديدة (وحججك على أساس API)؛

وهذا إضافة إلى المسح الضوئي (مسح org.apache.hadoop.hbase.client.Scan = جديد المسح الضوئي ()؛                    scan.setFiler (فلتر)؛

ويبدو أن مابريديوس يمكن أن يكون طريقة واحدة لحل هذه. للأسف فإنه لن يعطي نتيجة فورية إذا تم القيام به على الطاير. مجرد التفكير من خلال ذلك يمكن، في المرحلة الخريطة، حساب عدد المرات زوج من الطلاب في نهاية المطاف في نفس الفئة. خلال تقليل المرحلة يمكن تلخيص أزواج والكتابة خارج (ينبعث) أزواج التي كان لها مبلغ 2 أو أكثر. ويمكن استخدام هذا النهج إلى ما قبل إنشاء مؤشر (كما اقترح في وقت سابق) الذي يشير إلى أزواج من الطلاب مع الدورات "س" من القواسم المشتركة. المفتاح لهذا المؤشر يمكن أن يكون شيئا على غرار "X / Student1_Key / Student2_Key"، حيث X هو عدد من الدورات لديهم من القواسم المشتركة و. تفحص نطاق أكثر من مؤشر (على سبيل المثال، X> = 2) سوف تعطيك الجواب. نظرا التكامل HBase لأصلي مع مابريديوس ينبغي أن يكون الحل على طول هذه الخطوط واضحة.

وأيضا، وفقا لنموذج جداول كبيرة، فإنك لن تحتاج حتى إلى إنشاء جدولين. فقط تسبق كل مفتاح سجل مع "نوع" مثل الدورة: أو طالب :. منذ يتم ترتيب الصفوف lexicographically التي يتم مسحها بسهولة عن طريق نوع. تجميع (أو توليد) الأعمدة اللازمة لدعم خصائص كل نوع. منذ HBase يدعم الجداول متفرق بشدة هذا يعمل بشكل جيد. انظر هذا العرض الممتاز على اختيار مفاتيح وتطوير المؤشرات مع جداول كبيرة: HTTP: // www.google.com/events/io/2009/sessions/BuildingScalableComplexApps.html . هذا العرض ساعدني على فهم كيفية تخزين الأشياء في قواعد البيانات مثل HBase لاسترجاع فعالة.

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

وعلى أي حال، أنا أيضا جديدة لهذا المشاكل حتى رؤية مثل هذه، والحلول الممكنة يساعد!

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