2014-04-08 8 views
6

के साथ समूहीकृत विशाल डेटा के माध्यम से खोजें, मैं सबसे तेज़ तरीके से, एकाधिक चाबियों के साथ समूहित विशाल डेटा के माध्यम से खोजना चाहता हूं। मेरे पास इस जानकारी के साथ एक फ़ाइल है लेकिन मैं इसे स्मृति में लोड करना चाहता हूं। मेमोरी कैपेसिटेंस कोई समस्या नहीं है।एकाधिक कुंजी सी #

key1 | key2 | key3 | key4 | value1 | value2 
-----|------|------|------|--------|-------- 
1 | 1 | 1 | 1 | str | 20 
1 | 1 | 1 | 2 | str | 20 
1 | 1 | 1 | 3 | str | 20 
1 | 1 | 2 | 1 | str | 20 
2 | 1 | 1 | 1 | str | 20 

मैं कुछ संग्रह पर ध्यान दिया है, लेकिन मैं अभी भी अनिश्चित हूँ: enter image description here http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable

हो सकता है कि एक multikey शब्दकोश बेहतर होगा क्योंकि यह कुंजी में अतिरेक का एक बहुत से बचें।

public class MultiKeyDictionary<T1, T2, T3> : Dictionary<T1, Dictionary<T2, T3>> 


key1 | key2 | key3 | key4 | value1 | value2 
-----|------|------|------|--------|-------- 
1 | 1 | 1 | 1 | str | 20 
    |  |  | 2 | str | 20 
    |  |  | 3 | str | 20 
    |  | 2 | 1 | str | 20 
2 | 1 | 1 | 1 | str | 20 

मैं प्रत्येक कुंजी नहीं खोजूंगा लेकिन उनमें से 50%। मैं भी पागल सुझावों के लिए खुला हूं।

+0

क्या आप प्रत्येक खोज के लिए स्वतंत्र रूप से अनुकूलित डेटा की कई प्रतियों को पूरा कर सकते हैं? Key1 के लिए अनुक्रमित, key2 के लिए अनुक्रमित, आदि ... –

+2

क्या आप इस डेटा के विरुद्ध निष्पादित करने के लिए आवश्यक ठोस प्रश्नों के बारे में अधिक विशिष्ट हो सकते हैं? – usr

+0

मैं डेटा को बाएं से दाएं कुंजी से विभाजित कर सकता हूं लेकिन कुंजी 2 तक पहुंचने के लिए मुझे पहले कुंजी 1 तक पहुंचने की आवश्यकता है। इसलिए प्रत्येक दायां कुंजी बाएं कुंजी से संग्रह में है। key4 key3 में है और key3 key2 में है ... – Naster

उत्तर

1

आप कुंजीपटल कुंजी और मूल्य के लिए अपनी कुंजी के Tuple का उपयोग कर सकते हैं।

var bank = new Dictionary<Tuple<int, int, int, int, int>, Tuple<string, int>>(); 

bank.Add(Tuple.Create(k1, k2, k3, k4), Tuple.Create("str", 20)); 
+0

नहीं क्योंकि अगर वह केवल 1 कुंजी वह खिचड़ी भाषा के लिए मिलान प्राप्त करना चाहते हैं, तो आप कर रहे हैं: इसके अलावा से एक भी कुंजी में सभी कुंजियों के संयोजन, प्रत्येक रिकॉर्ड जो क्या प्रश्न के बारे में है नहीं है के लिए एक एकल कुंजी करने के लिए उसे सीमित। – Eluvatar

+0

@Eluvatar उस मामले में वह सिर्फ शब्दकोश > बैंक इस्तेमाल कर सकते हैं, और एक ही टपल मूल्य – BenVlodgi

+1

Key1-4 करने के लिए प्रत्येक प्रमुख मुद्दा है एक एकल कुंजी हैं। मैं शब्दकोश <टी 1, शब्दकोश > की तरह कुछ के साथ कुंजी में अतिरेक से बचना चाहते हैं ... लेकिन प्रदर्शन इतना महत्वपूर्ण है ... – Naster

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