2012-02-22 2 views
6

में बड़े डेटासेट के साथ सर्वोत्तम अभ्यास वर्तमान में मैं एक सॉफ्टवेयर को विलुप्त करने और कार्यान्वित करने में काम कर रहा हूं, जिसे मास्टर-विवरण आर्किटेक्चर के साथ दो तालिकाओं पर सीआरयूडी संचालन लागू करना है। शीर्षलेख में लगभग आधे मिलियन पंक्तियां हैं और लाखों पंक्तियां हैं।सी #

डेटासेट में यह सब डेटा भरें पागल है, डेटा भी बदल सकता है और मुझे डेटाबेस की स्थानीय प्रतिलिपि नहीं है। मुझे उस सॉफ्टवेयर में दिलचस्पी है जो धीरे-धीरे काम करता है। हालांकि डेटासेट सबसे अच्छा समाधान नहीं हो सकता है, लेकिन मुझे इसका उपयोग अन्य सॉफ्टवेयर भागों के अनुरूप होना चाहिए।

सबसे पहले मुझे लगता है कि एक टाइप किए गए डेटासेट और कुछ मेथोस जैसे GetNext(), GetFirst(), GetByCod() का उपयोग करना है, लेकिन मुझे यकीन नहीं है कि सबसे अच्छा समाधान है .... मैं थोड़ा परीक्षण कर रहा हूं और बहुत तेजी से काम नहीं करते हैं।

मुझे यह जानने में दिलचस्पी है कि अन्य डेवलपर यह कैसे करते हैं, सर्वोत्तम अभ्यास और बड़े डेटा के साथ संचालन करने के लिए "सबसे अच्छी पसंद" क्या है।

मैं विजुअल स्टूडियो 2008 और Sql सर्वर का उपयोग कर रहा 2005

जोड़ा: आप SqlDataReader का उपयोग कर आप कुछ इस तरह की बात कर रहे हैं के बारे में बात करते हैं?

using (SqlConnection con = new SqlConnection(CON)) { 

      con.Open(); 
      SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE"); 
      cmd.Connection = con; 
      SqlDataReader rd = cmd.ExecuteReader(); 
      BindingSource bindingSource = new BindingSource(); 
      bindingSource.DataSource = rd; 
      bindingNavigator1.BindingSource = bindingSource; 

      txtFCOD.DataBindings.Add("Text", bindingSource, "FIELD"); 
     } 
+1

सबसे पहले मैं डेटासेट का उपयोग नहीं करता। और आप एक ही समय में सभी पंक्तियों से पूछेंगे? जब आपको बड़ी मात्रा में एडीटाए को संसाधित करना होता है तो मैं डेटाटेडर का उपयोग करता हूं, जब आपको एक आसान इंटरफ़ेस प्रदान करना होता है तो मैं एक या मैपर –

+0

का उपयोग करने की सलाह दूंगा हां, मैं बोस एनकलर से सहमत हूं। केवल आवश्यक समय पर आवश्यक डेटा पूछें। –

+0

अपनी तालिका में इंडेक्स का उपयोग करने के लिए अपने प्रश्नों पर ध्यान दें और केवल अपने प्रश्नों में विशिष्ट जानकारी मांगें। डेटाबेस को यह काम करने दें :-) – Schwarzie2478

उत्तर

4

मुझे लगता है कि इतना बड़ा डेटासेट प्रबंधित करने का कोई तरीका नहीं है।

आपको डेटा रीडर की आवश्यकता नहीं है, डेटासेट नहीं।

डेटा की वास्तव में बड़ी राशि के साथ डेटाबेस की स्थानीय प्रतिलिपि इस (आपके ऐप्लिकेशन से तेजी से प्रतिक्रिया) की तरह कुछ तक पहुँचने के लिए प्रभावी तरीका है, लेकिन आप तुल्यकालन (प्रतिकृति), संगामिति आदि के साथ समस्याओं होगा ..

बेस्ट अभ्यास केवल उस डेटा से प्राप्त हो रहा है जिस उपयोगकर्ता को वास्तव में आवश्यकता है। आप उपयोग सर्वर साइड प्रसंस्करण को, संग्रहित प्रक्रियाओं आदि से है

मैं अभी भी पता है कि आप किस डेटा हेरफेर करने के लिए चाहते हैं और अपने अनुप्रयोग के उद्देश्य क्या है, लेकिन वहाँ पर डेटा की बड़ी मात्रा का एक और नुकसान है क्लाइंट साइड - आपके ऐप को बहुत सारे रैम और तेज़ सीपीयू की आवश्यकता होगी। हो सकता है कि आपका कंप्यूटर तेज़ और इसे संभालने में सक्षम हो, लेकिन विचार करें कि जब कोई आपके टैबलेट पर 1GHz एटम CPU के साथ इंस्टॉल करता है तो क्या होता है। यह आपदा होगी।

+0

@arturn आप इस बड़े डेटासेट के साथ क्या करना चाहते हैं? –

+0

मैं एक सीआरयूडी मास्टर-विवरण फॉर्म कर रहा हूं। – arturn

+0

लाखों पंक्तियों के साथ फॉर्म? यह पागल है। – Kamil

3

शायद ही कभी ऐसा परिदृश्य होना चाहिए जहां आपको एक ही समय में सभी डेटा पुनर्प्राप्त करने की आवश्यकता हो। डेटा के विशिष्ट छोटे सेट की सेवा के लिए

  • उपयोग दृश्य:

    आप निम्नलिखित पर विचार कर सकता है।

  • SQL सर्वर 2005
  • में प्रस्तुत OVER() कार्यक्षमता का उपयोग करके पेजिंग का उपयोग करने पर विचार करें बड़ी मात्रा में डेटा के लिए डेटासेट का उपयोग न करें। डेटा रीडर इस मामले में अधिक कुशल हैं।

व्यक्तिगत रूप से मुझे लगता है कि आपको बड़ी मात्रा में डेटा को स्मृति में लोड करने से बचना चाहिए जबतक कि आपके पास कितना लोड हो रहा है और जब इसका निपटारा किया जा रहा है, पर पूर्ण नियंत्रण है। याद रखें, यदि डेटा सर्वर-साइड को संभालना है, तो आप उन संसाधनों का उपयोग कर रहे हैं जिन्हें अन्य प्रक्रिया की आवश्यकता हो सकती है।

आपको हमेशा एक समय में छोटे टुकड़ों के साथ प्रयास करना और काम करना चाहिए, और अधिमानतः जितना संभव हो उतना कम समय के लिए। यह आपकी प्रक्रिया को लंबे समय तक किसी भी संसाधन को हॉगिंग से रोकता है।

+0

हाय, आपके उत्तर के लिए धन्यवाद! – arturn