2012-02-23 23 views
5

मैं एक एसक्यूएल डेटाबेस से elasticsearch में एक खोज इंजन पोर्टिंग पर काम कर रहा हूँ। ऐसा करने का मुख्य कारण पहलुओं को आसानी से गणना करने में सक्षम होना है।लोचदार खोज अपेक्षाकृत प्रदर्शन

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

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

मैं ठीक उसी मशीन विन्यास, एक 64 बिट्स मंच, राम के 32 गिग्स, एक SSD डिस्क, और एक क्वाड-कोर इंटेल जिऑन का उपयोग किया है 3ghz पर एसक्यूएल और ES तुलना करने के लिए।

दस्तावेज़ छोटा नहीं है, अनुरोध के आधार पर लगभग 200 फ़ील्ड हैं, स्क्रिप्ट आधारित सॉर्टिंग का उपयोग किया जाता है, और डॉक्टरों के दस्तावेज़ों पर हमेशा पहलुओं की गणना की जाती है।

सूचकांक में 3 लाख दस्तावेज़ हैं, यदि मुझे गलत नहीं लगता है कि यह ईएस को संभालने के लिए अपेक्षाकृत छोटा है।

क्वेरी के संदर्भ में, मैं एक फ़िल्टर की गई क्वेरी का उपयोग करता हूं, और कुछ अनुरोधों के लिए, स्कोर की गणना करने और सॉर्ट करने के लिए इसका उपयोग करने के लिए कस्टम_फिल्टर_स्कोर क्वेरी का उपयोग करता हूं।

कुछ फिल्टर पहलुओं के कारण वैश्विक हैं लेकिन फ़िल्टर किए गए प्रश्न में हमेशा कुछ फ़िल्टर होते हैं, इसलिए स्कैन किए गए दस्तावेज़ों की संख्या कम होनी चाहिए (सभी इंडेक्स स्कैन नहीं किए गए हैं)।

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

लोचदार खोज के लिए, सर्वर पर बिताए गए औसत समय प्रत्येक क्वेरी के लिए लगभग 500 एमएस (समानांतर में 100 प्रश्नों के लिए) है, और क्लाइंट पर दूसरे द्वारा औसत प्रश्न 160 के आसपास है (कुछ एमएस क्वेरी बनाने में खो गए हैं , इसे भेजना, परिणाम प्राप्त करना, और उन्हें पार्स करना)। और यह एक शर्ट और 0 प्रतिकृतियां वाले इंडेक्स के साथ है, जब मैं shards/replicas की संख्या में वृद्धि करता हूं, तो प्रदर्शन महत्वपूर्ण रूप से गिर जाता है।

एसक्यूएल के लिए, औसत समय निष्पादित करने के लिए एक प्रश्न के चारों ओर 360 एमएस (इडेम, साथ में चल रहे 100 प्रश्नों के साथ), और ग्राहक पर दूसरे से औसत प्रश्नों है खर्च के आसपास 200

है मैं जानता हूँ कि यह है तुलना करने में कठिनाई होती है, लेकिन जैसा कि मुझे उम्मीदों के बारे में कोई जानकारी नहीं है, मुझे आश्चर्य है कि कोई इन उपायों पर टिप्पणी कर सकता है या नहीं।

शायद मुझे कुछ याद आया और यह तीव्रता का क्रम होना चाहिए, या शायद ये मेरे लिए समान वातावरण के लिए सामान्य परिणाम हैं, मुझे नहीं पता।

मैं अपने मामले में क्या उम्मीद कर सकता हूं? ईएस के साथ समान परिस्थितियों में आपने क्या देखा? क्या यह समवर्ती अनुरोधों का समर्थन करता है? क्या एक समय में 100 प्रश्न बनाने के दौरान 500 एमएस की सीमा में एक क्वेरी निष्पादित करने का समय होना चाहिए? क्या खोज प्रदर्शन में सुधार करने के कुछ तरीके हैं?

कोई भी जानकारी या टिप्पणियां आपका स्वागत है, यह प्रोटोटाइप को औद्योगिकीकृत करने के निर्णय के लिए एक महत्वपूर्ण हिस्सा है या नहीं।

धन्यवाद।

+1

हाय, कोई इस पर टिप्पणी नहीं करना चाहता है? –

+0

आप इसे थोड़ा कम रैंटी बनाने की कोशिश कर सकते हैं ... – fread2281

उत्तर

0

यह कोई प्रश्न नहीं है; यह एक चर्चा की तरह लगता है।

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

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

0

आपको एक सटीक उत्तर देना मुश्किल है लेकिन आपकी संख्याएं बहुत अप्रत्याशित नहीं हैं।

  • सुनिश्चित करें कि आप खंडों की संख्या के साथ अपने सूचकांक अनुकूलित किया है सुनिश्चित = 1.
  • लोचदार खोज में थ्रेड पूल आकार बढ़ाएं।
  • सुनिश्चित करें कि एक्सएमएस और एक्सएमएक्स समान हैं, सभी को मॉक लॉक का उपयोग करें।

हालांकि मैं हैरान हूँ कि केवल 3 लाख दस्तावेजों के साथ एक performant संबंधपरक DB के साथ-साथ या बेहतर प्रदर्शन कर रहा है नहीं कर रहा हूँ ये आप प्रदर्शन में कुछ बढ़ावा देना चाहिए, अंतर यह है कि डीबी धीमी मिल जाएगा जबकि ES प्रदर्शन करेंगे है 100 लाखों के साथ ही वही।

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