मैं निम्नलिखित विशेषताओं के साथ एक वास्तविक समय आवेदन पर काम कर रहा हूँ:चुनना/उच्च throughput, विश्वसनीय, लगातार लिखने प्रवाह क्षमता, त्याग के लिए एक डाटाबेस को विन्यस्त विलंबता
- ग्राहकों के सैकड़ों डालने पंक्तियों हो जाएगा/दस्तावेज एक ही समय में, प्रत्येक प्रत्येक सेकंड में एक पंक्ति डालने वाला होता है।
- बड़े पैमाने पर केवल संलग्न करें; एक बार डाली गई लगभग सभी पंक्तियां/दस्तावेज कभी नहीं बदले जाते हैं।
- किसी ग्राहक को केवल सफलता दिखाई देनी चाहिए जब डेटा डिस्क पर फ़्लश किया गया था, और उसके बाद पढ़ने-लिखने की स्थिरता को पकड़ना चाहिए।
- ग्राहक पुष्टि के लिए सेकंड के आदेश पर प्रतीक्षा करने के इच्छुक हैं - कई डिस्क के लिए पर्याप्त लंबे समय तक पूछने और लिखने के लिए पर्याप्त है।
- रैम में फ़िट होने के लिए बहुत अधिक डेटा है (रेडिस जैसे विकल्पों को रद्द करना)। लेकिन लिखित लंबी पंक्तियों को शायद ही कभी पहुंचाया जाता है, इसलिए यह स्मृति में नहीं है।
- आदर्श रूप से, इन लिखते हैं पढ़ने को ब्लॉक नहीं करना चाहिए।
- एक कुंजी-मूल्य स्टोर ठीक है, लेकिन कम से कम एक विश्वसनीय ऑटो-वृद्धि सूचकांक होने की आवश्यकता है।
दूसरे शब्दों में (और टीएल; डॉ), ग्राहक विलंबता सहन कर सकते हैं, लेकिन उन्हें बहुत भरोसेमंद लेखन थ्रूपुट की आवश्यकता है - "एक लिखना एक डिस्क ऑपरेशन है" से अधिक थ्रूपुट।
मैं ऐसे डेटाबेस की कल्पना कर रहा हूं जो इस तरह कुछ कार्यान्वित किया जाएगा: टीसीपी कनेक्शन की संख्या (सैद्धांतिक रूप से फाइल डिस्क्रिप्टरों की संख्या द्वारा सीमित) स्वीकार करें, स्मृति में लिखने वाले बफर, डिस्क के साथ बैच के रूप में अक्सर लॉग इन करें संभव (स्वत: वृद्धि सूचकांक के अपडेट के साथ), और संबंधित डिस्क लेखन ऑपरेशन पूर्ण होने पर केवल उन टीसीपी कनेक्शन का जवाब दें। या यह एक आलसी लेखन डेटाबेस के रूप में सरल हो सकता है जो एक संदेश प्रकाशित करता है कि उसने डिस्क लिख लिया है (क्लाइंट आलसी प्रतिक्रिया के लिए प्रतीक्षा करते हैं, फिर सफलता संदेश की रिपोर्ट करने के लिए लिखने के संदेश की प्रतीक्षा करें)।
मुझे लगता है कि इस तरह की उच्च विलंबता सहनशीलता के साथ, यह बहुत ज्यादा नहीं पूछ रहा है। और मैं कल्पना करता हूं कि दूसरों को यह समस्या है, जैसे कि वित्तीय कंपनियां जो डेटा खोने का जोखिम नहीं उठा सकती हैं, लेकिन किसी एक ग्राहक को प्रतिक्रिया देरी कर सकती हैं।
पोस्टग्रेज़, कॉच डीबी/कॉचबेस, या मोंगोडीबी जैसे ऑपरेशन के किसी भी युद्ध-परीक्षण डेटाबेस समाधान इस तरह के ऑपरेशन के तरीके हैं?
वास्तव में इस सवाल का जवाब मैं खोज रहा था के प्रकार! मैं थोड़ा प्रलेखन द्वारा बंद कर दिया कह 'सभी प्रतिबद्ध लंबित डेटा इस सेटिंग की परवाह किए बिना हर फ्लश में लिखा जाएगा के बाद से, यह इस पैरामीटर बढ़ रही है वास्तव में performance' में सुधार होगा द्वारा देरी कहा कि दुर्लभ है हूँ - लेकिन मुझे लगता है कि यह सोचते कर रहा हूँ मेरा उपयोग मामला उन 'दुर्लभ' मामलों में से एक है? किसी भी दर पर, मुझे इस पर बहुत कुछ पढ़ना होगा और परीक्षण/ट्यूनिंग करना होगा, लेकिन यह बहुत ही आशाजनक दिखता है। – btown
@btown आपको निश्चित निर्णय लेने से पहले निश्चित रूप से परीक्षण और बेंचमार्क की आवश्यकता है। मुझे लगता है कि दस्तावेज़ों में थोड़ा सा अस्पष्ट है; मुझे संदेह है कि यह इस तथ्य को संदर्भित कर सकता है कि किसी भी देरी से जुड़ी प्रतिबद्धता से देरी हो सकती है जिससे डिस्क पर भी फ्लश हो जाता है। मुझे आपके परिणामों में दिलचस्पी होगी। –
@btown बीटीडब्ल्यू, इस तरह के वर्कलोड के लिए आप जो भी सबसे अच्छी चीज कर सकते हैं यह सुनिश्चित करना है कि आपके स्टोरेज में बहुत तेज़ सिंक हो। बैक-बैक मोड में बैटरी समर्थित कैश वाला RAID नियंत्रक सबसे सस्ता विकल्प है। आप उस अंतर पर विश्वास नहीं करेंगे जो इसे बनाता है। एक अच्छा SAN pricier विकल्प है। आप जो कुछ भी करते हैं, ईसी 2 की तरह कुछ इस तरह के वर्कलोड को चलाएं * नहीं। यदि आप बीबीयू के साथ एक RAID नियंत्रक का उपयोग करते हैं तो वे सभी समान नहीं हैं; बेंचमार्क या pgsql- सामान्य मेलिंग सूची पर पूछें। यह सुनिश्चित करने के लिए कि बैटरी अभी भी काम करती है, एक का उपयोग करके समय-समय पर अपने बीबीयू का परीक्षण करें। –