అధిక-పనితీరు పొందుపరిచిన DBMS libmdbx 0.10.4 మరియు libfpta 0.3.9 విడుదల

libmdbx 0.10.4 (MDBX) లైబ్రరీలు అధిక-పనితీరు గల కాంపాక్ట్ ఎంబెడెడ్ కీ-విలువ డేటాబేస్ మరియు అనుబంధిత libfpta 0.3.9 (FPTA) లైబ్రరీ అమలుతో విడుదల చేయబడ్డాయి, ఇది సెకండరీ మరియు కాంపోజిట్ ఇండెక్స్‌లతో డేటా యొక్క పట్టిక ప్రాతినిధ్యాన్ని అమలు చేస్తుంది. MDBX పైన. రెండు లైబ్రరీలు OSI ఆమోదించబడిన లైసెన్స్‌ల క్రింద పంపిణీ చేయబడతాయి. అన్ని ప్రస్తుత ఆపరేటింగ్ సిస్టమ్‌లు మరియు ఆర్కిటెక్చర్‌లకు అలాగే రష్యన్ ఎల్బ్రస్ 2000 మద్దతు ఉంది.

చారిత్రాత్మకంగా, libmdbx అనేది LMDB DBMS యొక్క లోతైన పునర్నిర్మాణం మరియు విశ్వసనీయత, ఫీచర్ సెట్ మరియు పనితీరులో దాని పూర్వీకుల కంటే మెరుగైనది. LMDBతో పోలిస్తే, libmdbx కోడ్ నాణ్యత, API స్థిరత్వం, పరీక్ష మరియు స్వయంచాలక తనిఖీలపై చాలా ప్రాధాన్యతనిస్తుంది. కొన్ని రికవరీ సామర్థ్యాలతో డేటాబేస్ నిర్మాణం యొక్క సమగ్రతను తనిఖీ చేయడానికి ఒక యుటిలిటీ సరఫరా చేయబడింది.

సాంకేతికత వారీగా, libmdbx CPU కోర్ల అంతటా లీనియర్ స్కేలింగ్‌తో ACID, బలమైన మార్పు సీరియలైజేషన్ మరియు నాన్-బ్లాకింగ్ రీడ్‌లను అందిస్తుంది. ఆటో-కాంపాక్టిఫికేషన్, ఆటోమేటిక్ డేటాబేస్ సైజ్ మేనేజ్‌మెంట్ మరియు రేంజ్ క్వెరీ అంచనాకు మద్దతు ఉంది. 2016 నుండి, ప్రాజెక్ట్‌లు పాజిటివ్ టెక్నాలజీస్ ద్వారా నిధులు పొందాయి మరియు 2017 నుండి దాని ఉత్పత్తులలో ఉపయోగించబడుతున్నాయి.

libmdbx ఒక C++ APIని అందిస్తుంది, అలాగే రస్ట్, హాస్కెల్, పైథాన్, NodeJS, రూబీ, గో మరియు నిమ్ కోసం ఔత్సాహికుల-మద్దతు గల భాషా బైండింగ్‌లను అందిస్తుంది. libfpta కోసం, API వివరణ మాత్రమే C/C++ హెడర్ ఫైల్ రూపంలో పబ్లిక్‌గా అందుబాటులో ఉంటుంది.

మే 9న మునుపటి వార్తల నుండి ప్రధాన ఆవిష్కరణలు, మెరుగుదలలు మరియు దిద్దుబాట్లు జోడించబడ్డాయి:

  • పునరుత్పాదక నిర్మాణాలను ప్రారంభిస్తుంది.
  • బగ్ పరిష్కరించబడింది, దీని కారణంగా చాలా అరుదైన పరిస్థితులలో, లావాదేవీల సమయంలో లూప్/ఫ్రీజ్ సంభవించవచ్చు. పాజిటివ్ టెక్నాలజీస్ నిపుణులు వారి స్వంత ఉత్పత్తుల యొక్క అంతర్గత పరీక్ష సమయంలో సమస్యను గుర్తించారు.
  • పరీక్షలు మెరుగుపరచబడ్డాయి మరియు డేటాబేస్ లోపల పేజీ ట్రీ మరియు GC కంటెంట్‌ల యొక్క అన్ని చేరుకోగల ఐసోమోర్ఫిక్ కాని స్థితులను తనిఖీ చేయడానికి పరీక్ష దృశ్యాలు విస్తరించబడ్డాయి.
  • C++ APIలో, అదనపు “noexcept” పరిష్కరించబడింది, “కర్సర్:: erase()” పద్ధతికి అదనపు ఓవర్‌లోడ్‌లు జోడించబడ్డాయి, బఫర్‌ల అమలు అమరికను నిర్ధారించడానికి “std:: string” వినియోగాన్ని తప్పించింది. (CLANG libstdc++కి సంబంధించినది).
  • భారీ లావాదేవీలలో డేటాను మార్చేటప్పుడు అరుదైన ఊహించని MDBX_PROBLEM లోపం ద్వారా వ్యక్తీకరించబడిన డర్టీ పేజీ స్పిల్లింగ్ అల్గారిథమ్ (మార్చబడిన డేటాబేస్ పేజీల ఎంపిక ఎజెక్షన్)లో రిగ్రెషన్ తొలగించబడింది.
  • డేటాబేస్‌కు ఉద్దేశపూర్వకంగా నష్టం జరిగినప్పుడు స్థిరత్వాన్ని నిర్ధారించడానికి అనేక తనిఖీల జోడింపుతో దశలవారీ పరీక్ష నిర్వహించబడింది.
  • స్థిరమైన చిన్న హెచ్చరికలు నిర్వచించబడని ప్రవర్తన శానిటైజర్ మరియు కవరిటీ స్కాన్ సమస్యలు.
  • లైబ్రరీ యొక్క పాత సంస్కరణల ద్వారా సృష్టించబడిన డేటాబేస్ చిత్రాలలోని సమూహ పేజీలలో గడువు ముగిసిన మరియు ఇకపై ఉపయోగించబడని అంతర్గత ఫ్లాగ్ “P_DIRTY”ని తనిఖీ చేయడం పరిష్కరించబడింది.
  • CMake స్క్రిప్ట్‌లలో, LTO (లింక్-టైమ్ ఆప్టిమైజేషన్) కోసం అవసరమైన కంపైలర్ భాగాల కోసం శోధన మెరుగుపరచబడింది.
  • ఏకకాల పాఠకుల గరిష్ట సంఖ్య 32767కి పెంచబడింది.
  • Valgrind మరియు AddressSanitizer ఉపయోగిస్తున్నప్పుడు మెరుగైన పనితీరు.
  • విండోస్‌లో, MDBX_NOTLS మోడ్‌లో (థ్రెడ్ లోకల్ స్టోరేజీని ఉపయోగించకుండా) పని చేస్తున్నప్పుడు SRW-lock యొక్క పునరావృత ఉపయోగం తొలగించబడింది, సిస్టమ్ సమయం మారినట్లయితే బూటిడ్ జనరేషన్ పరిష్కరించబడింది, WSL1 మరియు WSL2 గుర్తింపు మెరుగుపరచబడింది మరియు సామర్థ్యం DrvFS ద్వారా మౌంట్ చేయబడిన ప్లాన్ 9 పై డేటాబేస్ తెరవడం జోడించబడింది.
  • మొత్తంగా, 160 ఫైల్‌లకు 57 కంటే ఎక్కువ మార్పులు చేయబడ్డాయి, ~ 5000 పంక్తులు జోడించబడ్డాయి, ~ 2500 తొలగించబడ్డాయి.

ఎరిగాన్ ప్రాజెక్ట్ టీమ్ (Ethereum ఎకోసిస్టమ్) విపరీతమైన వినియోగ దృశ్యాలలో పరీక్షించడంలో వారి సహాయం కోసం నేను ప్రత్యేకంగా ధన్యవాదాలు చెప్పాలనుకుంటున్నాను. ప్రతి ఎరిగాన్ ఇన్‌స్టాలేషన్‌లో (0.10.0% Ethereum నోడ్‌లలో ఉపయోగించబడుతుంది) 1-2 TB డేటాబేస్ వాల్యూమ్‌తో libmdbx v7 విడుదలైన ఐదు నెలల్లో, డేటాబేస్ అవినీతికి సంబంధించిన మూడు నివేదికలు మాత్రమే అందాయి. ఇది బాహ్య కారణాల వల్ల సంభవించింది మరియు సాఫ్ట్‌వేర్ లోపాల వల్ల కాదు: రెండు సందర్భాల్లో కారణం RAM వైఫల్యాలు, మూడవది BTRFSని ఉపయోగించి నిల్వ సబ్‌సిస్టమ్ యొక్క నిర్దిష్ట కాన్ఫిగరేషన్‌లో డేటాను రీసెట్ చేయడంలో లోపం.

మూలం: opennet.ru

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