2012-01-03 24 views
6

के साथ एक कैसंड्रा पंक्ति में कॉलम की कुल संख्या की गणना करने का तेज़ तरीका Hector क्लाइंट का उपयोग करके मैं कैसंड्रा पंक्ति के लिए कॉलम की कुल संख्या गिनना चाहता हूं। वर्तमान में मैं इसे CountQuery के साथ कर रहा हूं, लेकिन यह वास्तव में मेरे लिए धीमा लगता है। एक पंक्ति के लिए, केवल 60 के कॉलम के साथ इसमें लगभग 2 सेकंड लगते हैं। मेरे कोड वर्तमान में इस तरह दिखता है:हेक्टर

QueryResult<Integer> qr = HFactory.createCountQuery(ksp, se, se). 
    setColumnFamily("ColumnFamily1"). 
    setKey("RowKey"). 
    setRange(null, null, 1000000000).execute(); 

पुनश्च: मैं इस तरह के एक उच्च संख्या के लिए सीमा सेट करना होगा, अन्यथा यह केवल मुझे अधिकतम गिना जाता है। सीमा में प्रदान की गई संख्या के लिए।

कोई विचार मैं इसे कैसे सुधार सकता हूं?

उत्तर

8

कैसंद्रा में कॉलम की गणना करना स्वाभाविक रूप से धीमा है। गिनती वापस करने के लिए कैसंद्रा को पूरी पंक्ति में फिर से भरना होगा।

शायद आप गिनती को कम करना चाहते हैं। आप काउंटर कॉलम का उपयोग कर सकते हैं जिसे आप हर बार डालने पर अपडेट करते हैं।

+0

धन्यवाद। मुझे नहीं पता था कि इसे पूरी पंक्ति में फिर से भरने की जरूरत है। – High6

+0

क्या यह पिछले 4 वर्षों में बदल गया है? मेरा मतलब है कि अब कैसंड्रा कुछ मेटाडेटा रखता है और जल्दी से कॉलम की संख्या वापस कर सकता है जो अभी भी सभी कॉलम पर फिर से चलाता है? – Peter

+0

नहीं, यह नहीं बदला है। मुख्य कारण यह है कि उस जानकारी का ट्रैक रखने से लिखने के पथ को धीमा कर दिया जाएगा। – psanford