ከፍተኛ አፈጻጸም ያለው የተከተተ DBMS libmdbx 0.10.4 እና libfpta 0.3.9 መልቀቅ

የlibmdbx 0.10.4 (ኤምዲቢኤክስ) ቤተ-መጻሕፍት የተለቀቁት ከፍተኛ አፈጻጸም ያለው የታመቀ የተካተተ ቁልፍ እሴት ዳታቤዝ እና ተዛማጅ libfpta 0.3.9 (FPTA) ቤተ-መጽሐፍት በመተግበር የሁለተኛ እና የተዋሃዱ ኢንዴክሶች ያለው የመረጃ ውክልና የሚተገበር ነው። በ MDBX አናት ላይ። ሁለቱም ቤተ-መጻሕፍት በ OSI የጸደቁ ፈቃዶች ይሰራጫሉ። ሁሉም አሁን ያሉ ስርዓተ ክወናዎች እና አርክቴክቸር ይደገፋሉ, እንዲሁም የሩሲያ ኤልብራስ 2000.

በታሪክ፣ libmdbx የኤልኤምዲቢ ዲቢኤምኤስ ጥልቅ ዳግም ሥራ ሲሆን በአስተማማኝነቱ፣ በባህሪው አቀማመጥ እና በአፈጻጸም ከቅድመ አያቱ የላቀ ነው። ከኤልኤምዲቢ ጋር ሲነጻጸር libmdbx በኮድ ጥራት፣ በኤፒአይ መረጋጋት፣ በሙከራ እና በራስ ሰር ቼኮች ላይ ትልቅ ትኩረት ይሰጣል። የውሂብ ጎታ አወቃቀሩን ትክክለኛነት ከአንዳንድ የመልሶ ማግኛ ችሎታዎች ጋር ለመፈተሽ መገልገያ ቀርቧል።

በቴክኖሎጂ ጥበበኛ፣ libmdbx ACIDን፣ ጠንካራ የለውጥ ተከታታይነትን እና የማያግድ ንባቦችን በሲፒዩ ኮሮች ላይ በመስመራዊ ልኬት ያቀርባል። ራስ-መጠቅለል፣ ራስ-ሰር የውሂብ ጎታ መጠን አስተዳደር እና የክልል መጠይቅ ግምት ይደገፋሉ። ከ 2016 ጀምሮ ፕሮጀክቶች በፖዚቲቭ ቴክኖሎጂዎች የተደገፉ ናቸው እና ከ 2017 ጀምሮ በምርቶቹ ውስጥ ጥቅም ላይ ውለዋል.

libmdbx የC++ ኤፒአይን ያቀርባል፣ እንዲሁም ለRust፣ Haskell፣ Python፣ NodeJS፣ Ruby፣ Go እና Nim በጋለ ስሜት የሚደገፍ የቋንቋ ማሰሪያዎችን ያቀርባል። ለlibfpta፣ የኤፒአይ መግለጫው ብቻ በC/C++ ራስጌ ፋይል መልክ ነው የሚገኘው።

ከቀዳሚው ዜና በሜይ 9 ጀምሮ የታከሉ ዋና ዋና ፈጠራዎች፣ ማሻሻያዎች እና እርማቶች፡-

  • ሊባዙ የሚችሉ ግንባታዎችን ያነቃል።
  • በጣም አልፎ አልፎ ባሉ ሁኔታዎች ግብይት በሚፈፀምበት ጊዜ ሉፕ/መቀዝቀዝ በሚፈጠር ሳንካ ተስተካክሏል። ችግሩ በPositive Tecnologies ስፔሻሊስቶች የየራሳቸውን ምርቶች የውስጥ ሙከራ ሲያደርጉ ተለይተዋል።
  • በመረጃ ቋቱ ውስጥ ያሉትን ሁሉንም የማይገኙ የገጽ ዛፍ እና የጂሲ ይዘቶችን ለመፈተሽ ሙከራዎች ተሻሽለዋል እና የሙከራ ሁኔታዎች ተዘርግተዋል።
  • በC++ ኤፒአይ ውስጥ፣ ተጨማሪ "ከቀር" ተስተካክሏል፣ ለ "ጠቋሚ :: ማጥፋት()" ዘዴ ተጨማሪ ከመጠን በላይ ጭነቶች ተጨምረዋል፣ ቋጠሮዎችን መተግበር መስተካከልን ለማረጋገጥ የ"std :: string" ከመጠቀም ተቆጥቧል። (ለ CLAG libstdc++ ተዛማጅ)።
  • በቆሸሸው ገጽ ላይ መፍሰስ ስልተ-ቀመር (የተለወጡ የውሂብ ጎታ ገጾችን መምረጥ) ባልጠበቀው ባልጠበቀ MDBX_PROBLEM ስህተት የታየ ትልቅ ግብይቶች ላይ ውሂብ ሲቀይሩ ተወግዷል።
  • በመረጃ ቋቱ ላይ ሆን ተብሎ ጉዳት ሲደርስ መረጋጋትን ለማረጋገጥ በርካታ ቼኮች በመጨመር የደረጃ ፈተና ተካሂዷል።
  • ቋሚ ጥቃቅን ማስጠንቀቂያዎች ያልተገለጹ የባህሪ ማጽጃ እና የሽፋን ቅኝት ጉዳዮች።
  • ቋሚ የሆነ ጊዜ ያለፈበትን በመፈተሽ እና ከአሁን በኋላ የውስጥ ባንዲራ «P_DIRTY»ን መጠቀም የቆመው በአሮጌው የቤተ-መጽሐፍት ስሪቶች በተፈጠሩ የውሂብ ጎታ ምስሎች ውስጥ ባሉ የጎጆ ገፆች ውስጥ ነው።
  • በCMake ስክሪፕቶች ውስጥ፣ ለ LTO (የአገናኝ-ጊዜ ማመቻቸት) የሚያስፈልጉ የማጠናከሪያ አካላት ፍለጋ ተሻሽሏል።
  • ከፍተኛው በአንድ ጊዜ የሚነበቡ አንባቢዎች ቁጥር ወደ 32767 ከፍ ብሏል።
  • Valgrind እና AddressSanitizer ሲጠቀሙ የተሻሻለ አፈጻጸም።
  • በዊንዶውስ ላይ በ MDBX_NOTLS ሁነታ (ክር የአካባቢ ማከማቻ ሳይጠቀሙ) ሲሰሩ የ SRW-መቆለፊያ ተደጋጋሚ አጠቃቀም ጠፍቷል ፣ የስርዓት ጊዜ ከተቀየረ የቡት ማመንጨት ተስተካክሏል ፣ WSL1 እና WSL2 ማወቂያ ተሻሽሏል ፣ እና ችሎታው ተሻሽሏል። በDrvFS በኩል በፕላን 9 ላይ የውሂብ ጎታ ይክፈቱ።
  • በጠቅላላው ከ 160 በላይ ለውጦች በ 57 ፋይሎች ላይ ተደርገዋል, ~ 5000 መስመሮች ተጨምረዋል, ~ 2500 ተሰርዘዋል.

በተለይ የኤሪጎን ፕሮጀክት ቡድን (የኢቴሬም ሥነ ምህዳር) እጅግ በጣም ከባድ በሆኑ ሁኔታዎች ውስጥ ለሙከራ ላደረጉት እገዛ ማመስገን እፈልጋለሁ። libmdbx v0.10.0 ከተለቀቀ በኋላ በአምስት ወራት ውስጥ በእያንዳንዱ Erigon ጭነት 1-2 ቲቢ የውሂብ ጎታ መጠን (በ 7% የኤቲሬም አንጓዎች ጥቅም ላይ የዋለ) ሶስት የዳታቤዝ ሙስና ሪፖርቶች ብቻ መገኘታቸው አስፈላጊ ነው ፣ ሁሉም በሶፍትዌር ስህተቶች ሳይሆን በውጫዊ ምክንያቶች የተከሰቱት: በሁለት አጋጣሚዎች መንስኤው ራም አለመሳካት ነበር, በሶስተኛ ደረጃ BTRFS ን በመጠቀም በተወሰነ የማከማቻ ንዑስ ስርዓት ውስጥ መረጃን እንደገና በማስጀመር ላይ ስህተት.

ምንጭ: opennet.ru

አስተያየት ያክሉ