2008-12-17 21 views
11

लगता है मैं इस RDBM तालिका (Entity-attribute-value_model) है:कैसे Hbase स्कीमा डिजाइन करने के लिए?

col1: entityID 
col2: attributeName 
col3: value 

और मैं स्केलिंग मुद्दों के कारण HBase उपयोग करना चाहते हैं।

मुझे पता है कि Hbase तालिका तक पहुंचने का एकमात्र तरीका प्राथमिक कुंजी (कर्सर) का उपयोग कर रहा है। आप एक विशिष्ट कुंजी के लिए एक कर्सर प्राप्त कर सकते हैं, और पंक्तियों को एक-एक करके फिर से चला सकते हैं।

मुद्दा यह है कि, मेरे मामले में, मैं सभी 3 कॉलम पर पुन: सक्रिय होना चाहता हूं। उदाहरण के लिए :

    किसी दिए गए एक entityID मैं अपने सभी attriutes प्राप्त करना चाहते हैं और महत्व देता है एक दे AttributeName और मूल्य मैं सभी entitiIDS चाहते हैं के लिए
  • के लिए
  • ...

तो एक विचार था कि मेरे पास एक हबेस तालिका बनाने के लिए है (डेटा डेटा, प्राथमिक सूचकांक के रूप में इकाई आईडी के साथ), और 2 "इंडेक्स" टेबल प्राथमिक विशेषता के रूप में विशेषता नाम के साथ, और दूसरा

प्रत्येक इंडेक्स टैब ली डेटा तालिका के लिए पॉइंटर्स (इकाई आईडी) की एक सूची आयोजित करेगा।

क्या यह एक उचित दृष्टिकोण है? या हैबेज अवधारणाओं का 'दुरुपयोग' है?

इस में blogauthor कहते हैं: पंक्ति पर्वतमाला से अधिक:

HBase प्राथमिक कुंजी और स्कैन (कर्सर लगता है) द्वारा संचालन पाने के लिए अनुमति देता है।

क्या आप जानते हैं कैसे Lucene मदद कर सकते हैं - (बचाव के लिए Lucene लेकिन है कि एक और पद है तुम दोनों पैमाने पर और माध्यमिक इंडेक्सों का जरूरत है, तो चिंता न करें !।)?

- Yonatan

उत्तर

5

माध्यमिक अनुक्रमित वास्तव में HBase के कई संभावित अनुप्रयोगों के लिए उपयोगी हो सकता है, और मेरा मानना ​​है कि डेवलपर्स इसे देख वास्तव में कर रहे हैं। चेकआउट http://www.mail-archive.com/[email protected]/msg04801.html

इस बीच हालांकि, आपके आवेदन डाटा संग्रहण एक स्टार स्कीमा के रूप में तैयार किया जा सकता है, तो (http://en.wikipedia.org/wiki/Star_schema देखें) आप समाधान है कि Hypertable माध्यमिक सूचकांक प्रकार के लिए प्रस्ताव चेकआउट करने के लिए पसंद कर सकते हैं की जरूरत है http://markmail.org/message/rphm4q6cbar2ycgp

0

मैं रखने की सलाह देते दो अलग-अलग फ्लैट टेबल: गुणों को देखने के लिए + एक इकाई आईडी दिया गया मान, और इकाई आईडी दिए गए गुणों + मानों को देखने के लिए।

तालिका 1 इस प्रकार दिखाई देगा:

entityID1 { 
    attribute1: value1; 
    attribute2: value2; 
    ... 
} 

और तालिका 2:

attribute1_value1 { 
    entityID1; 
} 
attribute2_value2 { 
    entityID1; 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^