NoSQL (MongoDB) बनाम ल्यूसीन (या सोलर) आपके डेटाबेस के रूप में


280

दस्तावेज़ आधारित डेटाबेस पर आधारित NoSQL आंदोलन बढ़ने के साथ, मैंने हाल ही में MongoDB को देखा है। मैंने "दस्तावेज़" के रूप में आइटम का इलाज करने के तरीके के साथ एक हड़ताली समानता पर ध्यान दिया है, जैसे ल्यूसिन करता है (और सोल के उपयोगकर्ता)।

तो, सवाल: आप अपने "डेटाबेस" के रूप में ल्यूसिन (या सोलर) पर नोएसक्यू (मोंगोडीबी, कैसेंड्रा, काउचबडी, आदि) का उपयोग क्यों करना चाहेंगे?

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

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

जब आप MongoDB के समान डेटा भंडारण और स्केलेबिलिटी के बारे में बात कर रहे हों, तो आप वेल-स्पीड या मेकैच्ड जैसे आउट-ऑफ-द-कैश कैश प्रदाताओं की तुलना में भी फेंक सकते हैं।

MongoDB के आसपास प्रतिबंध मुझे MemCached का उपयोग करने की याद दिलाता है, लेकिन मैं Microsoft के वेग का उपयोग कर सकता हूं और MongoDB (मुझे लगता है) पर अधिक समूहन और सूची संग्रह शक्ति है। स्मृति में कैशिंग डेटा की तुलना में कोई तेज़ या स्केलेबल नहीं मिल सकता है। यहां तक ​​कि ल्यूसीन के पास एक मेमोरी प्रदाता है।

MongoDB (और अन्य) के कुछ फायदे हैं, जैसे कि उनके एपीआई के उपयोग में आसानी। एक दस्तावेज़ को नया करें, एक आईडी बनाएं, और इसे स्टोर करें। किया हुआ। अच्छा और आसान।



4
धन्यवाद, लेकिन यह मेरे सवाल का जवाब नहीं देता है: जो है, मैं अपने डेटाबेस के लिए ल्यूसिन के बजाय मोंगोडीबी का उपयोग क्यों करूंगा? वे दोनों दस्तावेजों को संभालते हैं, लेकिन ल्यूसीन के पास कुछ बहुत शक्तिशाली खोज विकल्प हैं। हालांकि संबंधित प्रश्न खोजने के लिए +1। मैं Stackoverflow पर कई बार खोज करता हूं, और एक निकट तुलना के साथ नहीं आया।
eduncan911

आप Lucene का उपयोग कैसे कर रहे हैं कि यह MongoDB के समान कार्यक्षमता प्रदान करता है? क्या आप इसे स्टोरेज के लिए रिलेशनल डीबी से जोड़ रहे हैं?
फिलिप टिननी

1
@ प्रदीप: यह एक काल्पनिक सवाल है। क्यों अपने दस्तावेज़ भंडारण के रूप में Lucene का उपयोग न करें? आपको बहुत अधिक खोज शक्ति और स्केलेबिलिटी मिलती है (जब सोलर के साथ मिलाया जाता है, तो ल्यूसीन का उपयोग करना आसान हो जाता है)।
eduncan911

जवाबों:


250

यह एक महान सवाल है, कुछ मैंने काफी हद तक विचार किया है। मैं सीखे गए अपने पाठों को संक्षेप में प्रस्तुत करूंगा:

  1. आप आसानी से बहुत सारी स्थितियों के लिए MongoDB के बदले में Lucene / Solr का उपयोग कर सकते हैं, लेकिन इसके विपरीत नहीं। ग्रांट इंगरसोल की पोस्ट ने इसे यहाँ प्रस्तुत किया।

  2. MongoDB आदि एक ऐसे उद्देश्य की पूर्ति करते प्रतीत होते हैं, जहाँ खोज और / या पहलू की आवश्यकता नहीं होती है। यह RDBMS दुनिया से डिटॉक्स करने वाले प्रोग्रामर के लिए एक सरल और यकीनन आसान संक्रमण प्रतीत होता है। जब तक किसी ने इसे इस्तेमाल नहीं किया तब तक ल्यूसीन एंड सोलर के पास एक स्टेटर लर्निंग कर्व है।

  3. एक डेटासोर के रूप में ल्यूसीन / सोलर का उपयोग करने के कई उदाहरण नहीं हैं, लेकिन गार्जियन ने कुछ हेडवे बनाए हैं और इसे एक उत्कृष्ट स्लाइड-डेक में संक्षेपित किया है , लेकिन वे भी सोलर बैंडवागन पर पूरी तरह से कूदने और सोलर के संयोजन की "जांच" कर रहे हैं CouchDB के साथ।

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

सारांश: यदि आपके पास खोज की आवश्यकता नहीं है, तो मोंगो एक सरल और शक्तिशाली दृष्टिकोण प्रदान करता है। हालाँकि, यदि खोज आपकी पेशकश के लिए महत्वपूर्ण है, तो आप एक टेक (सोल्र / ल्यूसीन) से चिपके रहना बेहतर समझ सकते हैं और इससे निकलने वाले हेक का अनुकूलन कर सकते हैं - कम गति वाले हिस्से।

मेरे 2 सेंट, आशा है कि मदद की।


10
Solr की कार्यक्षमता कम करने वाला कोई नक्शा नहीं है। इसलिए रिपोर्टिंग, आंकड़े, अंकों की गणना आदि संभव नहीं है! Solr का उपयोग केवल तभी करें जब आपके पास अपने डेटा को टेक्स्ट डेटा के रूप में धमकी दे सकता है
रोलांड कोफ़्लर

8
सोलर में बिल्ट-इन मैप कम नहीं है, लेकिन आप हडोप के साथ संयोजन कर सकते हैं। आर्किटेक्ट्स
.zone.com

6
मानचित्र-घटाएँ नहीं, लेकिन इसमें कई सोल सर्वरों के समानांतर एक क्वेरी चलाने और उन परिणामों को एकत्र करने की क्षमता है। इसलिए जब इसका सामान्य उद्देश्य मानचित्र-कम नहीं होता है, तो यह पहले ही लिखा जा चुका है कि आप मानचित्र-कम के साथ क्या लिख ​​रहे हैं जो समानांतर खोज क्वेरी है।
चूबसॉन्डब्स

@Roo: क्या यह एक मुख्य DB के रूप में Lucene का उपयोग करने और किसी तरह MongoDB के साथ कुल सूचकांक बनाने का विकल्प होगा? या इसका कोई मतलब नहीं है? और मिकोस: वास्तविक दुनिया के अनुभव के उल्लेख के लिए शानदार उत्तर और +1।
डेसपेयर का गुनगान

2
solr6 से यह समानांतर भावों के साथ मानचित्र कम करने की कार्यक्षमता का समर्थन करता है
दिव्यांग शाह

36

आप सॉल्व में किसी दस्तावेज़ को आंशिक रूप से अपडेट नहीं कर सकते। किसी दस्तावेज़ को अपडेट करने के लिए आपको सभी फ़ील्ड पुनः पोस्ट करने होंगे।

और प्रदर्शन मायने रखता है। यदि आप प्रतिबद्ध नहीं हैं, तो सॉल में आपका परिवर्तन प्रभावी नहीं होता है, यदि आप हर बार प्रतिबद्ध होते हैं, तो प्रदर्शन प्रभावित होता है।

सोल में कोई लेन-देन नहीं है।

जैसा कि सोलर में ये नुकसान हैं, कुछ बार नोसक्ल बेहतर विकल्प है।


13
MongoDB में लेन-देन भी नहीं है।
user183037

1
Solr या Lucene की रियलटाइम खोज है, इसलिए कमिट करना कोई समस्या नहीं है।
मिहानिक

1
@ user183037 MongoDB में एक दस्तावेज़ के भीतर किसी भी अद्यतन परमाणु है। और FYI करें, Lucene का लेन-देन (आपके अर्थ में) या तो नहीं है
अरविंद यारम

48
यह उत्तर गलत हो गया है। Solr 4+ आंशिक अपडेट का समर्थन करता है, और "पुराने-शैली" के अधिकांश मुद्दों के साथ सॉफ्ट कमिट / निकट वास्तविक समय को दूर करता है।
मौरिसियो शेफ़र

1
उन्होंने MongoDB 4.
जोनास

26

हम MongoDB और Solr का एक साथ उपयोग करते हैं और वे अच्छा प्रदर्शन करते हैं। आप यहाँ पर मेरी ब्लॉग पोस्ट पा सकते हैं, जहाँ मैंने बताया कि कैसे हम इस तकनीक का एक साथ उपयोग करते हैं। यहाँ एक अंश है:

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


3
अच्छा ब्लॉग पोस्ट। हां, यह ठीक इसी तरह है कि मैंने पुराने SQL और MySql डेटास्टोर्स (Lucene में ID को संग्रहीत करना और डेटास्टोर से जटिल प्रकारों को पुनर्प्राप्त करना) के साथ अतीत में Lucene का उपयोग किया है। तकनीकी रूप से, हालांकि, यह सवाल दोनों के बीच के अंतर का पता लगाने के लिए था - न कि कैसे "दोनों दुनिया के सर्वश्रेष्ठ" का उपयोग करने के लिए। +1 इसे इस तरह से उपयोग करने के लिए, क्योंकि यह वास्तव में डेटा का बड़े पैमाने पर उपयोग करने का एकमात्र वास्तविक तरीका है।
eduncan911

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

2
क्या आपको याद है (अब 1.5 साल बाद) लगभग सोलर डेटाबेस का आकार जब क्वेरी प्रदर्शन इतना कम हो गया था तो आप मोंगोडीबी को जोड़ने के बारे में सोचने लगे? (यह 10,000 दस्तावेज़ या 10,000,000 डॉक्स था?)
KajMagnus

बहुत मददगार। मैं जीआईएस में काम करता हूं और इसलिए इस तरह से स्थानिक खोज के साथ पूर्ण-पाठ को संयोजित करने में सक्षम होना बहुत ही पेचीदा है। हम पहले से ही MongoDB और Postgres का उपयोग करते हैं, और मैं कुछ समय से Solr के बारे में सोच रहा था।
जॉन पॉवेल

2
@ParvinGasimzade ब्लॉग पोस्ट लिंक काम नहीं कर रहा है। क्या आप कृपया कोई अन्य लिंक या स्रोत प्रदान कर सकते हैं?
विस्मृति

24

कृपया यह भी ध्यान दें कि कुछ लोगों ने Solr / Lucene को Mongo में एकीकृत किया है।

इस हाइब्रिड दृष्टिकोण के साथ आप वास्तव में दोनों दुनिया के सर्वश्रेष्ठ क्षमताओं के साथ हो सकते हैं जैसे कि पूर्ण पाठ खोज और एक विश्वसनीय डेटास्टोर के साथ तेजी से पढ़ता है जिसमें धमाकेदार लेखन गति भी हो सकती है।

यह सेटअप के लिए थोड़ा तकनीकी है लेकिन इसमें बहुत सारे ओप्लोग टेलर्स हैं जो सोल में एकीकृत हो सकते हैं। देखें कि इस लेख में रेंजरसन ने क्या किया।

http://denormalised.com/home/mongodb-pub-sub-using-the-replication-oplog.html


अगर मैं आपको सही तरीके से समझाऊं, तो आप जिस कारण से MongoDB (Solr के अलावा) का उपयोग करते हैं, क्या यह है कि MongoDB में तीव्र सम्मिलन + गति है? क्या आपने यह भी संकेत दिया कि MongoDB में अधिक विश्वसनीय डेटास्टोर है? (या आप सोल का उल्लेख कर रहे थे?) - आपने शुरुआत में क्या किया था? केवल MongoDB, केवल Solr, या दोनों Mongo + Solr?
काजमग्नस

12

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

और यहां जहां ल्यूसीन / सोलर बड़े समय तक रहता है, विशेष रूप से फ़िल्टरैविक कैशिंग के साथ, प्रदर्शन उत्कृष्ट है।


10

चूँकि किसी और ने इसका उल्लेख नहीं किया है, मुझे यह जोड़ने दें कि MongoDB स्कीमा-कम है, जबकि सोल एक स्कीमा लागू करता है। इसलिए, यदि आपके दस्तावेज़ों के क्षेत्र बदलने की संभावना है, तो सोलर के ऊपर MongoDB चुनने का एक कारण है।


6
वह IMHO बिलकुल सत्य नहीं है। Solr में एक स्कीमा होता है जैसा कि परिभाषित किया गया है schema.xml, लेकिन इसके पास 'डायनेमिक फ़ील्ड' भी होते हैं, अर्थात ऐसे फ़ील्ड जिनका प्रकार वाइल्ड कार्ड के माध्यम से निर्धारित किया जाता है, इसलिए आप सभी फ़ील्ड्स *_iको पूर्णांक फ़ील्ड के रूप में अनुक्रमित , कह सकते हैं । जब दस्तावेज़ जोड़ने, तो आप जैसे क्षेत्रों conaining दस्तावेज हो सकता है count_i, foo_i, bar_iमें प्रदर्शित होने के बिना है कि सभी पूर्णांक क्षेत्रों के रूप में समझा जाता है schema.xmlसचमुच। बहुत स्कीमा-कम, मैं कहूँगा। अधिक देखने के लिए youtube.com/watch?v=WYVM6Wz-XTw देखें ।
प्रवाह करें

मुझे वापस आना होगा और इसे +1 करना होगा, क्योंकि यह सच है - सोलर में स्कीमा परिवर्तन हमेशा अन्य डेटा स्टोर के साथ सिंक में रखने के लिए एक PITA में रहा है।
19un में eduncan911

4
सोलर में एक विशेषता है जो स्कीमा या नो-स्कीमा का समर्थन करती है!
क्रुणाल

5

@ mauricio-scheffer ने Solr 4 का उल्लेख किया है - इसमें रुचि रखने वालों के लिए, LucidWorks Solr 4 को "NoSQL खोज सर्वर" के रूप में वर्णित कर रहा है और http://www.lucidworks.com/webinar-snr-4-the-nosql पर एक वीडियो है -search-server / जहाँ वे NoSQL (ish) सुविधाओं पर विस्तार से जाते हैं। (-इश वास्तव में एक गतिशील स्कीमा होने के अपने संस्करण के लिए है।)


1

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


1

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

  • मोंगो c ++, ल्यूसिन / सॉल जावा हैं
    • हो सकता है कि ल्यूसिन कुछ मोंगो लिबास का उपयोग कर सके
    • शायद मोंगो कुछ ल्युकेन एल्गोरिदम को फिर से लिख सकता है, यह भी देखें:
  • ल्यूसिन विभिन्न डॉक्टर प्रारूप का समर्थन करता है
    • मोंगो JSON (BSON) पर केंद्रित है
  • ल्यूसीन अपरिवर्तनीय दस्तावेजों का उपयोग करता है
    • एकल फ़ील्ड अपडेट एक समस्या है, यदि वे उपलब्ध हैं
  • ल्यूसीन इंडेक्स जटिल मर्ज ऑप्स के साथ अपरिवर्तनीय हैं
  • मोंगो क्वेरीज़ जावास्क्रिप्ट हैं
  • मोंगो में कोई पाठ विश्लेषक / टोकनधारक नहीं है (AFAIK)
  • मोंगो डॉक का आकार सीमित है, जो अनाज के लिए लूसेन के खिलाफ जा सकता है
  • मोंगो एकत्रीकरण ऑप्स में ल्यूसिन की कोई जगह नहीं हो सकती है
    • लुसीने के पास डॉक्स में फ़ील्ड्स को संग्रहीत करने के विकल्प हैं, लेकिन यह एक ही बात नहीं है
    • सॉल किसी तरह एकत्रीकरण / आँकड़े और एसक्यूएल / ग्राफ़ क्वेरी प्रदान करता है

0

MongoDB Atlas में जल्द ही एक ल्यूसीन आधारित खोज इंजन होगा। इस सप्ताह के MongoDB विश्व 2019 सम्मेलन में बड़ी घोषणा की गई थी। यह उनके उच्च राजस्व MongoDB Atlas उत्पाद के अधिक उपयोग को प्रोत्साहित करने का एक शानदार तरीका है।

मैं इसे MongoDB एंटरप्राइज संस्करण 4.2 में देखने की उम्मीद कर रहा था, लेकिन इसे उनके ऑन-प्रिमाइसेस लाइन पर लाने की कोई खबर नहीं है।

अधिक जानकारी यहाँ: https://www.mongodb.com/atlas/full-text-search

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