SQLite ఆధారంగా పంపిణీ చేయబడిన, తప్పులను తట్టుకునే DBMS అయిన rqlite 6.0 విడుదల

పంపిణీ చేయబడిన DBMS rqlite 6.0 విడుదల అందించబడింది, ఇది SQLiteని నిల్వ ఇంజిన్‌గా ఉపయోగిస్తుంది మరియు సమకాలీకరించబడిన నిల్వల క్లస్టర్ యొక్క పనిని నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది. rqlite యొక్క లక్షణాలలో ఒకటి పంపిణీ చేయబడిన తప్పు-తట్టుకునే నిల్వ యొక్క సంస్థాపన, విస్తరణ మరియు నిర్వహణ, కొంతవరకు etcd మరియు కాన్సుల్‌తో సమానంగా ఉంటుంది, కానీ కీ/విలువ ఆకృతికి బదులుగా రిలేషనల్ డేటా మోడల్‌ను ఉపయోగించడం. ప్రాజెక్ట్ కోడ్ గోలో వ్రాయబడింది మరియు MIT లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది.

అన్ని నోడ్‌లను సమకాలీకరించబడిన స్థితిలో ఉంచడానికి, రాఫ్ట్ ఏకాభిప్రాయ అల్గోరిథం ఉపయోగించబడుతుంది. Rqlite అసలైన SQLite లైబ్రరీని మరియు ప్రామాణిక go-sqlite3 డ్రైవర్‌ను ఉపయోగిస్తుంది, దాని పైన క్లయింట్ అభ్యర్థనలను ప్రాసెస్ చేసే, ఇతర నోడ్‌లకు రెప్లికేషన్ చేసే మరియు ప్రముఖ నోడ్ ఎంపికపై ఏకాభిప్రాయ సాధనను పర్యవేక్షించే లేయర్ ప్రారంభించబడింది.

డేటాబేస్‌లో మార్పులు లీడర్‌గా ఎంపిక చేయబడిన నోడ్ ద్వారా మాత్రమే చేయబడతాయి, అయితే వ్రాత కార్యకలాపాలతో కనెక్షన్‌లు క్లస్టర్‌లోని ఇతర నోడ్‌లకు కూడా పంపబడతాయి, ఇది అభ్యర్థనను పునరావృతం చేయడానికి లీడర్ చిరునామాను తిరిగి ఇస్తుంది (తదుపరి సంస్కరణలో వారు నాయకుడికి అభ్యర్థనల స్వయంచాలక ఫార్వార్డింగ్‌ను జోడిస్తానని వాగ్దానం చేయండి). ప్రధాన ప్రాధాన్యత తప్పు సహనంపై ఉంది, కాబట్టి DBMS రీడ్ ఆపరేషన్‌లతో మాత్రమే స్కేల్ చేస్తుంది మరియు వ్రాత కార్యకలాపాలు అడ్డంకిగా ఉంటాయి. ఒకే నోడ్ నుండి rqlite క్లస్టర్‌ను అమలు చేయడం సాధ్యపడుతుంది మరియు ఈ సొల్యూషన్ ఫాల్ట్ టాలరెన్స్ అందించకుండా HTTP ద్వారా SQLiteకి యాక్సెస్‌ని అందించడానికి ఉపయోగించవచ్చు.

ప్రతి నోడ్‌లోని SQLite డేటా ఫైల్‌లో నిల్వ చేయబడదు, కానీ మెమరీలో. Raft ప్రోటోకాల్ అమలుతో లేయర్ స్థాయిలో, డేటాబేస్లో మార్పులకు దారితీసే అన్ని SQLite ఆదేశాల లాగ్ ఉంచబడుతుంది. ఈ లాగ్ రెప్లికేషన్ సమయంలో ఉపయోగించబడుతుంది (ఇతర నోడ్‌లలో అభ్యర్థనలను పునరుత్పత్తి చేసే స్థాయిలో రెప్లికేషన్), కొత్త నోడ్‌ను ప్రారంభించడం లేదా కనెక్టివిటీ నష్టం నుండి కోలుకోవడం. లాగ్ యొక్క పరిమాణాన్ని తగ్గించడానికి, ఆటోమేటిక్ ప్యాకేజింగ్ ఉపయోగించబడుతుంది, ఇది నిర్దిష్ట సంఖ్యలో మార్పుల తర్వాత ప్రారంభమవుతుంది మరియు డిస్క్‌లో స్నాప్‌షాట్ స్థిరపడటానికి దారితీస్తుంది, దీనికి సంబంధించి కొత్త లాగ్ ఉంచడం ప్రారంభమవుతుంది (మెమొరీలోని డేటాబేస్ స్థితి స్నాప్‌షాట్ + కూడబెట్టిన మార్పు లాగ్‌తో సమానంగా ఉంటుంది).

Rqlite యొక్క లక్షణాలు:

  • SQLite యొక్క ప్రత్యేక ఇన్‌స్టాలేషన్ అవసరం లేకుండా క్లస్టర్‌ని అమలు చేయడం సులభం.
  • ప్రతిరూప SQL నిల్వను త్వరగా పొందగల సామర్థ్యం.
  • పని చేసే ప్రాజెక్ట్‌లలో (ఉత్పత్తి-గ్రేడ్) ఉపయోగించడానికి సిద్ధంగా ఉంది.
  • బ్యాచ్ మోడ్‌లో డేటాను అప్‌డేట్ చేయడానికి మరియు క్లస్టర్ యొక్క ప్రముఖ నోడ్‌ను నిర్ణయించడానికి మిమ్మల్ని అనుమతించే HTTP(S) API ఉనికి. ఇది కమాండ్ లైన్ ఇంటర్‌ఫేస్ మరియు SQLite కోసం నిర్మించిన వివిధ క్లయింట్ లైబ్రరీలను ఉపయోగించగల సామర్థ్యాన్ని కూడా అందిస్తుంది.
  • ఇతర నోడ్‌లను గుర్తించడం కోసం సేవ యొక్క లభ్యత, క్లస్టర్‌లను డైనమిక్‌గా సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • నోడ్‌ల మధ్య డేటా మార్పిడిని గుప్తీకరించడానికి మద్దతు.
  • చదివేటప్పుడు డేటా యొక్క ఔచిత్యం మరియు స్థిరత్వాన్ని తనిఖీ చేసే స్థాయిని కాన్ఫిగర్ చేయగల సామర్థ్యం.
  • రీడ్-ఓన్లీ మోడ్‌లో నోడ్‌లను కనెక్ట్ చేసే ఐచ్ఛిక సామర్థ్యం, ​​ఇది ఏకాభిప్రాయాన్ని నిర్ణయించడంలో పాల్గొనదు మరియు రీడ్ ఆపరేషన్‌ల కోసం క్లస్టర్ యొక్క స్కేలబిలిటీని పెంచడానికి ఉపయోగించబడుతుంది.
  • ఒక అభ్యర్థనలో కమాండ్‌లను కలపడం ఆధారంగా మీ స్వంత లావాదేవీల కోసం మద్దతు (BEGIN, COMMIT, ROLLBACK, SAVEPOINT మరియు విడుదల ఆధారంగా లావాదేవీలకు మద్దతు లేదు).
  • హాట్ బ్యాకప్‌లను సృష్టించడానికి మద్దతు.

కొత్త విడుదల సరైన క్లస్టర్ నోడ్‌లకు రీడ్ అండ్ రైట్ రిక్వెస్ట్‌లను రూటింగ్ చేసే ప్రక్రియను మెరుగుపరచడం ద్వారా క్లస్టర్ విశ్వసనీయతను పెంచే లక్ష్యంతో గణనీయమైన నిర్మాణ మార్పులను పరిచయం చేసింది. rqlite నోడ్‌లు ఇప్పుడు రాఫ్ట్ ప్రోటోకాల్ ద్వారా నోడ్‌ల మధ్య ఏర్పాటు చేయబడిన TCP కనెక్షన్‌లను ఉపయోగించి తమలో తాము బహుళ లాజికల్ కనెక్షన్‌లను మల్టీప్లెక్స్ చేయగలవు. అభ్యర్థనకు లీడర్ అథారిటీ అవసరం అయితే సెకండరీ నోడ్‌కి పంపబడితే, సెకండరీ నోడ్ లీడర్ అడ్రస్‌ను గుర్తించి, తెప్ప ఏకాభిప్రాయ గణనలను నిర్వహించకుండానే క్లయింట్‌కు పంపగలదు.

ఈ మార్పు ప్రత్యేక మెటాడేటా సింక్రొనైజేషన్ భాగం యొక్క అవసరాన్ని కూడా తొలగించింది మరియు రాఫ్ట్ స్టేట్ మరియు మెటాడేటా యొక్క ప్రత్యేక నిర్వహణను తొలగించింది. సెకండరీ నోడ్‌లు ఇప్పుడు లీడర్ నోడ్ చిరునామాను కనుగొనవలసి వచ్చినప్పుడు అవసరమైనప్పుడు మాత్రమే లీడర్ నోడ్‌కి అభ్యర్థనలను పంపుతాయి. API క్లస్టర్‌లోని ఇతర నోడ్‌ల స్థితి గురించి సమాచారాన్ని పొందగల సామర్థ్యాన్ని అందిస్తుంది. ".sysdump" కమాండ్ కమాండ్ లైన్ ఇంటర్‌ఫేస్‌కు జోడించబడింది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి