2011-06-21 6 views
8

मैं थोड़ी देर के लिए php और mySql के साथ प्रोग्रामिंग कर रहा हूं और हाल ही में फैसला किया है कि मैं nosql को आज़मा देना चाहता था। मैं वास्तव में सराहना करता हूं कि अनुभव में से कुछ मुझे बता सकते हैं:नोएसक्ल का उपयोग कब करें, और कौन सा?

  • स्विच करने का यह अच्छा समय कब है, मुझे कैसे पता चलेगा कि मेरे लिए नोस्कल है?
  • आप किस nosql सॉफ्टवेयर की सिफारिश करेंगे?

धन्यवाद

+7

बहुत ही व्यक्तिपरक, आईएमएचओ। – driis

+4

बहुत रचनात्मक, आईएमएचओ। – GorillaApe

उत्तर

3

यह आपके आवेदन की जरूरतों पर depenends .. विकल्पों में से एक बहुत कुछ कर रहे हैं।

आप उपयोग कर सकते हैं एक दस्तावेज़ उन्मुख mongodb, एक "विस्तारित" Redis या हो सकता है की तरह कुंजी-मान की तरह एक ग्राफ उन्मुख neo4j

इस लेख की तरह बहुत उपयोगी है http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html

+0

विस्तृत उत्तर के लिए एक और रूप एक ही साइट - http://highscalability.com/blog/2011/6/20/35-use-cases-for-choosing-your-next-nosql-database.html –

2

यह हाल blog post उच्च में स्केलेबिलिटी NoSQL का उपयोग कब करें के संबंध में आपके प्रश्न का बहुत अधिक जवाब देती है।

मैं अपने आप को हमेशा MySQL जाना जब तक यह मुझे विफल रहता है और उसके बाद इस काम के लिए सही उपकरण का चयन, गैर रिलेशनल डेटाबेस मैं के साथ काम किया करते हैं:

  • Riak: एक डायनेमो क्लोन जो उपयोगी है जब है आपको रिकॉर्ड्स को जल्दी से एक्सेस करने की आवश्यकता है लेकिन आपके पास एक मशीन को रखने के लिए बहुत सारे रिकॉर्ड हैं। उदाहरण के लिए वेब एप्लिकेशन में उपयोगकर्ताओं के लिए एक अनुशंसा प्रणाली, आप कुछ मिलीसेकंड में डेटा तक पहुंचना चाहते हैं लेकिन आपके पास 200 एम उपयोगकर्ता हैं।
  • MongoDB: एक दस्तावेज़-आधारित डेटाबेस, जब मुझे गति की आवश्यकता होती थी, लेकिन एक लिखने-गहन अनुप्रयोग (पढ़ने/लिखने का अनुपात 1: 1 के करीब) था, तो डेटा अत्यधिक क्षणिक था इसलिए मुझे स्थायित्व के मुद्दों की परवाह नहीं थी
1

स्विच करने के लिए सबसे अच्छा समय है जब आप:

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

मैं उनमें से बहुत से अनुशंसा करता हूं, लेकिन उनमें से प्रत्येक के पास अपने स्वयं के मीठे-धब्बे होते हैं जहां वे चमकते हैं और अन्य हिस्सों में उनकी सुविधाओं की कमी होती है। सही उपकरण चुनने का एकमात्र तरीका उन दोनों से परिचित होना है।

  • वेब डेवलपर्स आमतौर पर कुंजी-मूल्य स्टोर (memcached, redis) सीखते हैं क्योंकि वे बहुत सारी प्रदर्शन समस्याओं को ठीक कर सकते हैं (लेकिन आपके ऐप में कुछ जटिलता भी जोड़ सकते हैं ...)।
  • मोंगोडीबी या कॉच डीबी जैसे दस्तावेज (स्कीमा-कम) डेटाबेस हैं जो आपके डेटा मॉडल में अक्सर बदलाव होने पर आपकी उत्पादकता में काफी वृद्धि कर सकते हैं।
  • ग्राफ ट्रैवर्सल के लिए नियोज है।
  • "बड़े डेटा" के लिए हैडोप और इसकी संबंधित परियोजनाएं हैं।
  • और एक सूची पर और पर चला जाता है ...
7

जब यह स्विच करने के लिए एक अच्छा समय है?

यह वास्तव में विशेष परियोजना पर निर्भर करता है। लेकिन आम तौर पर मैं देखता हूं कि मैं 95% वेब अनुप्रयोगों के लिए nosql का उपयोग कर सकता हूं। मैं अभी भी सिस्टम के लिए पुराने अच्छे एसक्यूएल का उपयोग करूंगा जो ACID (उदाहरण के लिए, सिस्टम 'वास्तविक' पैसे के साथ काम करने की गारंटी देनी चाहिए)।

मुझे कैसे पता चलेगा कि मेरे लिए nosql है?

यह आपके लिए है, मेरे लिए, मेरा विश्वास करो। ;)

आपको केवल nosql दुनिया से कुछ करने की ज़रूरत है, कुछ मौजूदा लेख पढ़ें और आप सभी लाभ और समस्याओं को देखेंगे।

आप किस नोस्कल सॉफ्टवेयर की सिफारिश करेंगे?

मैं व्यक्तिगत रूप से आपको मोंगोड से शुरू करने की सलाह देता हूं, क्योंकि यह वास्तव में सरल है। एसक्यूएल में एक विशेषज्ञ बनने के लिए साल लगते हैं, मोंगोडब में एक विशेषज्ञ बनने के लिए एक महीने या उससे भी ज्यादा की जरूरत होती है।

मेरा सुझाव है कि आप "The little mongodb book" पढ़ने के लिए एक घंटा व्यतीत करें और कल से अपना पहला परीक्षण आवेदन लिखने का प्रयास करें।

कोई भी यहां नहीं कहेंगे कि आपको इसका उपयोग करने की आवश्यकता है, या यह डेटाबेस। उपयोग करने के लिए डेटाबेस क्या परियोजना और आवश्यकताओं पर निर्भर करता है।

+0

+1। 3 आपत्तियां :: पुन :: एसीआईडी ​​- कुछ नोएसक्यूएल भी इसका समर्थन करते हैं, उदाहरण के लिए रावेनडीबी देखें (http://ayende.com/blog/23553/yoursquo-ll-pry-transactions-from-my-dead-cold-broken- हैंड्स)। NoSQL चुनना पुनः देखें - http://nosql-database.org देखें। मोंगोडीबी की सिफारिश कर रहे हैं - आपको पहले उपयोग करने के लिए NoSQL के प्रकार का चयन करना चाहिए, फिर उस प्रकार से एक उत्पाद का चयन करें। बीएल और बुनियादी ढांचे की वास्तविक समझ के बिना किसी एक डीबी की सिफारिश करने का कोई वास्तविक कारण नहीं है। – synhershko

+0

@ सिंघर्शो: मैं वास्तव में ravendb का उपयोग कर रहा हूं, मैं वहां लेनदेन के बारे में जानता हूं;)। और मैं आपसे सहमत हूं। –

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