मेरे बेंचमार्क:
== डाटा जनरेशन ==
(उत्पन्न 4million पंक्तियों अजगर के साथ) लगभग 350 बाइट्स के साथ आसान है।
- कुंजी 1, कुंजी 2 (दो यादृच्छिक कॉलम, अनुक्रमण परीक्षण करने के लिए 2000 के प्रमुखता के साथ, और 20 की प्रमुखता के साथ)
- longdata: प्रत्येक दस्तावेज़ इन कुंजियों है एक लंबी स्ट्रिंग प्रत्येक का आकार बढ़ाने के लिए दस्तावेज़
- मूल्य: एक साधारण संख्या (स्थिरांक 10) एकत्रीकरण का परीक्षण करने के
db = Connection('127.0.0.1').test # mongo connection
random.seed(1)
for _ in range(2):
key1s = [hexlify(os.urandom(10)).decode('ascii') for _ in range(10)]
key2s = [hexlify(os.urandom(10)).decode('ascii') for _ in range(1000)]
baddata = 'some long date ' + '*' * 300
for i in range(2000):
data_list = [{
'key1': random.choice(key1s),
'key2': random.choice(key2s),
'baddata': baddata,
'value': 10,
} for _ in range(1000)]
for data in data_list:
db.testtable.save(data)
कुल डेटा आकार मोंगो में 6GB बारे में था। (और postgres में 2GB)
== टेस्ट ==
मैं कुछ परीक्षण किया था, लेकिन एक की तुलना परिणामों के लिए पर्याप्त है:
नोट: सर्वर को पुनः आरंभ है, और ओएस कैश के बाद साफ किया जाता है कैशिंग के प्रभाव को नजरअंदाज करने के लिए प्रत्येक क्वेरी।
: QUERY कुल key1=somevalue
(200K के बारे में पंक्तियाँ) के साथ सभी पंक्तियों और प्रत्येक key2
- नक्शे के लिए
value
योग/को कम 10.6 सेकंड
- aggreate 9.7 सेकंड
- समूह 10.3 सेकंड
प्रश्न:
नक्शा/कम करने:
db.testtable.mapReduce(function(){emit(this.key2, this.value);}, function(key, values){var i =0; values.forEach(function(v){i+=v;}); return i; } , {out:{inline: 1}, query: {key1: '663969462d2ec0a5fc34'} })
कुल:
db.testtable.aggregate({ $match: {key1: '663969462d2ec0a5fc34'}}, {$group: {_id: '$key2', pop: {$sum: '$value'}} })
समूह:
db.testtable.group({key: {key2:1}, cond: {key1: '663969462d2ec0a5fc34'}, reduce: function(obj,prev) { prev.csum += obj.value; }, initial: { csum: 0 } })
स्रोत
2012-12-17 09:23:15
"लगभग" वही? किस बेंचमार्क के साथ? आपकी टिप्पणी मूल रूप से व्यर्थ है। और आप बिल्ली और गायों की तुलना कर रहे हैं। इसके अलावा आप स्वयं को जानते हैं कि एमआर अभी भी एकल-थ्रेडिंग तक सीमित है .... इसलिए: व्यर्थ प्रश्न और इसलिए -1 –
@ user1833746 यह एक प्रश्न है, मैं अपने मानक को समझाना नहीं चाहता हूं। मैंने इस प्रश्न के नए उत्तरों को जानने के लिए कहा। कृपया दूसरों को जवाब देने की अनुमति देने के लिए वोट-अप करें। –
क्या आपने यह प्रश्न देखा है (और उत्तर)? http://stackoverflow.com/questions/12139149/mapreduce-with-mongodb-really-really-slow-30-hours-vs-20-minutes-in-mysql- –