rqlite 6.0 को रिलीज, SQLite मा आधारित एक वितरित, दोष-सहिष्णु DBMS

वितरित DBMS rqlite 6.0 को रिलीज प्रस्तुत गरिएको छ, जसले SQLite लाई भण्डारण इन्जिनको रूपमा प्रयोग गर्दछ र तपाइँलाई एक अर्कासँग सिंक्रोनाइज गरिएको भण्डारहरूबाट क्लस्टरको काम व्यवस्थित गर्न अनुमति दिन्छ। rqlite को विशेषताहरु मध्ये एक वितरित दोष-सहिष्णु भण्डारण को स्थापना, तैनाती र रखरखाव को सहजता हो, केहि हद सम्म etcd र Consul को समान, तर कुञ्जी/मान ढाँचा को सट्टा एक रिलेशनल डेटा मोडेल को उपयोग गरेर। परियोजना कोड Go मा लेखिएको छ र MIT लाइसेन्स अन्तर्गत वितरित छ।

सबै नोडहरू सिङ्क्रोनाइज्ड अवस्थामा राख्न, राफ्ट कन्सेन्सस एल्गोरिथ्म प्रयोग गरिन्छ। Rqlite ले मूल SQLite पुस्तकालय र मानक go-sqlite3 ड्राइभर प्रयोग गर्दछ, जसको शीर्षमा एक तह सुरु हुन्छ जसले ग्राहक अनुरोधहरू प्रशोधन गर्दछ, अन्य नोडहरूमा प्रतिकृति प्रदर्शन गर्दछ र अग्रणी नोडको छनोटमा सहमतिको उपलब्धिलाई निगरानी गर्दछ।

डाटाबेसमा परिवर्तनहरू नेताको रूपमा चयन गरिएको नोडद्वारा मात्र गर्न सकिन्छ, तर लेखन कार्यहरूसँग जडानहरू क्लस्टरमा अन्य नोडहरूमा पनि पठाउन सकिन्छ, जसले अनुरोध दोहोर्याउन नेताको ठेगाना फिर्ता गर्नेछ (अर्को संस्करणमा तिनीहरू नेतालाई अनुरोधहरूको स्वचालित फर्वार्डिङ थप्ने वाचा)। मुख्य जोड गल्ती सहिष्णुता मा छ, त्यसैले DBMS मापन मात्र पढ्ने अपरेसनहरु संग, र लेखन अपरेशन बाधा हो। यो एकल नोडबाट rqlite क्लस्टर चलाउन सम्भव छ र यो समाधान गल्ती सहिष्णुता प्रदान नगरी HTTP मा SQLite पहुँच प्रदान गर्न प्रयोग गर्न सकिन्छ।

प्रत्येक नोडमा SQLite डाटा फाइलमा भण्डार गरिएको छैन, तर मेमोरीमा। राफ्ट प्रोटोकलको कार्यान्वयनको साथ तह स्तरमा, डाटाबेसमा परिवर्तनहरूको नेतृत्व गर्ने सबै SQLite आदेशहरूको लग राखिन्छ। यो लग प्रतिकृति (अन्य नोडहरूमा पुन: उत्पादन अनुरोधको स्तरमा प्रतिकृति), नयाँ नोड सुरु गर्दा, वा जडानको हानिबाट पुन: प्राप्ति गर्दा प्रयोग गरिन्छ। लगको साइज घटाउनको लागि, स्वचालित प्याकेजिङ्ग प्रयोग गरिन्छ, जुन परिवर्तनको निर्दिष्ट संख्या पछि सुरु हुन्छ र डिस्कमा फिक्स गरिएको स्न्यापसटमा लैजान्छ, जसको सम्बन्धमा नयाँ लग राख्न सुरु हुन्छ (मेमोरीमा डाटाबेसको अवस्था। स्न्यापसट + संचित परिवर्तन लग) सँग मिल्दोजुल्दो छ।

rqlite को विशेषताहरु:

  • एक अलग SQLite स्थापना को आवश्यकता बिना, क्लस्टर तैनात गर्न सजिलो।
  • द्रुत रूपमा प्रतिकृति SQL भण्डारण प्राप्त गर्न क्षमता।
  • कार्य परियोजनाहरूमा प्रयोगको लागि तयार (उत्पादन-ग्रेड)।
  • HTTP(S) API को उपस्थिति जसले तपाईंलाई ब्याच मोडमा डाटा अपडेट गर्न र क्लस्टरको अग्रणी नोड निर्धारण गर्न अनुमति दिन्छ। यसले कमाण्ड लाइन इन्टरफेस र SQLite का लागि निर्मित विभिन्न क्लाइन्ट लाइब्रेरीहरू प्रयोग गर्ने क्षमता पनि प्रदान गर्दछ।
  • अन्य नोडहरू पहिचान गर्नको लागि सेवाको उपलब्धता, तपाईंलाई गतिशील रूपमा क्लस्टरहरू सिर्जना गर्न अनुमति दिँदै।
  • नोडहरू बीच डेटा विनिमय गुप्तिकरणको लागि समर्थन।
  • पढ्दा डेटाको सान्दर्भिकता र स्थिरता जाँच गर्ने स्तर कन्फिगर गर्ने क्षमता।
  • नोडहरू पढ्ने-मात्र मोडमा जडान गर्ने वैकल्पिक क्षमता, जसले सहमति निर्धारण गर्नमा भाग लिँदैन र पढ्ने कार्यहरूको लागि क्लस्टरको स्केलेबिलिटी बढाउन प्रयोग गरिन्छ।
  • एउटै अनुरोधमा आदेशहरू संयोजनमा आधारित लेनदेनहरूको आफ्नै फारमको लागि समर्थन (BEGIN, COMMIT, ROLLBACK, SAVEPOINT र रिलीजमा आधारित लेनदेनहरू समर्थित छैनन्)।
  • तातो ब्याकअपहरू सिर्जना गर्न समर्थन।

नयाँ विज्ञप्तिले सही क्लस्टर नोडहरूमा पढ्न र लेख्ने अनुरोधहरू राउट गर्ने प्रक्रियामा सुधार गरेर क्लस्टर विश्वसनीयता बढाउने उद्देश्यले महत्त्वपूर्ण वास्तुकला परिवर्तनहरू प्रस्तुत गर्दछ। rqlite नोडहरूले अब राफ्ट प्रोटोकलद्वारा नोडहरू बीच स्थापित TCP जडानहरू प्रयोग गरेर धेरै तार्किक जडानहरू आपसमा मल्टिप्लेक्स गर्न सक्छन्। यदि अनुरोधलाई नेता अधिकार चाहिन्छ तर माध्यमिक नोडमा पठाइन्छ भने, माध्यमिक नोडले नेताको ठेगाना निर्धारण गर्न र राफ्ट सहमति गणनाहरू नगरी ग्राहकलाई पास गर्न सक्छ।

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

स्रोत: opennet.ru

एक टिप्पणी थप्न