2011-03-03 16 views
6

डेटाबेस में उच्च मात्रा में डेटा स्टोर करने का सबसे अच्छा तरीका क्या है? मुझे टाइमस्टैम्प के साथ विभिन्न पर्यावरणीय सेंसर के मूल्यों को स्टोर करने की आवश्यकता है। मैंने SQLCE के साथ कुछ मानक बनाए हैं, यह कुछ 100,000 पंक्तियों के लिए ठीक काम करता है, लेकिन यदि यह लाखों लोगों तक जाता है, तो चयन बहुत ही धीमे हो जाएंगे। मेरे वास्तविक टेबल:डेटाबेस में

Datapoint:[DatastreamID:int, Timestamp:datetime, Value:float] 
Datastream: [ID:int{unique index}, Uint:nvarchar, Tag:nvarchar] 

अगर मैं एक विशिष्ट Datastream और एक तिथि सीमा के datapoints के लिए क्वेरी, यह उम्र लेता है। विशेष रूप से अगर मैं इसे एम्बेडेड विंडोजसीई डिवाइस पर चलाता हूं। और यह मुख्य समस्या है। मेरे विकास मशीन पर एक प्रश्न के 1sek ले लिया ~, लेकिन सीई डिवाइस पर ले लिया है ~ 5min

हर 5min मैं 20 सेंसर, 12 प्रति घंटे * 24 घंटों के लिए लॉग इन * 365days = 105,120 * 20 सेंसर = 2,102,400 (पंक्तियाँ) प्रति वर्ष

लेकिन यह और भी सेंसर हो सकता है!

मैंने किसी प्रकार की webservice बैकएंड के बारे में सोचा, लेकिन डिवाइस के पास हमेशा इंटरनेट/सर्वर से कनेक्शन नहीं हो सकता है।

डेटा डिवाइस पर प्रदर्शित होने में सक्षम होना चाहिए।

मैं चीजों को कैसे बढ़ा सकता हूं? एक अन्य टेबल लेआउट का चयन करें, एक अन्य डेटाबेस (एसक्लाइट) का उपयोग करें? फिलहाल मैं .netcf20 और SQLCE3.5

कुछ सलाह का उपयोग करता हूं?

+0

आप क्षेत्रों आप क्वेरी के लिए कुंजी के रूप में उपयोग कर रहे हैं पर सूचीबद्ध है? यदि नहीं, तो यह पहला कदम होगा। –

उत्तर

2

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

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

0

त्वरित पहुंच की कुंजी एक या अधिक अनुक्रमणिका का उपयोग कर रही है।

एक वर्ष में दो मिलियन पंक्तियों का डेटाबेस बहुत प्रबंधनीय है।

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

क्या आपके पास SQL ​​सर्वर, या यहां तक ​​कि MySQL तक पहुंच है?

0

आपके डिज़ाइन में ये होना चाहिए: तालिका में प्राथमिक कुंजी। इंटीजर पीके तेज है।

दृश्य के पीछे क्या हो रहा है यह देखने के लिए आपको अपने चयन प्रश्नों का विश्लेषण करने की आवश्यकता है। स्कैन

यदि 100K इसे धीमा कर देता है, तो आपको विश्लेषक के माध्यम से क्वेरी को देखना होगा।

अगर आप 100M पंक्तियाँ, नहीं 100K पंक्तियों

आशा इस मदद करता है

0

आप SQL सर्वर एक्सप्रेस संस्करण के बजाय का उपयोग कर सकते है यह थोड़ा धीमा हो सकता है? आप पूर्ण संस्करण की तरह ही इंडेक्स बना सकते हैं। मैंने उन डेटाबेस के साथ काम किया है जो SQL सर्वर में 100 मिलियन से अधिक पंक्तियां ठीक हैं। एसक्यूएल सर्वर एक्सप्रेस संस्करण आपको डेटाबेस आकार को 10 जीबी तक सीमित करता है, जब तक कि यह ठीक है तो नि: शुल्क व्यक्ति को आपके लिए काम करना चाहिए।

http://www.microsoft.com/express/Database/