कैसेंड्रा के साथ एलाटिसिस बनाम कैसेंड्रा


110

मैं NoSQL सीख रहा हूं और अपने ग्राहक की आवश्यकताओं के लिए विभिन्न विकल्पों को देख रहा हूं। मैं इस सवाल को रखने से पहले विभिन्न संसाधनों से गुजरा हूं (NoSQL में थोड़ा ज्ञान रखने वाला व्यक्ति)

  • मुझे तेज दर पर डेटा संग्रहीत करने और डेटा पढ़ने की आवश्यकता है।
  • पूरी तरह से विफल-सुरक्षित और आसानी से स्केलेबल।
  • Analytics के डेटा के माध्यम से खोजने में सक्षम।

मैं एक छोटी सूची के साथ समाप्त हुआ: Cassandra and Elasticsearch

जैसा कि मैं समझता हूं कि कैसंड्रा मेरे लिए एक पूर्ण NoSQL भंडारण समाधान है, क्योंकि मैं डेटा लिख ​​सकता हूं और इंडेक्स का उपयोग करके डेटा पढ़ सकता हूं। जहां यह विफल रहता है या यह विफल हो सकता है वह Analytics पर है। भविष्य में, यदि मैं डेटा से from_date to to_dateया एनालिटिक्स के लिए डेटा प्राप्त करने के लिए और अधिक तरीकों से डेटा प्राप्त करना चाहता हूं , अगर मैं डेटा मॉडल को ठीक से डिज़ाइन नहीं करता हूं या दीर्घकालिक दृष्टि रखता हूं, जो कभी बदलती दुनिया में काफी कठिन हो सकता है।

जबकि Elastic Searchअनुक्रमण (ल्यूसिन द्वारा समर्थित) में सबसे अच्छा है, और कुछ यादृच्छिक पाठ फेंककर डेटा को यादृच्छिक रूप से खोज सकते हैं। लेकिन क्या यह उसी के लिए भी काम करता है, भले ही मैं डेटा पुनर्प्राप्त करना चाहता from_date to to_dateहूं (मुझे उम्मीद है कि यह हो सकता है)। लेकिन असली सवाल यह है कि क्या यह कैसंड्रा की तरह सर्च इंजन या परफेक्ट NoSQL डेटा स्टोरेज है? यदि हाँ, तो हमें अभी भी कैसंड्रा की आवश्यकता क्यों है?

यदि ये दोनों अलग-अलग दुनिया में हैं, तो कृपया समझाएं! अधिक प्रभावी समाधान प्राप्त करने के लिए हम उन्हें कैसे संयोजित करते हैं?


2
आपको डीएसई सर्च = कैसंड्रा + सोलर इंटीग्रेटेड = दोनों दुनियाओं में से सबसे अच्छा विचार करना चाहिए: सोलर की खोज शक्ति द्वारा संचालित भंडारण के लिए एक स्केलेबल डीबी।
बेरेंग

1
@Bereng, मुझे लगता है कि DSE वाणिज्यिक है और हम वाणिज्यिक सॉफ्टवेयर्स की देखभाल नहीं कर रहे हैं।
रेड्डी

3
यदि आप नेट रेवेन्यू <$ 2 मिलियन (यूएस) के साथ स्टार्टअप हैं, तो वे आपको डीएसई को नि: शुल्क (कम से कम एक या दो साल के लिए) उपयोग करने देंगे।
आरोन

जवाबों:


150

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

हमने वही सवाल (खुद का) पूछा है ... "हमें एलाटेसिकसर्च से सब कुछ क्यों नहीं मिलता है?"

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

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

एनालिटिक्स के रूप में, मुझे अधिक जटिल OLAP प्रश्नों की सेवा के लिए, कैसंड्रा स्पार्क कनेक्टर का उपयोग करने में कुछ सफलता मिली है। उम्मीद है की वो मदद करदे।

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

मैंने ऐसे ही एक प्रश्न का नया उत्तर लिखा है:

ElasticSearch बनाम ElasticSearch + Cassandra


24
किसी के बीच अंतर पर विस्तृत कर सकते हैं क्वेरी करने और खोज डेटा?
Dror

21
उदाहरण के लिए, यदि आप अपने डेटा की आईडी (ओं) को जानते हैं, तो आप इसे (कैसेंड्रा) के लिए पूछते हैं और यदि आप अपने डेटा की आईडी (एस) को नहीं जानते हैं, तो आप इसके लिए खोज करते हैं / उन्हें (लोचदार खोज)।
आर्सेनिक

2
@ यह सब आपके डेटा के आकार और आपके प्रश्नों की जटिलता पर निर्भर करता है। सिद्धांत में इलास्टिक यह सब कर सकता है। हालाँकि, मैं कासांद्रा पर भरोसा करूंगा कि इलास्टिक की तुलना में बड़े डेटा सेट (प्रश्नों के लिए) का समर्थन करने के लिए स्केलिंग का एक बेहतर काम करना होगा, खासकर यदि आप बहु-क्षेत्र / डीसी का समर्थन कर रहे हैं।
हारून

1
@Aaron ... बड़े डेटासेट का समर्थन करने के लिए स्केलिंग है जो इन दोनों इंजनों को अच्छी तरह से करता है। हमारा संगठन एक प्राथमिक डेटाबेस के रूप में लोचदार खोज का उपयोग करता है, इंजन, एनालिटिक्स टूल को अलर्ट करता है, और अब यह कि xpack मशीन सीखने का समर्थन करता है; यह हमारे एज IOT के आसपास व्यावसायिक आँकड़े भी प्रदान करता है।
एंथनीजलिंक

1
@ प्रश्न पूछें असली सवाल!
माइक इज़्ज़ती

32

कैसेंड्रा + ल्यूसिन एक बढ़िया विकल्प है। इस मुद्दे के लिए विभिन्न पहलें हैं, उदाहरण के लिए:

  • स्ट्रैटो का कैसेंड्रा ल्यूसिने इंडेक्स - स्ट्रैटो कैसेंड्रा से व्युत्पन्न, अपाचे कैसेंड्रा के लिए एक प्लगइन है जो इसकी सूचकांक कार्यक्षमता का विस्तार करता है। ( https://github.com/Stratio/cassandra-lucene-index )
  • स्ट्रैटो कैसेंड्रा, यह अपाचे ल्यूसीन के साथ एक देशी एकीकरण है, यह बहुत दिलचस्प है। ( https://github.com/Stratio/stratio-cassandra ) - यह अनुपात स्ट्रैस कैसेंड्रा ल्यूसिन इंडेक्स के क्षेत्र में घोषित किया गया है।
  • Tuplejump Calliope, यह Stratio Cassandra की तरह है, लेकिन यह कम सक्रिय है। ( https://github.com/tuplejump/stargate-core )
  • डेटासैक्स द्वारा डीएसई सर्च। यह अपाचे सोलर के साथ कैसेंड्रा का उपयोग करने की अनुमति देता है, लेकिन यह एक मालिकाना विकल्प है। ( http://www.datastax.com/what-we-offer/products-services/datastax-enterprise )

एक बात ध्यान में रखें, 2.1 में आप अब एक कस्टम इंडेक्सर में "ड्रॉप इन" कर सकते हैं ... इसलिए उदाहरण के लिए आप यह सोच सकते हैं कि Statio C * के अपने कांटे के साथ क्या कर रहा है लेकिन mainline C * से दूर। मुझे ऐसा करने के किसी भी व्यापक प्रयास के बारे में पता नहीं है, लेकिन मैं ल्यूसीन के सूचकांकों को सी * में इस तरह से छोड़ने की योजना बना रहा हूं। अधिक जानकारी के लिए: issues.apache.org/jira/browse/CASSANDRA-8717
evanv

8

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

मेरा मामला डेटा एनालिटिक्स था। इसलिए मैंने लोचदार खोज में अपने बहुत से लाटियों को संरक्षित किया क्योंकि बाद में मैं डेटा के माध्यम से बहुत कुछ देखना चाहता था कि यह देखने के लिए कि अगला चरण क्या होना चाहिए। अगर मैं अपनी विश्लेषणात्मक पायलटों में डेटा के स्कीमा में बहुत सारे बदलाव करना चाहता था तो मैंने कैसेंड्रा का उपयोग किया होगा।

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


4

कैसंड्रा और इलास्टिकसर्च के संयोजन में डेटा संग्रहीत करना आपको सबसे अधिक कार्यक्षमता प्रदान करता है। यह आपको कुंजी-मूल्य तालिकाओं को देखने की अनुमति देता है, और आपको अनुक्रमित में डेटा खोजने की अनुमति भी देता है।

संयोजन आपको बहुत लचीलापन देता है, आपके आवेदन के लिए आदर्श है।


4

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


1

हमने एक एप्लिकेशन विकसित किया था, जहां हमने एलिटेसर्च और कैसंड्रा का उपयोग किया था। इसी तरह के डेटा को कैसंड्रा में संग्रहित किया गया था और इसे एलीस्टिक्स खोज में अनुक्रमित किया गया था।

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

कैसेंड्रा एलिस्टिक्स खोज के लिए "सत्य का स्रोत" के रूप में कार्य कर रहा था। ऐसे मामलों में, जहां ES इंडेक्स की रीइन्डेक्सिंग आवश्यक थी, हमने कैसेंड्रा को क्वेर किया और ईएस में डेटा को रीइन्डेक्स किया।

इस समाधान ने हमारी मदद की, क्योंकि यह स्केल करना बहुत आसान था और खोज और एकत्रीकरण बहुत तेज़ थे।


0
  • जैसा कि इलास्टिक्स खोज ल्यूसिन इंडेक्स पर बनाया गया है और यदि आप इलास्टिक्सिंग में इंडेक्सिंग को स्टोर करना चाहते हैं तो यह डेटा को पुनः प्राप्त करने के लिए कैसेंड्रा में इंडेक्सिंग की तुलना में सबसे अच्छा प्रदर्शन करता है।
  • यदि आपकी आवश्यकताएं वास्तविक समय की पुनर्प्राप्ति से संबंधित नहीं हैं, तो आप इलास्टिक्स खोज को NoSQL डेटाबेस के रूप में भी उपयोग कर सकते हैं, ऐसे विचार हैं कि ElasticSearch लिखता है और स्कीमा परिवर्तन मुश्किल हैं, लेकिन यदि आपके डेटा की मात्रा बहुत बड़ी नहीं है। आप आसानी से एक खोज इंजन के रूप में इलास्टिक्स खोज कर सकते हैं सबसे अच्छा अनुक्रमण के साथ-साथ एनओएसक्यूएल डेटाबेस के रूप में इलास्टिसर्च। कई तरीके हैं जिनसे आप इसे रोक सकते हैं। मैंने इलास्टिक्स खोज में स्कीमा परिवर्तन पर काम किया है, यदि आपकी डेटा संरचना सुसंगत है तो यह कोई भी समस्या पैदा करेगा।
  • ElasticSearch या SOlr का समर्थक होना। मैंने दोनों खोज इंजनों पर काम किया है और मैंने अनुभव किया है कि यदि आप उन्हें सही तरीके से कॉन्फ़िगर करते हैं तो दोनों खोज इंजनों का धाराप्रवाह उपयोग किया जा सकता है।
  • केवल विपक्ष कि मैं इसके बारे में सोच सकता हूं, यदि आप वास्तविक समय परिणाम को लक्षित कर रहे हैं और अपनी प्रतिक्रिया में देरी को मिलीसेकंड नहीं कर सकते। तो फिर इसका बेहतर है कि अन्य NoSQL डेटाबेस जैसे cassandra या couchbase की मदद लें।
  • सॉलस्रा के साथ कैसंड्रा, इलास्टिक के साथ कैसेंड्रा से बेहतर काम करते हैं।

0

कैसंड्रा आईडी द्वारा डेटा प्राप्त करने में महान है । मुझे सेकंडरी इंडेक्स परफॉर्मेंस के बारे में ज्यादा जानकारी नहीं है, लेकिन मुझे संदेह है कि यह एलीटेसर्च की तरह तेज है। निश्चित रूप से जब यह पूर्ण पाठ खोज कार्यक्षमता ( पाठ विश्लेषण , प्रासंगिकता स्कोरिंग , आदि) की बात आती है, तो एलीटेसर्च जीतता है

कैसेंड्रा ने अपडेट प्रदर्शन पर भी जीत हासिल की । एलिटिक्स खोज अपडेट का समर्थन करती है, लेकिन एक अद्यतन वास्तव में एक परमाणु ऑपरेशन में एक रेनडेक्स + सॉफ्ट डिलीट है।

कैसेंड्रा का एक बहुत अच्छा प्रतिकृति मॉडल है (यदि आपको अतिरिक्त-असफल-सुरक्षित होने की आवश्यकता है)। इलास्टिक्सर्च ठीक है, भी, मैं उस शिविर में नहीं हूं जो कहता है कि ईएस विशेष रूप से अविश्वसनीय है (इसमें कभी-कभी सभी सॉफ़्टवेयर जैसे मुद्दे हैं)।

इलास्टिक्स की खोज में रियल-टाइम एनालिटिक्स के लिए एकत्रीकरण भी है । और क्योंकि खोजें इतनी तेज़ हैं, डेटा के सबसेट पर एनालिटिक्स भी तेज़ होंगे

यदि आपकी आवश्यकताओं को उनमें से एक द्वारा अच्छी तरह से संतुष्ट किया जाता है (जैसे कि ऐसा लगता है कि ईएस अच्छी तरह से काम करेगा), तो मैं सिर्फ एक का उपयोग करूंगा। यदि आपके पास दोनों दुनिया से आवश्यकताएं हैं, तो आप या तो कर सकते हैं:

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