mongodb - मोंगोडीबी बनाम कैसंद्रा




database-design cassandra (4)

मैं मूल्यांकन कर रहा हूं कि सबसे अच्छा माइग्रेशन विकल्प क्या हो सकता है।

वर्तमान में, मैं जेएसओएन ब्लब्स में संग्रहीत अधिकांश डेटा के साथ, एक sharded MySQL (क्षैतिज विभाजन) पर हूँ। मेरे पास कोई जटिल SQL क्वेरी नहीं है (जब से मैंने अपना डीबी विभाजित किया है) पहले से ही माइग्रेट हो गया है।

अभी, ऐसा लगता है जैसे मोंगोडीबी और कैसंद्रा दोनों विकल्प होंगे। मेरी स्थिति:

  • प्रत्येक क्वेरी में बहुत सारे पढ़ते हैं, कम नियमित लिखते हैं
  • "भारी" स्केलेबिलिटी के बारे में चिंतित नहीं है
  • सरल सेटअप, रखरखाव और कोड के बारे में अधिक चिंतित
  • हार्डवेयर / सर्वर लागत को कम करें

पारंपरिक डेटाबेस और नोएसक्यूएल डेटा स्टोर के बीच क्यों चुनें? दोनों का उपयोग करें! नोएसक्यूएल समाधान (प्रारंभिक सीखने की वक्र से परे) की समस्या लेनदेन की कमी है - आप MySQL के सभी अपडेट करते हैं और MySQL को पढ़ने के लिए नोएसक्यूएल डेटा स्टोर पॉप्युलेट करते हैं - फिर आपको प्रत्येक तकनीक की ताकत से लाभ होता है। यह अधिक जटिलता जोड़ता है, लेकिन आपके पास पहले से ही MySQL पक्ष है - बस मिश्रण में मोंगोडीबी, कैसंद्रा, आदि जोड़ें।

नोएसक्यूएल डेटास्टोर आमतौर पर एक पारंपरिक डीबी के लिए समान रूप से स्केल तरीके से बेहतर तरीके से स्केल करते हैं - एक कारण है कि फेसबुक, ट्विटर, Google और अधिकांश स्टार्ट-अप नोएसक्यूएल समाधान का उपयोग कर रहे हैं। यह सिर्फ नए तकनीक पर उच्च geeks नहीं हो रहा है।


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

वेब इंजीनियरों के बीच एक और चाल है, जैसे ही प्राप्तियां आती हैं कि आरडीबीएमएस की सभी सुविधाओं का उपयोग नहीं किया जाता है। यह अकेला एक अच्छा कारण नहीं है, क्योंकि अक्सर अक्सर नोएसक्यूएल डेटाबेस के बजाय खराब डेटा इंजन होते हैं (क्या MySQL स्टोरेज इंजन को कॉल करता है)।

अब, यदि आप उस तरह के नहीं हैं, तो कृपया निर्दिष्ट करें कि MySQL में क्या गुम है और आप एक अलग डेटाबेस (जैसे ऑटो-शेरिंग, स्वचालित विफलता, बहु-मास्टर प्रतिकृति, एक कमजोर डेटा स्थिरता गारंटी में खोज रहे हैं) उच्च लेखन थ्रूपुट, आदि में क्लस्टर का भुगतान बंद)।


मैंने कैसंद्रा का उपयोग नहीं किया है, लेकिन मैंने मोंगोडीबी का इस्तेमाल किया है और लगता है कि यह कमाल है।

यदि आपके सरल सेटअप के बाद, यह है। आप बस मोंगोडीबी को छोड़ दें और मोंगोड डिमन चलाएं और यही वह..यह चल रहा है।

जाहिर है कि यह केवल स्टार्टर है, लेकिन आपको शुरू करने के लिए यह आसान है।


मैंने मोंगोडीबी का व्यापक रूप से उपयोग किया है (पिछले 6 महीनों के लिए), एक पदानुक्रमित डेटा प्रबंधन प्रणाली का निर्माण, और मैं सेटअप की आसानी दोनों को स्थापित कर सकता हूं (इसे इंस्टॉल कर सकता हूं, इसे चला सकता हूं, इसका उपयोग कर सकता हूं!) और गति। जब तक आप इंडेक्स के बारे में सावधानी से सोचते हैं, यह पूरी तरह से गतिशील, साथ-साथ चिल्ला सकता है।

मैं उस कैसंद्रा को इकट्ठा करता हूं, ट्विटर जैसे बड़े पैमाने पर परियोजनाओं के उपयोग के कारण, बेहतर स्केलिंग कार्यक्षमता है, हालांकि मोंगोडीबी टीम समानता पर काम कर रही है। मुझे यह इंगित करना चाहिए कि मैंने परीक्षण चलाने वाले चरण से परे कैसंद्रा का उपयोग नहीं किया है, इसलिए मैं विस्तार से बात नहीं कर सकता।

मेरे लिए वास्तविक स्विंगर, जब हम नोएसक्यूएल डेटाबेस का आकलन कर रहे थे, तो पूछताछ की गई - कैसंद्रा मूल रूप से सिर्फ एक विशाल कुंजी / मूल्य स्टोर है, और पूछताछ थोड़ा सा है (कम से कम मोंगोडीबी की तुलना में), इसलिए प्रदर्शन के लिए आपको मैनुअल इंडेक्स के एक प्रकार के रूप में काफी डेटा डुप्लिकेट करें। दूसरी ओर, मोंगो डीबी, "उदाहरण के द्वारा क्वेरी" मॉडल का उपयोग करता है।

उदाहरण के लिए, कहें कि आपके पास एक संग्रह है (उपयोगकर्ताओं को युक्त आरडीएमएस तालिका के समतुल्य के लिए मोंगोडीबी पार्लान्स)। मोंगोडीबी दस्तावेजों के रूप में रिकॉर्ड स्टोर करता है, जो मूल रूप से द्विआधारी जेएसओएन ऑब्जेक्ट्स हैं। उदाहरण के लिए:

{
   FirstName: "John",
   LastName: "Smith",
   Email: "[email protected]",
   Groups: ["Admin", "User", "SuperUser"]
}

यदि आप स्मिथ नामक सभी उपयोगकर्ताओं को ढूंढना चाहते हैं जिनके पास व्यवस्थापकीय अधिकार हैं, तो आप केवल एक नया दस्तावेज़ तैयार करेंगे (जावास्क्रिप्ट का उपयोग कर व्यवस्थापक कंसोल पर, या अपनी पसंद की भाषा का उपयोग करके उत्पादन में):

{
   LastName: "Smith",
   Groups: "Admin"
}

... और फिर क्वेरी चलाएं। बस। तुलना के लिए अतिरिक्त ऑपरेटर हैं, RegEx फ़िल्टरिंग आदि, लेकिन यह सब बहुत आसान है, और विकी-आधारित दस्तावेज बहुत अच्छा है।







database