Mongodb: उपयोग करने से पहले क्या जानना चाहिए? [बन्द है]


93

मैं रूबी ऑन रेल्स का उपयोग करके एक शौक (गैर-राजस्व) परियोजना शुरू कर रहा हूं। मैंने Postgresql का उपयोग करते हुए रेल में उचित मात्रा में विकास किया है, और मैं सामान्यीकृत स्कीमा की बहुत अच्छी नकल कर सकता हूं। हालांकि, मोंगरोड चमकदार और नया दिखता है। एक शौक परियोजना की तुलना में कुछ नया करने के लिए बेहतर क्या है?

जब आप मोंगोडब का उपयोग करना शुरू करते हैं तो वापस सोचें। आपने बाद में जो तकनीकें सीखीं, उससे आप कहते हैं, "अगर केवल मैं जानता था कि मैंने कब शुरू किया!" क्या प्लग-इन आपको पता चला कि आपने शुरू से ही सही इस्तेमाल किया होगा, अगर केवल आप जानते थे? आपने किन संदर्भों को बुकमार्क किया होगा?

जवाबों:


63

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

यदि आप रेल के बाहर काम कर रहे हैं, तो मैं MongoMapper से दूर रहने की सलाह दूंगा। क्योंकि यह एसक्यूएल-समर्थित ओआरएम से जो हम उम्मीद करते हैं, वैसा ही मोंगोबीडी में काम कर रहा है, यह वास्तव में आपको मोंगोडीबी के पीछे और अलग सोच की शक्ति का अच्छा विचार नहीं देता है। निचले-स्तर के रूबी चालक के साथ खेलने में कुछ समय बिताएं, और यहां तक ​​कि जावास्क्रिप्ट कंसोल में भी।

दूसरी बात जो मैं सुझाऊँगा, ख़ासकर जब से आपने एक स्कीमा को सामान्य करने का तरीका जाना है, तो अब तक के डेटाबेस के रूप में मोंगोबडी के बारे में नहीं सोचना चाहिए। जिस तरह से आप अपने डेटा को MongoDB में व्यवस्थित करते हैं वह एक अलग डेटाबेस से संबंधित है। रूबी हैश को स्टोर करने और पुनः प्राप्त करने के स्थान के रूप में इसके बारे में अधिक सोचने की कोशिश करें। आप MongoDB के साथ कुछ संबंधपरक बातें कर सकते हैं, लेकिन मैं बिना किसी एसक्यूएल के अपने सिर को लपेटने की कोशिश करते समय केवल स्व-निहित दस्तावेजों के साथ चिपके रहने की सलाह दूंगा।

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


26

मैं लगभग उसी अवस्था में हूं जो आप हैं। MongoDB के साथ एक नई परियोजना शुरू करना। मैं लगभग 7 सप्ताह का अनुभव कर रहा हूं। यह वही है जो मैंने बहुत उपयोगी पाया है:

Mongomapper के बजाय Mongoid का उपयोग करें

http://mongoid.org/

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

कल, मोंगॉयड के एक नए प्रमुख संस्करण के लिए रिलीज उम्मीदवार को जारी किया जाएगा। यह बहुत सारी उपयोगी चीजें लाने वाला है।

मैं रेल का उपयोग कर रहा हूँ 3. विकास संस्करण को स्थापित करने के लिए इसे अपनी मणि फ़ाइल में जोड़ें:

मणि 'मोंगॉयड', "~> 2.0.0.beta"

वर्तमान बीटा 20 है, लेकिन जैसा कि मैंने कहा, कल रिलीज होने वाला उम्मीदवार है।

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

दो शब्दों में: महान समुदाय।

इस प्लगइन है कि आप mongo के साथ मशीन का उपयोग करने के लिए सक्षम बनाता है:

https://github.com/nmerouze/machinist_mongo

बहुत अच्छा काम करता है।

gem 'machinist_mongo', :require => 'machinist/mongoid', 
:git => 'http://github.com/nmerouze/machinist_mongo.git',
:branch => 'machinist2'

आप माचिसिस्ट के साथ फोर्जरी का उपयोग कर सकते हैं। बहुत बढ़िया मिश्रण।

https://github.com/sevenwire/forgery

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

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

यह GridFS का उपयोग करके किया जाता है। http://www.mongodb.org/display/DOCS/GridFS

Mongoid उस मास्टर-दास कॉन्फिग का समर्थन करता है।

यदि आपको अधिक जानकारी चाहिए तो मुझसे पूछें।

संपादित करें:

इसके अलावा: http://railscasts.com/episodes/238-mongoid


8

1. इसके मामले के प्रति संवेदनशील न होना

eq

"_id": "1da259c70fe3392c3b000002",
"name": "Dany"

array('name' => 'dany') :: results 0
array('name' => 'Dany') :: results 1

2. अंतिम आईडी डालें:

$coll->insert($user, true);
echo (string) $user['_id'];

3. _id एक MongoId ऑब्जेक्ट है

आईडी द्वारा खोजें:

$p->findOne(array('_id' => new MongoId( $UID  )), array('proj'));

दिखाएँ _id:

$coll['_id'] = ( string ) $coll['_id'];

इसके अलावा _id केवल संग्रह प्रति अद्वितीय है, अन्य सर्वर पर अलग हो सकता है

4. MongoDB में LIMIT, OFFSET, ORDER का समर्थन है

कुछ अग्रिम छँटाई के लिए आप एकत्रीकरण फ्रेमवर्क का उपयोग कर सकते हैं।

5. SQL में MongoDB में Sql इंजेक्शन Array इंजेक्शन है

इसलिए जब कुछ डेटा उपयोग (स्ट्रिंग) या चेक is_array लिखें

$req = (string) $range['name'];

6. एचडीडी डॉस

डिफ़ॉल्ट _POST का आकार PHP में 8MB है, IN Mongo में प्रति दस्तावेज 16MB की सीमा है। तो कल्पना कीजिए कि कुछ उपयोगकर्ता स्पेक आप USER_AGENT STRING को एनालिटिकल स्क्रिप्ट में लिखेंगे और फिर 16MB प्रति सिंगल इंसर्ट भेजेंगे।

7. MongoDb के साथ अतीत में कुछ समस्याएं थीं लेकिन अभी 3.0 बहुत सुंदर और स्थिर है।


3

यहाँ .NET रॉक से MongoDb पॉडकास्ट के लिए एक महान शुरुआत / परिचय है -

http://www.dotnetrocks.com/default.aspx?ShowNum=507

माइक डीरोलफ का इंटरव्यू लिया जाता है ... वह MongoDb प्रोजेक्ट पर काम करता है। ओह, और ध्वनि की गुणवत्ता उत्कृष्ट है।

माइक दिरोलफ 10gen में एक सॉफ्टवेयर इंजीनियर है, जहां वह MongoDB प्रोजेक्ट पर काम करता है। वह मुख्य रूप से पायथन और रूबी के लिए क्लाइंट ड्राइवरों पर काम करता है, लेकिन MongoDB के बारे में बात करने के लिए भी समय निकालता है - उसने यूरोपिथॉन, स्ट्रेंज लूप कॉन्फिडेंट, रूबीनेर्ल्स, RuPy और रूबिकॉफ के साथ-साथ न्यूयॉर्क शहर, लंदन, वाशिंगटन में प्रस्तुत किया। डीसी और सैन फ्रांसिस्को।


2

आपको निश्चित रूप से junemakers mongo-mapper पर एक नज़र डालनी चाहिए: http://github.com/jnunemaker/mongomapper लेकिन मैं आपको शुद्ध रूबी मोंगो ड्राइवर के साथ थोड़ा सा खेलने की सलाह देता हूं यह देखने के लिए कि कैसे मूंग-मोपर हुड के नीचे काम करता है। रूबी का उपयोग करके कुछ डेटा को मोंगो डेटाबेस में डालना बहुत कठिन नहीं है।

मुझे लगता है कि आपको पहले से ही रूबी मानगो ट्यूटोरियल मिल गया था। यदि आपने ऐसा नहीं किया है, तो यहाँ लिंक है: http://www.mongodb.org/display/DOCS/Ruby+point/


मानो या न मानो, कि मैं पढ़ने के लिए कतारबद्ध लिंक में नहीं था, और यह एक अच्छा लग रहा है। धन्यवाद।
वेन कॉनराड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.