كيفية تصميم Hbase مخطط?
سؤال
لنفترض أن لدي هذا RDBM الجدول (الكيان السمة-value_model):
col1: entityID
col2: attributeName
col3: value
وأريد أن استخدام HBase بسبب رفع قضايا.
أعلم أن الطريقة الوحيدة للوصول إلى Hbase الجدول باستخدام مفتاح أساسي (المؤشر).يمكنك الحصول على المؤشر على مفتاح معين, و تكرار الصفوف واحدة تلو الأخرى .
المشكلة هي أنه في حالتي كنت تريد أن تكون قادرة على تكرار في كل 3 أعمدة.على سبيل المثال :
- من أجل إعطاء entityID كنت ترغب في الحصول على جميع attriutes والقيم
- إعطاء attributeName والقيمة اريد جميع entitiIDS ...
حتى فكرة واحدة كان هو بناء واحد Hbase الجدول الذي سوف يعقد البيانات (بيانات الجدول ، entityID الأولية مؤشر) و 2 "مؤشر" الجداول واحدة مع attributeName باعتباره المفتاح الأساسي والآخر مع قيمة
كل مؤشر الجدول سوف تعقد قائمة من المؤشرات (entityIDs) عن جدول البيانات.
هو معقول النهج ؟ أو هو 'الاعتداء' من Hbase المفاهيم ؟
HBase يسمح الحصول على العمليات الأولية مفتاح المسح (أعتقد:المؤشر) على التوالي نطاقات.(إذا كان لديك كل مقياس ، تحتاج الثانوية الفهارس, لا تقلق - لوسين لانقاذ!ولكن هذا وظيفة أخرى.)
هل تعرف كيف لوسين يمكن أن تساعد ؟
-- يوناتان
المحلول
الثانوية الفهارس المفيد العديد من التطبيقات المحتملة HBase ، وأعتقد أن المطورين هم في الواقع النظر في ذلك.الخروج http://www.mail-archive.com/hbase-dev@hadoop.apache.org/msg04801.html.
في الوقت نفسه رغم أن, إذا كان التطبيق الخاص بك تخزين البيانات يمكن أن تكون على غرار نجمة مخطط (انظر http://en.wikipedia.org/wiki/Star_schema) قد ترغب في الخروج الحل الذي Hypertable يقترح الثانوية مؤشر من نوع يحتاج http://markmail.org/message/rphm4q6cbar2ycgp
نصائح أخرى
أوصي وجود اثنين من مختلف شقة الجداول:واحد للبحث عن سمات+القيم المعطاة entityID واحد من أجل البحث عن entityID بالنظر إلى السمات+القيم.
الجدول 1 أن تبدو مثل هذا:
entityID1 {
attribute1: value1;
attribute2: value2;
...
}
الجدول 2:
attribute1_value1 {
entityID1;
}
attribute2_value2 {
entityID1;
}