2012-06-21 17 views
5

हम एक मौजूदा सिस्टम (सी ++ \ सीएलआई और सी #) के लिए एक अद्यतन डिजाइन कर रहे हैं। सिस्टम ~ 10 के डिवाइस (निकट भविष्य में) से डेटा की छोटी (~ 1 एमबी) मात्रा एकत्र करेगा। वर्तमान में, उनका उपयोग CSV (एक तालिका) में डिवाइस डेटा को सहेजने के लिए किया जाता है और इन्हें विस्तृत फ़ोल्डर संरचना में संग्रहीत किया जाता है।एसक्यूएल डाटाबेस वीएस। एकाधिक फ्लैट फ़ाइलें (हजारों छोटे सीएसवी)

डेटा केवल डाला गया है (फ़ाइल में बनाएँ/संलग्न करें, फ़ोल्डर बनाएं) कभी अपडेट/हटाया नहीं गया। डेटा प्रोसेसिंग कई सीएसवी को बाहरी प्रोग्राम (जैसे मैटलैब) में पढ़कर किया जाता है। मुख्य रूप से सांख्यिकीय विश्लेषण के लिए इस्तेमाल किया जाना चाहिए।

इस डेटा को एमएस-एसक्यूएल डेटाबेस में सहेजने का विकल्प है। प्रक्रिया समय (सीएसवी के बाहरी कार्यक्रम को पढ़ने) कुछ मिनट तक हो सकता है।

  • हमें किस विधि का उपयोग करना चुनना चाहिए?
  • क्या विधियों में से एक दूसरे की तुलना में काफी अधिक संग्रहण लेता है?
  • काफी हद तक, डेटाबेस से कच्चे डेटा को पढ़ते समय सीएसवी पढ़ने से जल्दी हो जाता है? (10 फाइलें, 100 फाइलें? ...)

मैं आपके उत्तरों की सराहना करता हूं, पेशेवरों और विपक्ष का स्वागत है।

अपने समय के लिए धन्यवाद।

+0

यह उन प्रश्नों में से एक है जिसे आप केवल इसका प्रयास करके जवाब दे सकते हैं। – Gabe

+0

आप एक नोएसक्यूएल डेटाबेस का उपयोग करने पर भी विचार कर सकते हैं। – HLGEM

उत्तर

3

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

आपके विवरण के आधार पर ऐसा लगता है कि आपने टेबल डेटा और फ़ोल्डर संरचना के आधार पर लगभग अपना स्वयं का डीबीएमएस बनाया है। मुझे संदेह है कि यदि आप SQL सर्वर का उपयोग करने के लिए स्विच करते हैं तो आपको शायद कई ऐसे क्षेत्र मिलेंगे जहां चीजें तेज और आसान होंगी।

संभावित लाभ:

  • आसान
  • आसान प्रबंधन करने के लिए विस्तार करने के लिए आप लागू करने के लिए डेटा अखंडता
  • आसान और अधिक जटिल संबंधों
  • डिजाइन करने के लिए आसान
  • करने की जरूरत है चाहिए

    • तेज़ पहुंच

    संभावित विपक्ष:

    • आप अपने वर्तमान प्रणाली के बजाय SQL सर्वर का उपयोग करने के लिए अपने मौजूदा कोड को फिर से लिखने करना होगा
    • आप एसक्यूएल सर्वर के लिए भुगतान करने के लिए हो सकता है, अगर आप एक्सप्रेस
    उपयोग कर सकते हैं देखने के लिए जाँच करने के लिए होगा

    शुभकामनाएँ!

  • +0

    सीएसवी फाइलों के लिए देखे जाने वाले सबसे बड़े फायदों में से एक यह है कि आप एक ही में जा सकते हैं और हाथ इसे आसानी से संपादित कर सकते हैं। आप SQL सर्वर में ऐसा ही कर सकते हैं, लेकिन आपको प्रबंधन स्टूडियो की प्रतिलिपि रखना चाहिए और वास्तव में डेटा को संपादित करने के बारे में पता होना चाहिए। –

    +0

    सच है। प्रबंधन स्टूडियो हालांकि लटका पाने के लिए बहुत आसान है, और वे डेटा संपादन के पूरी तरह से यूआई आधारित तरीकों की पेशकश करते हैं। –

    +0

    सहमत हुए। एक सामान्य व्यापार उपयोगकर्ता के लिए, सीएसवी संपादन आसान हो सकता है। लेकिन इसकी आवाज़ से यह एक मुद्दा प्रतीत नहीं होता है। –

    0

    यह एक सवाल है कि हमारे कई ग्राहकों के पास जहां मैं काम करता हूं। जब तक आपको मौजूदा बुनियादी ढांचे के लिए फ्लैट फाइलों की आवश्यकता न हो, या आपको नहीं लगता कि आप SQL सर्वर को समझ सकते हैं, या यदि आपके पास प्रबंधन के लिए थोड़ी मात्रा में डेटा के साथ केवल कुछ फ़ाइलें होंगी, तो आप SQL सर्वर के साथ बेहतर हो जाएंगे।

    0

    यदि आपके पास ms-sql डेटाबेस का उपयोग करने का विकल्प है, तो मैं ऐसा करूँगा।

    विस्तृत फ़ोल्डर संरचना में डेटा को बनाए रखना कभी अच्छा विचार नहीं है। अपने डेटा को पढ़ने में कई फाइलें पढ़ने शामिल होंगे। ये आपकी डिस्क पर कहीं भी संग्रहीत किया जा सकता है। आपका फ़ाइल-आईओ समय काफी ऊंचा होगा। SQL सर्वर एक उत्पादन डेटाबेस होने के कारण इन समस्याओं का पहले से ही ख्याल रखा गया है।

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

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

    1

    मैं उन प्रश्नों को थोड़ा सा आदेश देने का प्रयास करना चाहता हूं।

    काफी हद तक, डेटाबेस से कच्चे डेटा को पढ़ते समय सीएसवी पढ़ने से जल्दी हो जाता है? (10 फाइलें, 100 फाइलें? ...)

    तत्काल। अविश्वसनीय दरों पर डेटा पढ़ने के लिए डेटाबेस को अनुकूलित किया गया है (माना जाता है कि आपने अपना होमवर्क किया है)।

    क्या विधियों में से एक अन्य की तुलना में काफी अधिक संग्रहण लेता है?

    जब तक आप हजारों फाइलों में नहीं होते हैं, तो शायद यह बहुत अधिक अंतर नहीं उठाएगा। अंतरिक्ष सस्ता है, है ना? हालांकि, एक बार जब आप बड़ी लीग में आ जाएंगे, तो आप देखेंगे कि डीबी बहुत कम जगह ले रहा है।

    हमें किस विधि का उपयोग करना चुनना चाहिए?

    महान प्रश्न। डेटाबेस में सबकुछ हमेशा स्केलेबिलिटी पर आता है। यदि आपके पास पढ़ने के लिए केवल एक ही CSV फ़ाइल थी, तो आपको जाना अच्छा होगा। कोई डीबी आवश्यक नहीं है। यहां तक ​​कि दर्जनों, कोई समस्या नहीं है।

    ऐसा लगता है कि आप उस स्थिति में समाप्त हो सकते हैं जहां आप स्तर तक पहुंच जाते हैं जहां आप निश्चित रूप से अपने डेटा के पीछे डीबी इंजन चाहते हैं। संदेह में, डेटाबेस बनाना सुरक्षित शर्त है, क्योंकि आप अभी भी एक सेकंड में उस 100 जीबी के डेटा के बारे में पूछने में सक्षम होंगे।

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