2012-10-19 16 views
9

मैं सौर के लिए नया हूँ। मैं एक सर्वर बनाने की कोशिश कर रहा हूं जो डेटाबेस में संरचित डेटा संग्रहीत करता है, और जिसे सोलर/लुसीन का उपयोग करके खोजा जा सकता है। सर्वर को उच्च उपलब्धता के लिए किसी भी समान नोड्स में क्लस्टर किया जा सकता है।क्या कोई अपाचे सोलर इंडेक्स को डीबी के साथ लेनदेन के अनुरूप लेनदेन कर सकता है?

ऐसा लगता है कि मानक कॉन्फ़िगरेशन सोलर फ़ाइल सिस्टम पर फ़ाइल में इंडेक्स को संग्रहीत करता है। ऐसा लगता है कि स्थिरता और क्लस्टरिंग के साथ कुछ समस्याएं पेश होती हैं।

मैं सूचकांक को डीबी के साथ लेनदेन के अनुरूप कैसे बना सकता हूं? क्या इसे करने का कोई तरीका है? (उदाहरण के लिए एसएलआर इंडेक्स में काम करने के साथ समन्वयित डीबी में काम करने का कोई तरीका?)

क्या (संबंध) डीबी में इंडेक्स को स्टोर करने का कोई तरीका है? इससे स्थिरता की समस्याएं और क्लस्टर समस्याएं हल हो जाएंगी, लेकिन मुझे ऐसा करने के तरीके पर बहुत सारे साहित्य नहीं मिलते हैं।

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

या - क्या हम स्वीकार करते हैं कि इंडेक्स को लगातार होने की गारंटी नहीं है, इसे हर दिन पुनर्निर्माण करें? आम तौर पर लोग इसके बारे में क्या करते हैं?

+0

यह एक एकल दस्तावेज़ http://stackoverflow.com/questions/12857218/versioning-and-optimistic-locking-in-solr-4-0 पर दौड़-इंग अद्यतन के साथ मदद मिल सकती है आप विशिष्ट समस्याओं है मल्टी-डॉक परमाणुता की तरह दिमाग में? – aitchnyu

+0

विशिष्ट समस्या बस क्लस्टर्ड एंटरप्राइज़ एप्लिकेशन को इंडेक्स प्रदान कर रही है। प्रत्येक नोड डेटाबेस को स्वतंत्र रूप से अद्यतन कर रहा है। चूंकि सोलर डीबी में डेटा स्टोर नहीं करता है, इसलिए प्रत्येक नोड में सोलर चलने की अपनी प्रतिलिपि होती है, और प्रत्येक अपनी अनुक्रमणिका पर होती है। समस्या यह सुनिश्चित करने के लिए बस है कि प्रत्येक सोलर को प्रत्येक क्लस्टर नोड्स के सभी परिवर्तनों के बारे में अधिसूचित किया जाता है। यदि कोई नोड बाहर निकलता है, तो डेटाबेस एक स्थिर स्थिति में वापस रोल करेगा, लेकिन सोलर इंडेक्स में इसमें कम या कम अपडेट हो सकते हैं। वे सूचकांक पुनर्निर्मित होने तक बस गलत होंगे, जो समय-समय पर किया जाना चाहिए। – AgilePro

उत्तर

15

क्यू> मैं सूचकांक को डीबी के साथ लेनदेन के अनुरूप कैसे बना सकता हूं?
ए> आप नहीं कर सकते। आप शायद शीर्ष पर एक और लेनदेन परत का आविष्कार कर सकते हैं, लेकिन इसमें उम्र बढ़ने में लगेगा और आप वैसे भी 100% स्थिरता तक नहीं पहुंचेंगे। उदाहरण के लिए, आप डीबी और सोलर दोनों को डेटा भेज सकते हैं और दोनों डेटा आने के बाद ही प्रतिबद्ध हो सकते हैं लेकिन यह परमाणु नहीं होगा।

क्यू> क्या (संबंध) डीबी में इंडेक्स को स्टोर करने का कोई तरीका है?
ए> लुसीन 4.0 के साथ, आप शायद (अपना स्वयं का कोडेक लिखकर) कर सकते हैं। लेकिन यह आपकी समस्या का समाधान नहीं करेगा।

क्यू> क्लस्टर के रूप में कॉन्फ़िगर किए जाने पर, प्रत्येक क्लस्टर नोड को इसकी अनुक्रमणिका की अपनी प्रति बनाए रखने की आवश्यकता होती है?
ए> हां।

क्यू> यह स्पष्ट नहीं है कि सौर के कई उदाहरण एक सूचकांक को अपडेट कर सकते हैं या नहीं।
ए> एकाधिक ल्यूसीन/सौर उदाहरण एक ही अनुक्रमणिका फ़ाइल में नहीं लिख सकते हैं। अधिकतम आप कई IndexSearcher एस बनाने के लिए कर सकते हैं। लेकिन यह शायद सोलर स्तर पर किया जाता है।

क्यू> क्या हम स्वीकार करते हैं कि सूचकांक लगातार होने की गारंटी नहीं है?
ए> हां। मुझे लगता है कि आप भी डीबी केंद्रित हैं। जैसा कि आप Google के बारे में सोचते हैं, सोलर/ल्यूसीन के बारे में सोचें - मुझे लगता है कि वे पूरी दुनिया में अपने संपूर्ण सूचकांक को पूरी तरह से रोल नहीं करते हैं। यदि खोज परिणामों में मामूली असंगतताएं होंगी, तो आप किस सर्वर पर हिट करते हैं (पाठ्यक्रम के कुछ सेकंड के लिए), यह एक बड़ा सौदा नहीं है।

क्यू> इसे हर दिन या फिर पुनर्निर्माण करें? आम तौर पर लोग इसके बारे में क्या करते हैं?
ए> लुसेन near-real time search है लेकिन मूल स्तर पर आप केवल इंडेक्स अपडेट भेजते हैं और डीबी परिवर्तन होने के रूप में प्रतिबद्ध होते हैं, फिर इन अद्यतनों को देखने के लिए इंडेक्स रीडर को फिर से खोलें। यह सब सौर में स्वचालित रूप से किया जाता है।

+0

धन्यवाद! वे महान जवाब हैं। – AgilePro

+0

यदि आप संतुष्ट हैं, तो आप उत्तर को स्वीकृत के रूप में चिह्नित करना चाहेंगे। इस साइट पर यह काम करता है। – mindas

+0

आप जानते हैं ... मुझे यह पता लगाने में 15 मिनट लग गए कि चेक आइकन कुछ जवाब देने के लिए क्लिक करने के लिए कुछ था। लेकिन अब मुझे पता है, टिप के लिए धन्यवाद। – AgilePro

1

पता है कि यह थोड़ा पुराना है लेकिन यह किसी की मदद कर सकता है। आप अपाचे जुकीपर के साथ सोलरक्लाउड का प्रयास कर सकते हैं।

बॉक्स से बाहर अपाचे Solr Solr सर्वर का एक समूह है कि दोष सहिष्णुता और उच्च availability- नामक SolrCloud को जोड़ती है स्थापित करने के लिए की क्षमता शामिल है, इन क्षमताओं अनुक्रमण और खोज क्षमताओं वितरित प्रदान करते हैं, थोड़ा config के साथ निम्न सुविधाओं का समर्थन:

Central configuration for the entire cluster 
Automatic load balancing and fail-over for queries 
ZooKeeper integration for cluster coordination and configuration. 

जुकीपर सौर के लिए क्लस्टर प्रबंधक है। यह solr के साथ वास्तव में अच्छी तरह से काम करता है।

https://cwiki.apache.org/confluence/display/solr/SolrCloud 

http://zookeeper.apache.org/doc/trunk/zookeeperOver.html 
+0

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

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