अप्सर्ट के साथ मोंगोडीबी इसके लिए बहुत अच्छा है।
आप की तरह कुछ भंडारण कर रहे हैं:
{ "url" : "www.example.com", "pageviews" : 0 }
आप atomically वेतन वृद्धि पृष्ठ-अवलोकन वास्तव में जल्दी से साथ परमाणु आपरेशन $ इंक कर सकते हैं:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})
आप upserts का उपयोग करते हैं, तो आप की जरूरत नहीं है यह जांचने के लिए कि कोई दस्तावेज़ इसे अपडेट करने से पहले मौजूद है या नहीं। उदाहरण के लिए, अगर आप कहते हैं: अगर यह मौजूद है
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})
URL, www.example.com से दस्तावेज़ अगर यह मौजूद नहीं है (1 पर सेट पृष्ठ दृश्यों के साथ) बनाया जाएगा या,, पृष्ठ-अवलोकन किया जाएगा वृद्धि की जाती। इसका मतलब है कि आपको संग्रह को पूर्व-पॉप्युलेट करने की चिंता करने की आवश्यकता नहीं है।
हाथ नीचे मैं रेडिस कहूंगा। मैं एक काउंटर सॉर्ट कर रहा हूं और मैं $ 20 512 एमबी वीपीएस पर प्रति मिनट 30k कमांड दबा रहा हूं। :) –
हमने काउंटर सिस्टम के लिए रेडिस का उपयोग करने की कोशिश की। रेडिस 'प्राथमिक डेटास्टोर रैम है, और हमारे डेटासेट प्रभावी होने के लिए बहुत बड़ा था।टोक्यो ट्रायंट की तरह कुछ और - जो हर समय राम में पूरे डेटासेट को रखने की ज़रूरत नहीं है - शायद बेहतर विकल्प होगा। –
रैम में एक साधारण काउंटर नहीं रखा जा सकता है? ट्विटर स्मृति में लगभग सभी सक्रिय ट्वीट्स स्टोर करता है। यदि आप प्रदर्शन चाहते हैं तो मुझे लगता है कि आपको मेमोरी मॉड्यूल के लिए थोड़ा नकद देना चाहिए। इसके अलावा आप रैम सस्ते के कुछ गिग प्राप्त कर सकते हैं। – Alfred