2011-06-10 11 views
6

जब यह NoSQL की बात आती है, तो NoSQL विकी में स्पष्ट के रूप में एक विशिष्ट NoSQL डेटाबेस का चयन करने के लिए विकल्पों की परेशान संख्या होती है।MySQL के प्रतिस्थापन के रूप में उपयोग करने के लिए क्या NoSQL डेटाबेस?

मेरे आवेदन में मैं MySQL को NOSQL विकल्प के साथ बदलना चाहता हूं। मेरे आवेदन में मेरे पास उपयोगकर्ता तालिका है जिसमें बड़ी संख्या में अन्य तालिकाओं के साथ कई संबंध हैं। इनमें से कुछ टेबल बदले में अन्य तालिकाओं से संबंधित हैं। यदि मेरे मित्र हैं तो मेरे पास एक उपयोगकर्ता दूसरे उपयोगकर्ता से जुड़ा हुआ है।

मेरे पास स्टोर करने के लिए दस्तावेज़ नहीं हैं, इसलिए यह दस्तावेज़ उन्मुख नोएसक्यूएल डेटाबेस को समाप्त करता है। मुझे बहुत अधिक प्रदर्शन चाहिए। एनओएसक्यूएल डेटाबेस को प्ले फ्रेमवर्क और स्कैला भाषा के साथ बहुत अच्छी तरह से काम करना चाहिए। यह खुला स्रोत और मुफ्त होना चाहिए।

तो ऊपर दिया गया, मुझे क्या NoSQL डेटाबेस का उपयोग करना चाहिए?

उत्तर

1

इस बिंदु पर उत्तर कोई नहीं है, मुझे डर है।

आप अपने रिलेशनल मॉडल को केवल कुंजी-मूल्य स्टोर डिज़ाइन में शामिल नहीं कर सकते हैं और उम्मीद करते हैं कि यह 1: 1 मैपिंग हो।आपने जो कहा है उससे ऐसा लगता है कि आप इसमें शामिल हो गए हैं, उनमें से कुछ रिकर्सिव हैं, यानी एक ही पंक्ति से दूसरी पंक्ति का संदर्भ लें।

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

इसके अलावा, ध्यान रखें - गैर-संबंधपरक डेटाबेस स्केलेबिलिटी के लिए डिज़ाइन किए गए थे - प्रदर्शन नहीं! यदि आपके पास हजारों उपयोगकर्ता और सर्वर फार्म नहीं हैं तो पारंपरिक संबंधपरक डेटाबेस वास्तव में आपके लिए बेहतर काम कर सकता है।

+2

आप भ्रमित नहीं हैं NoSQL और कुंजी-मूल्य डेटास्टोर। ग्राफ़ डेटाबेस (नियो 4 जे) और ओओ डेटाबेस (डीबी 4o) जैसे नोएसक्ल डेटाबेस हैं जो कुंजी-मूल्य डेटास्टोर नहीं हैं। वे शक्तिशाली संबंधपरक तंत्र प्रदान करते हैं। –

+0

@ वाजिफ: ईमानदारी से, मैं वास्तव में नाम NoSQL (या गैर-संबंधपरक) नाम से नापसंद करता हूं क्योंकि यह परिभाषित करता है कि यह क्या है इसके बजाए यह नहीं है। एक ही तर्क के बाद मुझे लगता है कि पुरानी शैली वाली फाइल सिस्टम को नोएसक्यूएल कहा जा सकता है क्योंकि यह एसक्यूएल या रिलेशनल नहीं है। ओटीओएच, आप ग्राफ डेटास्टोर के बारे में सही हैं, मैंने इसके बारे में सोचा नहीं था। –

+0

खैर, हमारे पास नास्तिक हैं जो उनके पास जो कुछ नहीं है, उसके अनुसार परिभाषित किया गया है। धर्म नास्तिकता का प्रभुत्व वाली दुनिया में एक वैध परिभाषा है। एसक्यूएल डेटाबेस द्वारा प्रभुत्व वाली दुनिया में मुझे लगता है कि नोएसक्ल का अर्थ है। –

8

मुझे लगता है कि आप "दस्तावेज़ डेटाबेस" की प्रकृति को गलत समझ सकते हैं। इस प्रकार, मैं मोंगोडीबी की सिफारिश करता हूं, जो एक दस्तावेज़ डेटाबेस है, लेकिन मुझे लगता है कि आपको यह पसंद आएगा।

मोंगोडीबी "दस्तावेज़" स्टोर करता है जो मूल रूप से जेएसओएन रिकॉर्ड हैं। ठंडा हिस्सा यह दस्तावेजों के आंतरिक दस्तावेजों को समझता है। तो इस तरह के एक दस्तावेज दिए गए:

{ 
    "name": "Gregg", 
    "fave-lang": "Scala", 
    "fave-colors": ["red", "blue"] 
} 

आप पर "fave-लैंग" या "fave-रंग" क्वेरी कर सकते हैं। आप उन क्षेत्रों में से किसी एक पर भी इंडेक्स कर सकते हैं, यहां तक ​​कि सरणी "फव-रंग" भी, जो संबंधपरक भूमि में कई से अधिक की आवश्यकता होगी।

Play एक मोंगोडीबी प्लगइन प्रदान करता है जिसका मैंने उपयोग नहीं किया है। आप Casbah driver for MongoDB का भी उपयोग कर सकते हैं, जिसे मैंने बहुत अच्छा उपयोग किया है और उत्कृष्ट है। Rogue मोंडो डीबी के लिए क्वेरी डीएसएल, फोरस्क्वेयर द्वारा लिखित यह भी देखने लायक है कि आपको मोंगोडीबी पसंद है या नहीं।

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

मोंगोडीबी पिछले कुछ वर्षों में आने वाली सबसे मजेदार तकनीकों में से एक है। उस शुभ शनिवार में मैंने इसे जांचने का फैसला किया और 15 मिनट के भीतर उत्पादक था और मुझे लगा कि मुझे "मिल गया"। मैं नियमित रूप से काम पर एक डेमो देता हूं जहां मैं लोगों को दिखाता हूं कि 15 मिनट में मोंगोडीबी और स्कैला के साथ कैसे शुरुआत करें और इसमें मोंगोडीबी स्थापित करना शामिल है। http://janxspirit.blogspot.com/2011/01/quick-webb-app-with-scala-mongodb.html

तुम बहुत कम से कम http://try.mongodb.org

है यही कारण है कि मिल गया मुझे शुरू कर दिया जाना चाहिए: बेशर्म प्लग यदि आप वेब सेवाओं में हैं, तो यहाँ MongoDB और Scalatra Casbah उपयोग करने के साथ शुरू हो रही है पर मेरे ब्लॉग पोस्ट है।

शुभकामनाएं!

+0

विवरण के लिए बहुत बहुत धन्यवाद। क्या एक उपयोगकर्ता ऑब्जेक्ट जैसे रिलेशनशिप के लिए मोंगोडब का इस्तेमाल किया जा सकता है, किसी अन्य उपयोगकर्ता ऑब्जेक्ट का मित्र है और कई संबंधों में से एक है? – ace

+0

हां, एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट को जोड़ने के लिए एक आम प्रारूप है, लेकिन आपको स्वयं लिंक का पालन करना होगा। एक रिलेशनल डेटाबेस में कोई भी शामिल नहीं है। –

2

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

प्रयास करें Neo4j http://neo4j.org/

यह मुक्त, खुला स्रोत है, लेकिन यह भी व्यावसायिक समर्थन और वाणिज्यिक लाइसेंस है, उत्कृष्ट प्रलेखन है और कई भाषाओं (REST इंटरफ़ेस) से पहुँचा जा सकता।

यह जावा में लिखा गया है, इसलिए आपके पास देशी पुस्तकालय हैं या आप इसे अपने जावा/स्कैला ऐप में एम्बेड कर सकते हैं।

+0

इस अंतर्दृष्टि के लिए धन्यवाद। क्या आप मुझे बता सकते हैं कि मेरे प्रोजेक्ट को ओपन सोर्स होने की आवश्यकता के बिना neo4j वाणिज्यिक उपयोग के लिए स्वतंत्र है? यह उनकी वेबसाइट से स्पष्ट नहीं था। – ace

+0

हां। यह नि: शुल्क है यदि आवेदन आंतरिक कंपनी के उपयोग के लिए है। लेकिन अगर आप वेब पर ग्राहकों की सेवा कर रहे हैं तो आपको या तो उस कोड को खोलना होगा, या वाणिज्यिक लाइसेंस खरीदना होगा। –

0

मोंगोडीबी या कैसेंद्र के संबंध में, अब आप (2016 2016, 5 साल देर से) longevityframework.org आज़माएं।

मानक स्काला मुहावरे जैसे केस क्लास, साथी ऑब्जेक्ट्स, विकल्प और अपरिवर्तनीय संग्रह का उपयोग करके अपना डोमेन मॉडल बनाएं। हमें अपने मॉडल के प्रकारों के बारे में बताएं, और हम दृढ़ता प्रदान करते हैं।

John Sullivan से "More Longevity Awesomeness with Macro Annotations!" देखें।
वह example on GitHub प्रदान करता है।

यदि आपने पहले दीर्घायु को देखा है, तो आप आश्चर्यचकित होंगे कि यह आपके डोमेन ऑब्जेक्ट्स को जारी रखने के लिए कितना आसान हो गया है। और सबसे अच्छा हिस्सा यह है कि हर चीज से संबंधित दृढ़ता एनोटेशन में दूर हो जाती है। आपकी डोमेन कक्षाएं पूरी तरह से दृढ़ता से संबंधित हैं, आपके डोमेन मॉडल को पूरी तरह व्यक्त कर रही हैं, और आपके आवेदन के सभी हिस्सों में उपयोग के लिए तैयार हैं।

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