blog-post

Manticore Search 5

आज मैन्टिकोर टीम Manticore Search 5.0.0 की घोषणा करते हुए बहुत खुश है। हमें लगभग 5 महीने, 450 कमिट और लगभग 50 हजार लाइनों के कोड में परिवर्तन करने में समय लगा। हम सभी हमारे:

का धन्यवाद करना चाहते हैं जिन्होंने इस प्रक्रिया में हमारी मदद की। कृपया नए संस्करण Manticore Search 5.0.0 का स्वागत करें!

डिफ़ॉल्ट रूप से सभी संग्रहीत

हमारे पुराने उपयोगकर्ता याद कर सकते हैं कि जब मैन्टिकोर 2017 में स्पिंक्स से फोर्क किया गया था, तब इसकी डेटाबेस क्षमताएं इस प्रकार की सीमित थीं कि यह किसी अन्य डेटाबेस के लिए एक विस्तार के अधिक थे न कि स्वयं में एक डेटाबेस, उदाहरण के लिए:

  • यदि आप मूल सामग्री को संग्रहीत करना चाहते थे, तो आपको एक स्ट्रिंग विशेषता बनानी थी और वहां रखना था, जिससे बहुत अधिक RAM लग सकती थी क्योंकि तब मैन्टिकोर में केवल पंक्ति-वार संग्रहण था, जो सभी विशेषताओं को RAM में संग्रहीत करने की आवश्यकता रखता था।
  • और आप नई टेबल बनाने के लिए CREATE TABLE भी नहीं चला सकते थे, आप केवल कॉन्फ़िगरेशन फ़ाइल में एक नई स्कीमा जोड़ सकते थे।

फिर मैन्टिकोर में हमने जोड़ा:

  • पूर्ण-पाठ क्षेत्रों के लिए दस्तावेज़ संग्रहण जिसने इसे संभव बनाया कि मूल दस्तावेज़ों को डिस्क पर संग्रहीत करके RAM की बचत की जा सके।
  • कमांड्स जैसे CREATE TABLE सक्षम करने के लिए रीयलटाइम मोड।
  • नया डेटा-प्रकार text जो डिफ़ॉल्ट रूप से अनुक्रमित + संग्रहीत होता है।

लेकिन सामान्य मोड में आपको अभी भी stored_fields = ... निर्दिष्ट करना था।

अब आपको ऐसा करने की आवश्यकता नहीं है, यह सभी डिफ़ॉल्ट रूप से संग्रहीत है क्योंकि मैन्टिकोर 5 में। यदि आपको इसकी आवश्यकता नहीं है, तो आप इसे stored_fields = (खाली मान) निर्दिष्ट करके अक्षम कर सकते हैं। इससे सभी क्षेत्रों को गैर-स्तरीकृत बनाया जाएगा।

द्वितीयक अनुक्रमणिकाएँ

Manticore 5 Manticore Columnar Library 1.15.2 के लिए समर्थन सक्षम करता है जो द्वितीयक अनुक्रमणिकाएँ के लिए समर्थन जोड़ता है। यह कार्यक्षमता मैन्टिकोर 5 में उसके बीटा चरण में प्रदान की गई है, इसलिए:

  • सामान्य और वास्तविक समय कॉलम और पंक्ति-वार अनुक्रमणिकाओं के लिए द्वितीयक अनुक्रमणिकाएँ डिफ़ॉल्ट रूप से चालू हैं (यदि Manticore Columnar Library का उपयोग किया जा रहा है),
  • लेकिन इसे खोजने के लिए सक्षम करने के लिए आपको अपने कॉन्फ़िगरेशन फ़ाइल में या SET GLOBAL का उपयोग करके secondary_indexes = 1 सेट करना होगा।

नई कार्यक्षमता सभी ऑपरेटिंग सिस्टम में समर्थित है, पुराने डेबियन स्ट्रेच और उबंटू ज़ेनियल को छोड़कर।

Manticore Columnar Library पीसवाइज ज्यामेट्रिक मॉडल अनुक्रमणिका का उपयोग करती है, जो अनुक्रमित कुंजी और उनकी मेमोरी में स्थान के बीच एक सीखा हुआ मानचित्रण का शोषण करती है। इस मानचित्रण की संक्षिप्तता, एक विशेष पुनरावृत्तियों निर्माण एल्गोरिदम के साथ, PGM- अनुक्रमणिका को एक डेटा संरचना बनाती है जो पारंपरिक अनुक्रमणिकाओं की तुलना में स्थान में आदेशों के कई गुना श्रेष्ठ है जबकि सबसे अच्छे क्वेरी और अद्यतन समय प्रदर्शन की पेशकश करने के लिए।

डिफ़ॉल्ट रूप से छद्म शार्दिंग

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

वेब कमांड लाइन इंटरफ़ेस

Manticore 5 नए /cli एंडपॉइंट प्रदान करता है जिसके माध्यम से HTTP पर SQL क्वेरीज चलाना और भी आसान हो गया है।

वेब CLI

केवल-पढ़ने का मोड

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

डेटा लोडिंग में तेजी

पहले आप HTTP JSON प्रोटोकॉल के माध्यम से कई लिखने वाले कमांड प्रदान कर सकते थे, लेकिन इन्हें एक-एक कर संसाधित किया जाता था, अब इन्हें एक एकल लेनदेन के रूप में संभाला जाता है। JSON पर HTTP के माध्यम से बड़े INSERT/REPLACE/DELETE अब SQL के माध्यम से भी बड़े हैं। और भी अधिक:

चंक्ड ट्रांसफर इनकोडिंग

Manticore 5 HTTP प्रोटोकॉल में चंक्ड ट्रांसफर इनकोडिंग का समर्थन करता है। आप अब अपने एप्लिकेशन में बड़े बैचों को कम संसाधन खपत के साथ स्थानांतरित करने के लिए चंक्ड ट्रांसफर का उपयोग कर सकते हैं (क्योंकि आपको Content-Length का पता लगाने की आवश्यकता नहीं है)। सर्वर की ओर Manticore अब हमेशा आने वाले HTTP डेटा को स्ट्रीमिंग तरीके से संसाधित करता है बिना पूरे बैच के स्थानांतरित होने की प्रतीक्षा किए, जैसा कि पहले किया गया था, जिससे:

  • पीक RAM खपत में कमी आती है, जो OOM की संभावना को कम करती है
  • प्रतिक्रिया समय में कमी आती है (हमारे परीक्षणों ने 100MB बैच को संसाधित करने के लिए 11% की कमी दिखाई)
  • आपको max_packet_size पर पार करने और सबसे बड़े अनुमत मान max_packet_size (128MB) से कहीं अधिक बड़े बैचों को स्थानांतरित करने की अनुमति मिलती है, उदाहरण के लिए, 1GB एक बार।

100 जारी रखें

इसके अलावा, HTTP प्रोटोकॉल अब हेडर 100 जारी रखें का समर्थन करता है जो आपको बड़े बैचों को curl (विभिन्न प्रोग्रामिंग भाषाओं द्वारा उपयोग किए जाने वाले curl लाइब्रेरी सहित) से तेजी से स्थानांतरित करने की अनुमति देता है। Curl डिफ़ॉल्ट रूप से Expect: 100-continue करता है और वास्तव में बैच भेजने से पहले कुछ समय प्रतीक्षा करता है। पहले आपको Expect: हेडर जोड़ना पड़ता था, अब इसकी आवश्यकता नहीं है।

ये सभी चीजें Manticore 5 को HTTP के माध्यम से डेटा लोडिंग के संदर्भ में तेज बनाती हैं।

Manticore Search बिना पूर्ण-पाठ

Manticore Search एक पूर्ण-पाठ खोज इंजन होने के नाते हमेशा कम से कम एक पूर्ण-पाठ क्षेत्र की आवश्यकता होती थी। अब ऐसा नहीं है। आप अब Manticore का उपयोग कर सकते हैं भले ही पूर्ण-पाठ खोज से संबंधित कुछ भी न हो, इसलिए कम से कम एक पूर्ण-पाठ क्षेत्र होने की आवश्यकता समाप्त हो गई है।

कॉलम अनुक्रमणिकाओं को तेजी से लाना

In Manticore 5 we addded Fast fetching for attributes backed by Manticore Columnar Library : queries like select * from <columnar table> are now much faster than previously, especially if there are many fields in the schema.

Implicit cutoff

Manticore अब परिणाम सेट में उन डेटा को संसाधित करने में समय और संसाधन नहीं लगाता है जिनकी आपको आवश्यकता नहीं है, स्वचालित रूप से जारी कटऑफ मूल्य का चयन करके। कुछ प्रश्नों के लिए यह प्रदर्शन में काफी सुधार करता है। नकारात्मक पक्ष यह है कि यह SHOW META में total_found और hits.total में JSON आउटपुट को प्रभावित करता है। यह अब केवल इस मामले में सटीक है जब आप total_relation: eq देखते हैं, जबकि total_relation: gte का मतलब है कि मिलान करने वाले दस्तावेजों की वास्तविक संख्या total_found मूल्य से अधिक है जो आपने प्राप्त किया है। पिछले व्यवहार को बनाए रखने के लिए आप खोज विकल्प cutoff=0 का उपयोग कर सकते हैं, जो total_relation को हमेशा eq बनाता है।

HTTP JSON search options

Manticore 5 से आप विभिन्न खोज विकल्प सेट कर सकते हैं यदि आप HTTP JSON प्रोटोकॉल के माध्यम से Manticore का उपयोग कर रहे हैं या इसके आधार पर कोई क्लाइंट।

HTTP JSON nested filters

JSON प्रोटोकॉल अब Nested filters समर्थन सक्षम करता है क्योंकि Manticore 5। पहले आप JSON में ऐसे चीजें कोड नहीं कर सकते थे जैसे a=1 and (b=2 or c=3): must (AND), should (OR) और must_not (NOT) केवल सबसे ऊँचे स्तर पर काम करते थे। अब वे नेस्टेड हो सकते हैं।

And many more

उपर्युक्त केवल एक भाग है कि Manticore 4.2.0 के बाद क्या किया गया है और अब नए रिलीज में सामान्य रूप से उपलब्ध हो गया है। कृपया इसके बारे में पढ़ें:

🚀 13 प्रमुख परिवर्तन
✅ 20+ छोटे परिवर्तन
🐞 45 बग फिक्स

में चेंज़लॉग

हमें उम्मीद है कि आप Manticore Search के नए संस्करण का उपयोग करना पसंद करेंगे। कृपया इसके बारे में अपनी प्रतिक्रिया साझा करें:

  • Community Forum पर एक विषय पोस्ट करके
  • GitHub पर एक बग रिपोर्ट या फीचर अनुरोध बनाकर
  • Public Slack Chat में इसके बारे में चैट करके
  • हमें संपर्क@manticoresearch.com पर एक ईमेल भेजकर

मैंटीकोर सर्च इंस्टॉल करें

मैंटीकोर सर्च इंस्टॉल करें