2013-06-17 5 views
6

टाइटन डब्ल्यू/कैसंड्रा बनाम 0.3.1 का उपयोग करके, मैंने में वर्णित अनुसार createKeyIndex के माध्यम से एक वर्टेक्स कुंजी इंडेक्स बनाया है।अनुक्रमित कुंजी पर टाइटन लुकअप अविश्वसनीय रूप से धीमी हैं?

gremlin> g.createKeyIndex("my_key", Vertex.class) 
==>null 

मैं अब appx 50 नोड्स और ग्राफ में 186k ​​किनारों है, और मुझे my_key का उपयोग कर लुकअप के बीच एक महत्वपूर्ण प्रदर्शन अंतर का पता कर रहा हूँ। इस क्वेरी चलाने के लिए के बारे में 5 सेकंड लेता है:

gremlin> g.V.has("my_key", "abc") 
==>v[12345] 

सूचकांक आईडी का उपयोग कर लेता है, जबकि 1 से भी कम समय दूसरा:

gremlin> g.v(12345) 
==>v[12345] 

my_key एक अद्वितीय बाधा नहीं है (मैं नहीं करना चाहती), लेकिन मैं सोच रहा हूं कि प्रदर्शन में ऐसी विसंगति क्या हो रही है। मैं गैर-अद्वितीय, अनुक्रमित वर्टेक्स कुंजी के लिए लुकअप पर प्रदर्शन कैसे बढ़ा सकता हूं?

उत्तर

5

यहां समस्या .has का उपयोग है, जो एक फ़िल्टर फ़ंक्शन है और किसी भी अनुक्रमणिका का उपयोग नहीं करेगा। GremlinDocs से:

यह ध्यान देने योग्य है कि has की वाक्य रचना g.V("name", "marko") के समान है, जो एक प्रमुख सूचकांक देखने और के रूप में इस तरह के तेजी से प्रदर्शन करेंगे होने का अंतर है लायक है। इसके विपरीत, यह लाइन, g.V.has("name", "marko"), एक मैच के लिए प्रत्येक वर्टेक्स की नाम संपत्ति की जांच करने वाले सभी शीर्षकों पर फिर से शुरू होगी और कुंजी अनुक्रमणिका दृष्टिकोण से काफी धीमी होगी।

ऊपर के उदाहरण के लिए, इस सूचकांक का उपयोग करें और बहुत जल्दी लुकअप (< 1 सेकंड) होगा:

gremlin> g.V("my_key", "abc") 
==>v[12345] 
+2

यह टाइटन 0.5.0 के रूप में सही नहीं है: 'gVhas (" my_key "," abc ") अब' my_key' कुंजी पर उपलब्ध इंडेक्स का उपयोग करेगा। टाइटन के [इंडेक्स डॉक्स] देखें (http://s3.thinkaurelius.com/docs/titan/current/indexes.html)। – AliOli

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