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

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

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

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

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

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

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

नयाँ रिलीज मा:

  • कन्सुल र etcd वितरित भण्डारणको आधारमा काम गर्न सक्ने नयाँ नोड पत्ता लगाउने सेवा प्रयोग गरेर स्वचालित rqlite क्लस्टरिङको लागि समर्थन थपियो। सेवाले rqlite नोडहरूलाई स्वचालित रूपमा एकअर्कालाई फेला पार्न अनुमति दिन्छ - प्रशासकले साधारण कन्सुल वा etcd क्लस्टर ठेगाना (उदाहरणका लागि, "example.com:8500") निर्दिष्ट गर्दै विभिन्न सर्भरहरूमा धेरै नोडहरू सुरू गर्न आवश्यक छ, र नोडहरू स्वचालित रूपमा हुनेछन्। एक क्लस्टर मा संयुक्त। अग्रणी नोडले आवधिक रूपमा कन्सुल वा etcd भण्डारणमा यसको ठेगानाको बारेमा जानकारी अपडेट गर्दछ, जसले तपाईंलाई पछि अन्य नोडहरू पुन: कन्फिगर नगरी नेता परिवर्तन गर्न अनुमति दिन्छ, साथै नेता परिवर्तन गरेपछि पनि नयाँ नोडहरू थप्न अनुमति दिन्छ। AWS Lambda मा चलिरहेको लिगेसी डिस्कवरी मोड सेवा बन्द गरिएको छ।
  • CLI इन्टरफेसले एकै पटक धेरै होस्टहरू निर्दिष्ट गर्न अनुमति दिन्छ - यदि पहिलो नोड उपलब्ध छैन भने, अर्को होस्टहरूलाई सम्पर्क गरिनेछ।
  • rqlited कमाण्ड लाइन तर्कहरू पार्सिङको लागि कोड पुन: कार्य गरियो।
  • हटाइएको प्रोटोबफ प्याकेज बन्द गरिएको छ।
  • राफ्ट प्रोटोकलको कार्यान्वयनमा प्रयोग गरिएको BoltDB भण्डारणलाई bbolt द्वारा प्रतिस्थापन गरिएको छ, etcd परियोजनाको फोर्क।

स्रोत: opennet.ru

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