2012-02-04 14 views
7

मैं एक नई वेब परियोजना को डिजाइन कर रहा हूँ और, कुछ विकल्प scalability लक्ष्य अध्ययन करने के बाद, मैं दो डेटाबेस समाधान के साथ आया था:स्थानीय SQLite बनाम रिमोट MongoDB

  • स्थानीय SQLite फ़ाइलों ध्यान से एक स्केलेबल फैशन के लिए बनाया गया (एक प्रत्येक एक्स उपयोगकर्ताओं के लिए नई डेटाबेस फ़ाइल, लिखने के रूप में उपयोगकर्ता सामग्री पर निर्भर करेगा, कोई क्रॉस-उपयोगकर्ता डेटा निर्भरता नहीं है);
  • रिमोट मोंगोडीबी सर्वर (जैसे Mongolab), क्योंकि मेरा होस्ट सर्वर मोंगोडीबी की सेवा नहीं करता है।

मुझे वर्तमान साझा मेजबान पर MySQL सर्वर पर भरोसा नहीं है, क्योंकि यह बहुत बार नामित होता है (और मुझे अन्य होस्ट पर भी MySQL के साथ समस्याएं थीं)। इसी कारण से मैं पोस्टग्रेज़ का उपयोग करने के लिए नहीं जा रहा हूं। SQLite के

सकारात्मक:

  • यह स्थानीय है, इसलिए इसमें तेजी से होना चाहिए (मैं ठीक से सूचकांक और लेन-देन का उपयोग कर का ध्यान रखेंगे);
  • मुझे टीसीपी स्नीफिंग के बारे में चिंता करने की आवश्यकता नहीं है, क्योंकि मोंगो वायर प्रोटोकॉल is not crypted;
  • मुझे सर्वर आउटेज के बारे में चिंता करने की आवश्यकता नहीं है, क्योंकि SQLite सर्वर रहित है। MongoDB के

सकारात्मक:

  • यह और अधिक आसानी से स्केलेबल है,
  • मुझे विभाजन डेटाबेस पर चिंता करने की आवश्यकता नहीं है, क्योंकि स्केलेबिलिटी प्राकृतिक लगती है;
  • मुझे स्कीमा परिवर्तनों के बारे में चिंता करने की आवश्यकता नहीं है, क्योंकि मोंगो स्कीमालेस और SQLite doesn't fully support alter table (विशेष रूप से कई उत्पादन फ़ाइलों को बदलने पर विचार करने आदि)।

मुझे निर्णय लेने में मदद चाहिए (और शायद तीसरा विकल्प मानें)। लिखने और पढ़ने के संचालन बढ़ने पर कौन सा बेहतर होता है?

मैं रूबी का उपयोग करने जा रहा हूं।

+0

मोंगो डीबी को लिखने के संचालन के लिए अनुकूलित किया गया है – Adrian

+0

@ एड्रियन: यह काफी अधिक है :-) –

उत्तर

9

SQLite दृष्टिकोण का एक बड़ा जोखिम यह है कि आपकी आवश्यकताओं को बढ़ाने के लिए आपकी आवश्यकताओं के अनुसार, आप एकाधिक एप्लिकेशन सर्वर पर (आसानी से) तैनात नहीं कर पाएंगे। आप अपने उपयोगकर्ताओं को अलग-अलग सर्वरों में विभाजित करने में सक्षम हो सकते हैं, लेकिन यदि वह सर्वर नीचे जाना था, तो आपके पास उन उपयोगकर्ताओं का कुछ सबसेट होगा जो उनके डेटा तक नहीं पहुंच सके।

मोंगोडीबी (या किसी भी अन्य केंद्रीकृत सेवा) का उपयोग इस समस्या को कम करता है, क्योंकि आपके वेब सर्वर स्टेटलेस हैं - किसी भी समय वेब लोड को समायोजित करने के लिए उन्हें किसी भी समय जोड़ा जा सकता है या हटाया जा सकता है, इस बारे में चिंता किए बिना कि डेटा कहां रहता है।