2010-06-19 13 views
8

के रूप में MySQL का उपयोग करने की स्केलेबिलिटी मुझे MySQL का उपयोग करने के प्रदर्शन प्रभावों को जानने के लिए एक महत्वपूर्ण मूल्य डेटाबेस बनाम रेडिस/मोंगोडीबी/कॉच डीबी कहते हैं। मैंने अतीत में रेडिस और कॉच डीबी दोनों का उपयोग किया है, इसलिए मैं उनके उपयोग के मामलों से बहुत परिचित हूं, और जानता हूं कि कुंजी/मूल्य जोड़े को नोएसक्यूएल बनाम MySQL में स्टोर करना बेहतर है।एक कुंजी/वैल्यू डेटाबेस

लेकिन यहाँ की स्थिति है:

  • हमारे अनुप्रयोगों के थोक पहले से ही MySQL तालिकाओं के पास बहुत
  • हम Heroku पर सब कुछ (जो केवल MongoDB और MySQL है, और मूल रूप से 1-db-प्रकार है की मेजबानी प्रति ऐप)
  • हम इस मामले में कई अलग-अलग डेटाबेस का उपयोग नहीं करना चाहते हैं।

तो मूल रूप से, मैं MySQL में एक कुंजी/मान तालिका रखने की स्केलेबिलिटी पर कुछ जानकारी ढूंढ रहा हूं। हो सकता है कि तीन अलग मनमाना स्तरों:

  • 1000 प्रतिदिन
  • 1000 प्रति घंटे
  • 1000 प्रति सेकंड
  • 1000 लिखते लिखते लिखते प्रति घंटे
  • 1000 प्रति सेकंड
पढ़ता पढ़ता

एक व्यावहारिक उदाहरण MixPanel's Real-time Web Analytics Tracker जैसे कुछ बनाने में है, जिसके लिए अक्सर ट्रैफिक के आधार पर लेखन की आवश्यकता होती है।

वर्डप्रेस और अन्य लोकप्रिय सॉफ्टवेयर इस समय हर समय उपयोग करते हैं: पोस्ट में "मेटा" मॉडल है जो केवल कुंजी/मान है, इसलिए आप किसी ऑब्जेक्ट पर मनमानी गुण जोड़ सकते हैं जिसे खोजा जा सकता है।

एक और विकल्प एक ब्लॉब में एक धारावाहिक हैश स्टोर करना है, लेकिन यह और भी बुरा लगता है।

आपका क्या लेना है?

+0

http://bret.appspot.com/entry/how-friendfeed-uses-mysql –

उत्तर

2

इसमें कोई संदेह नहीं है कि एक एनओएसक्यूएल समाधान का उपयोग तेजी से होने वाला है, क्योंकि यह आसान है।
एनओएसक्यूएल और रिलेशनल एक दूसरे के साथ प्रतिस्पर्धा नहीं करते हैं, वे अलग-अलग टूल्स हैं जो विभिन्न समस्याओं को हल कर सकते हैं।
1000 लिखने/दिन या प्रति घंटा के लिए कहा जा रहा है, MySQL को कोई समस्या नहीं होगी।
1000 प्रति सेकंड के लिए आपको वहां जाने के लिए कुछ फैंसी हार्डवेयर की आवश्यकता होगी। NOSQL समाधान के लिए आपको शायद कुछ वितरित फ़ाइल सिस्टम की आवश्यकता होगी।

यह आपके द्वारा संग्रहीत किए जा रहे कार्यों पर भी निर्भर करता है।

+5

बिना किसी ट्यूनिंग के मुझे अपने सेलरॉन पर 1.8ghz – zerkms

1

मैं कहना चाहता हूँ आप अपने खुद के बेंचमार्क को चलाने के लिए है क्योंकि यह केवल आपको लगता है कि निम्नलिखित महत्वपूर्ण पहलुओं को जानता है होगा कि:

  • डेटा का आकार इस केवी तालिका में संग्रहीत करने के लिए
  • समानांतरवाद बताएँ कि आप अपने MySQL उदाहरण तक पहुँचने

मैं भी कहेंगे

  • मौजूदा क्वेरी की संख्या हासिल करना चाहते हैं, जो इस डेटा के लिए स्थायित्व आवश्यकताओं के आधार पर , आप कई इंजनों का परीक्षण भी करना चाहेंगे: इनो डीबी, माईसाम।

    जबकि मैं उम्मीद कुछ NoSQL समाधान तेजी से होने के लिए करते हैं, अपने बाधाओं के आधार पर आप पता लगा सकते हैं कि MySQL अपनी आवश्यकताओं के लिए काफी अच्छा प्रदर्शन करेंगे।

  • 2

    SQL डेटाबेस Key-Value भंडारों में कैश किए गए गणना और वितरण के साथ एक स्थिर परत के रूप में अधिक से अधिक उपयोग किए जाते हैं।

    इसे ध्यान में रखते

    , उन लोगों के लिए काफी परीक्षण यहाँ किया है:

    • InnoDB प्रति सेकंड 43,000 रिकॉर्ड सम्मिलित करता है अपने चरम पर *;
    • TokuDB प्रति सेकंड 34,000 रिकॉर्ड सम्मिलित करता है अपने चरम पर *;
    • यह केवी प्रति सेकंड 100 लाख रिकॉर्ड (2,000+ बार अधिक) दर्ज करता है।

    आपके प्रश्न का उत्तर करने के लिए, एक Key-Value भंडार परिमाण के कई आदेशों द्वारा संभावना से भी अधिक MySQL को पछाड़ने के लिए है:

    प्रसंस्करण 100,000,000 आइटम:

    kv_add()....time:....978.32 ms 
    kv_get().....time:....297.07 ms 
    kv_free()....time:........0.00 ms 
    

    ठीक है, अपने परीक्षण था 1,000 ऑप्स प्रति दूसरा, लेकिन यह 1,000 गुना अधिक करने में सक्षम होने के लिए चोट नहीं पहुंचा सकता है!

    अधिक जानकारी के लिए this देखें (वे इसकी तुलना Tokyo Cabinet से भी करते हैं)।

    +0

    पर innodb के लिए प्रति सेकंड 4000 प्रविष्टियां मिलीं। लिंक टूटा हुआ है। – simbabque

    1

    ब्लॉग पोस्ट की श्रृंखला here देखें जहां लेखक मोंगोडीबी और माईएसक्यूएल प्रदर्शन की तुलना में परीक्षण चलाता है, और MySQL प्रदर्शन ट्यूनिंग गड़बड़ी के माध्यम से झगड़ा करता है। मोंगोडीबी प्रति सेकेंड ~ 100 के पंक्ति पढ़ रहा था, सी/एस मोड में माईएसक्यूएल 43 के अधिकतम कर रहा था, लेकिन एम्बेडेड लाइब्रेरी के साथ वह इसे प्रति सेकंड 172 के पंक्ति तक पढ़ने में कामयाब रहा।

    यह थोड़ा एक एकल नोड पर है कि उच्च प्राप्त करने के लिए, तो YMMV जटिल लग रहा है।

    लिखते हैं/दूसरा सवाल एक छोटे से कठिन है, लेकिन यह अभी भी कॉन्फ़िगरेशन की कोशिश करने पर आप कुछ विचार दे सकता है।

    +0

    लिंक टूटा हुआ है। – simbabque

    संबंधित मुद्दे