मैंने कुछ महीने पहले मोंगोडब की खोज की, और post पढ़ने के बाद, मैंने सोचा कि मोंगोडब mysql से वास्तव में तेज़ था, इसलिए मैंने अपनी खुद की बेंच बनाने का फैसला किया, समस्या यह है कि मेरे पास उपरोक्त पोस्ट के लेखक की तुलना में एक ही परिणाम नहीं है, विशेष रूप से डेटाबेस को quering करने के लिए: mongodb MyISAM तालिकाओं की तुलना में धीमी प्रतीत होता है।MongoDB MySQL से तेज़ नहीं है?
from datetime import datetime
import random
import MySQLdb
import pymongo
mysql_db=MySQLdb.connect(user="me",passwd="mypasswd",db="test_kv")
c=mysql_db.cursor()
connection = pymongo.Connection()
mongo_db = connection.test
kvtab = mongo_db.kvtab
nb=1000000
thelist=[]
for i in xrange(nb):
thelist.append((str(random.random()),str(random.random())))
t1=datetime.now()
for k,v in thelist:
c.execute("INSERT INTO key_val_tab (k,v) VALUES ('" + k + "','" + v + "')")
dt=datetime.now() - t1
print 'MySQL insert elapse :',dt
t1=datetime.now()
for i in xrange(nb):
c.execute("select * FROM key_val_tab WHERE k='" + random.choice(thelist)[0] + "'")
result=c.fetchone()
dt=datetime.now() - t1
print 'MySQL select elapse :',dt
t1=datetime.now()
for k,v in thelist:
kvtab.insert({"key":k,"value":v})
dt=datetime.now() - t1
print 'Mongodb insert elapse :',dt
kvtab.ensure_index('key')
t1=datetime.now()
for i in xrange(nb):
result=kvtab.find_one({"key":random.choice(thelist)[0]})
dt=datetime.now() - t1
print 'Mongodb select elapse :',dt
नोट्स::
-
दोनों MySQL और MongoDB
- locahost पर हैं आप इसमें कुछ गलत है मेरी अजगर कोड के लिए एक नज़र मिल सकता है, हो सकता है।
CREATE TABLE IF NOT EXISTS `key_val_tab` ( `k` varchar(24) NOT NULL, `v` varchar(24) NOT NULL, KEY `kindex` (`k`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
संस्करण हैं::
- MySQL:
- दोनों MySQL और MongoDB 'कुंजी' कॉलम अनुक्रमित
MySQL तालिका है 5.1.41
- MongoDB: 1.8 .3
- पायथन: 2.6.5
- pymongo: 2.0.1
- लिनक्स: उबंटू 2.6.32 32bits पीएई साथ
- हार्डवेयर: डेस्कटॉप कोर i7 2.93 GHz
परिणाम (1 मिलियन आवेषण/चयन के लिए):
MySQL insert elapse : 0:02:52.143803
MySQL select elapse : 0:04:43.675914
Mongodb insert elapse : 0:00:49.038416 -> mongodb much faster for insert
Mongodb select elapse : 0:05:10.409025 -> ...but slower for quering (thought was the opposite)
एक के लिए, मोंगोडीबी को 64 बिट आर्किटेक्चर पसंद है। मैं किसी ऐसे व्यक्ति द्वारा चलाए गए बेंचमार्क में ज्यादा स्टॉक नहीं डालूंगा जो बेंचमार्क किए जाने वाले सिस्टमों में से एक के साथ बहुत अनुभवी नहीं है। – ceejayoz
इसलिए मैंने कुछ मदद मांगी! – Eric
@ceejayoz यदि आपको इसे तेजी से जाने के लिए बहुत अनुभवी होना है, तो यह अधिकांश उपयोगकर्ताओं के लिए धीमा हो जाएगा। मैं कहूंगा कि अनुभवहीन उपयोगकर्ताओं द्वारा किए गए बेंचमार्क उतने उपयोगी हो सकते हैं ... –