рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдЗрдореНрдмреЗрдбреЗрдб DBMS libmdbx 0.10.4 рд░ libfpta 0.3.9 рдХреЛ рд░рд┐рд▓реАрдЬ

libmdbx 0.10.4 (MDBX) рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдЗрдореНрдмреЗрдбреЗрдб рдХреБрдЮреНрдЬреА-рдорд╛рди рдбрд╛рдЯрд╛рдмреЗрд╕, рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд libfpta 0.3.9 (FPTA) рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд╛рде рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ рдорд╛рдзреНрдпрдорд┐рдХ рд░ рдХрдореНрдкреЛрдЬрд┐рдЯ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрдХреЛ рд╕рд╛рде рдбрд╛рдЯрд╛рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред MDBX рдХреЛ рд╢реАрд░реНрд╖рдорд╛ред рджреБрдмреИ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ OSI рд╕реНрд╡реАрдХреГрдд рдЗрдЬрд╛рдЬрддрдкрддреНрд░ рдЕрдиреНрддрд░реНрдЧрдд рд╡рд┐рддрд░рдг рдЧрд░рд┐рдиреНрдЫред рд╕рдмреИ рд╣рд╛рд▓рдХреЛ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╣рд░реВ рд╕рдорд░реНрдерд┐рдд рдЫрдиреН, рд╕рд╛рдереИ рд░реВрд╕реА Elbrus 2000ред

рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдкрдорд╛, libmdbx LMDB DBMS рдХреЛ рдЧрд╣рд┐рд░реЛ рдкреБрди: рдХрд╛рд░реНрдп рд╣реЛ рд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛, рд╕реБрд╡рд┐рдзрд╛ рд╕реЗрдЯ рд░ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рдпрд╕рдХреЛ рдкреВрд░реНрд╡рдЬ рднрдиреНрджрд╛ рдЙрдЪреНрдЪ рдЫред LMDB рдХреЛ рддреБрд▓рдирд╛рдорд╛, libmdbx рд▓реЗ рдХреЛрдб рдЧреБрдгрд╕реНрддрд░, API рд╕реНрдерд┐рд░рддрд╛, рдкрд░реАрдХреНрд╖рдг, рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬрд╛рдБрдЪрд╣рд░реВрдорд╛ рдзреЗрд░реИ рдЬреЛрдб рджрд┐рдиреНрдЫред рдХреЗрд╣рд┐ рд░рд┐рдХрднрд░реА рдХреНрд╖рдорддрд╛рд╣рд░реБ рд╕рдВрдЧ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдЦрдгреНрдбрддрд╛ рдЬрд╛рдБрдЪ рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдкреВрд░реНрддрд┐ рдЧрд░рд┐рдПрдХреЛ рдЫред

рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреА рдЕрдиреБрд╕рд╛рд░, libmdbx рд▓реЗ ACID, рдмрд▓рд┐рдпреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди, рд░ CPU рдХреЛрд░рд╣рд░реВрдорд╛ рд░реИрдЦрд┐рдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧрдХреЛ рд╕рд╛рде рдЧреИрд░-рдмреНрд▓рдХрд┐рдЩ рд░рд┐рдбрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рд╕реНрд╡рдд: рдХрдореНрдкреНрдпрд╛рдХреНрдЯрд┐рдлрд┐рдХреЗрд╢рди, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбрд╛рдЯрд╛рдмреЗрд╕ рдЖрдХрд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, рд░ рджрд╛рдпрд░рд╛ рдХреНрд╡реЗрд░реА рдЕрдиреБрдорд╛рди рд╕рдорд░реНрдерд┐рдд рдЫрдиреНред 2016 рджреЗрдЦрд┐, рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреАрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддреНрдд рдкреЛрд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ 2017 рджреЗрдЦрд┐ рдпрд╕рдХреЛ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫред

libmdbx рд▓реЗ C++ API, рд╕рд╛рдереИ Rust, Haskell, Python, NodeJS, Ruby, Go, рд░ Nim рдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрд╕рд╛рд╣реА-рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛ рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред libfpta рдХреЛ рд▓рд╛рдЧрд┐, рдХреЗрд╡рд▓ API рд╡рд┐рд╡рд░рдг C/C++ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓рдХреЛ рд░реВрдкрдорд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЫред

рдореЗ 9 рдорд╛ рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рдорд╛рдЪрд╛рд░ рдкрдЫрд┐ рдердкрд┐рдПрдХрд╛ рдкреНрд░рдореБрдЦ рдЖрд╡рд┐рд╖реНрдХрд╛рд░рд╣рд░реВ, рд╕реБрдзрд╛рд░рд╣рд░реВ рд░ рд╕реБрдзрд╛рд░рд╣рд░реВ:

  • рдкреБрди: рдЙрддреНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫред
  • рдПрдЙрдЯрд╛ рдмрдЧ рдлрд┐рдХреНрд╕ рдЧрд░рд┐рдпреЛ рдЬрд╕рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рдзреЗрд░реИ рджреБрд░реНрд▓рдн рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВрдорд╛, рд▓реЗрдирджреЗрди рдХрдорд┐рдЯрдХреЛ рдХреНрд░рдордорд╛ рд▓реБрдк/рдлреНрд░рд┐рдЬ рд╣реБрди рд╕рдХреНрдЫред рд╕рдорд╕реНрдпрд╛ рдкреЛрдЬрд┐рдЯрд┐рдн рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрд╣рд░реВрд▓реЗ рдЖрдлреНрдиреИ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрдХреЛ рдЖрдиреНрддрд░рд┐рдХ рдкрд░реАрдХреНрд╖рдгрдХреЛ рдХреНрд░рдордорд╛ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реЗрдХрд╛ рдерд┐рдПред
  • рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕реБрдзрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдбрд╛рдЯрд╛рдмреЗрд╕ рднрд┐рддреНрд░рдХреЛ рдкреГрд╖реНрда рд░реВрдЦ рд░ GC рд╕рд╛рдордЧреНрд░реАрд╣рд░реВрдХреЛ рд╕рдмреИ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЧреИрд░-рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • C++ API рдорд╛, рдЕрддрд┐рд░рд┐рдХреНрдд "noexcept" рдлрд┐рдХреНрд╕ рдЧрд░рд┐рдПрдХреЛ рдЫ, "рдХрд░реНрд╕рд░:: erase()" рд╡рд┐рдзрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрднрд░рд▓реЛрдбрд╣рд░реВ рдердкрд┐рдПрдХреЛ рдЫ, рдмрдлрд░рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рдкрдЩреНрдХреНрддрд┐рдмрджреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди "std::string" рдХреЛ рдкреНрд░рдпреЛрдЧрдмрд╛рдЯ рдЬреЛрдЧрд╛рдЗрдПрдХреЛ рдЫред (CLANG libstdc++ рдХрд╛ рд▓рд╛рдЧрд┐ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ)ред
  • рдлреЛрд╣реЛрд░ рдкреГрд╖реНрда рд╕реНрдкрд┐рд▓рд┐рдЩ рдПрд▓реНрдЧреЛрд░рд┐рджрдордорд╛ рд░рд┐рдЧреНрд░реЗрд╕рди (рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреГрд╖реНрдард╣рд░реВрдХреЛ рдЪрдпрдирд╛рддреНрдордХ рдЗрдЬреЗрдХреНрд╢рди) рдЬреБрди рдареВрд▓реЛ рд▓реЗрдирджреЗрдирд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрд╛ рджреБрд░реНрд▓рдн рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд MDBX_PROBLEM рддреНрд░реБрдЯрд┐рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрдЯ рднрдПрдХреЛ рдерд┐рдпреЛред
  • рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЬрд╛рдирд╛рдЬрд╛рдиреА рдХреНрд╖рддрд┐ рднрдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╕реНрдерд┐рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдзреЗрд░реИ рдЬрд╛рдБрдЪрд╣рд░реВ рдердкреЗрд░ рдЪрд░рдгрдмрджреНрдз рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
  • рдлрд┐рдХреНрд╕реНрдб рдорд╛рдЗрдирд░ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗрдирд┐рдЯрд╛рдЗрдЬрд░ рд░ рдХрднрд░рд┐рдЯреА рд╕реНрдХреНрдпрд╛рди рдореБрджреНрджрд╛рд╣рд░реВред
  • рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдЫрд╡рд┐рд╣рд░реВ рднрд┐рддреНрд░ рдиреЗрд╕реНрдЯреЗрдб рдкреГрд╖реНрдард╣рд░реВрдорд╛ рдкреБрд░рд╛рдиреЛ рд░ рдЕрдм рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХреЛ рдЖрдиреНрддрд░рд┐рдХ рдЭрдгреНрдбрд╛ "P_DIRTY" рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░рд┐рдпреЛред
  • CMake рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВрдорд╛, LTO (рд▓рд┐рдЩреНрдХ-рдЯрд╛рдЗрдо рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди) рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдХрдореНрдкрд╛рдЗрд▓рд░ рдШрдЯрдХрд╣рд░реВрдХреЛ рдЦреЛрдЬреА рд╕реБрдзрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • рдПрдХ рд╕рд╛рде рдкрд╛рдардХрд╣рд░реВрдХреЛ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ 32767 рдорд╛ рдмрдврд╛рдЗрдПрдХреЛ рдЫред
  • Valgrind рд░ Address Sanitizer рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдкреНрд░рджрд░реНрд╢рдиред
  • рд╡рд┐рдиреНрдбреЛрдЬрдорд╛, MDBX_NOTLS рдореЛрдбрдорд╛ рдХрд╛рдо рдЧрд░реНрджрд╛ (рдереНрд░реЗрдб рд╕реНрдерд╛рдиреАрдп рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА) SRW-рд▓рдХрдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рдпреЛрдЧ рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ, рдкреНрд░рдгрд╛рд▓реА рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЦрдгреНрдбрдорд╛ рдмреБрдЯрд┐рдб рдЬреЗрдиреЗрд░реЗрд╢рди рдлрд┐рдХреНрд╕ рдЧрд░рд┐рдПрдХреЛ рдЫ, WSL1 рд░ WSL2 рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕реБрдзрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рдХреНрд╖рдорддрд╛ред DrvFS рдорд╛рд░реНрдлрдд рдорд╛рдЙрдиреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдкреНрд▓рд╛рди 9 рдорд╛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН рдердкрд┐рдПрдХреЛ рдЫред
  • рдХреБрд▓рдорд╛, 160 рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ 57 рднрдиреНрджрд╛ рдмрдвреА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЧрд░рд┐рдпреЛ, ~ 5000 рд▓рд╛рдЗрдирд╣рд░реВ рдердкрд┐рдпреЛ, ~ 2500 рдореЗрдЯрд╛рдЗрдпреЛред

рдо рд╡рд┐рд╢реЗрд╖ рдЧрд░реА Erigon рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЯреЛрд▓реА (Ethereum рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо) рд▓рд╛рдИ рдЪрд░рдо рдкреНрд░рдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдорджреНрджрддрдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреБред рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ libmdbx v0.10.0 рдХреЛ рд░рд┐рд▓реАрдЬ рднрдПрдХреЛ рдкрд╛рдБрдЪ рдорд╣рд┐рдирд╛рдорд╛, рдкреНрд░рддреНрдпреЗрдХ рдПрд░рд┐рдЧрди рд╕реНрдерд╛рдкрдирд╛рдорд╛ 1-2 TB рдХреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рднреЛрд▓реНрдпреБрдордХреЛ рд╕рд╛рде (7% Ethereum рдиреЛрдбрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ), рдбрд╛рдЯрд╛рдмреЗрд╕ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░рдХреЛ рдХреЗрд╡рд▓ рддреАрди рд░рд┐рдкреЛрд░реНрдЯрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рднрдПрдХреЛ рдерд┐рдпреЛ, рд╕рдмреИ рдЬреБрди рдмрд╛рд╣реНрдп рдХрд╛рд░рдгрд▓реЗ рднрдПрдХреЛ рд╣реЛ, рд╕рдлреНрдЯрд╡реЗрдпрд░ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╣реЛрдЗрди: рджреБрдИрд╡рдЯрд╛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдХрд╛рд░рдг RAM рд╡рд┐рдлрд▓рддрд╛ рдерд┐рдпреЛ, рддреЗрд╕реНрд░реЛрдорд╛ BTRFS рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рднрдгреНрдбрд╛рд░рдг рдЙрдкрдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдбрд╛рдЯрд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрджрд╛ рддреНрд░реБрдЯрд┐ред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди