Rilis DBMS semat kinerja dhuwur libmdbx 0.10.4 lan libfpta 0.3.9

Pustaka libmdbx 0.10.4 (MDBX) dirilis kanthi implementasi database nilai kunci sing dipasang ing kinerja dhuwur, lan pustaka libfpta 0.3.9 (FPTA) sing gegandhengan, sing ngetrapake perwakilan tabel data kanthi indeks sekunder lan komposit. ing ndhuwur MDBX. Loro-lorone perpustakaan disebarake miturut lisensi sing disetujoni OSI. Kabeh sistem operasi lan arsitektur saiki didhukung, uga Elbrus Rusia 2000.

Secara historis, libmdbx minangka reworking jero saka LMDB DBMS lan luwih unggul tinimbang leluhure ing linuwih, set fitur lan kinerja. Dibandhingake karo LMDB, libmdbx menehi akeh penekanan ing kualitas kode, stabilitas API, tes, lan mriksa otomatis. A sarana kanggo mriksa integritas struktur database karo sawetara kapabilitas Recovery diwenehake.

Bijaksana teknologi, libmdbx nawakake ACID, serialisasi owah-owahan sing kuat, lan maca non-blocking kanthi skala linear ing inti CPU. Kompaktifikasi otomatis, manajemen ukuran basis data otomatis, lan estimasi pitakon kisaran didhukung. Wiwit 2016, proyek wis didanai dening Positive Technologies lan wiwit 2017 wis digunakake ing produke.

libmdbx nawakake API C ++, uga ikatan basa sing didhukung penggemar kanggo Rust, Haskell, Python, NodeJS, Ruby, Go, lan Nim. Kanggo libfpta, mung katrangan API sing kasedhiya kanggo umum ing wangun file header C/C++.

Inovasi utama, dandan lan koreksi ditambahake wiwit warta sadurunge tanggal 9 Mei:

  • Mbisakake mbangun reproducible.
  • Ndandani bug amarga, ing kahanan sing arang banget, loop / beku bisa kedadeyan sajrone transaksi. Masalah kasebut diidentifikasi dening spesialis Teknologi Positif sajrone tes internal produk dhewe.
  • Tes wis apik lan skenario tes wis ditambahi kanggo mriksa kabeh negara non-isomorphic saka wit kaca lan isi GC ing database.
  • Ing C ++ API, tambahan "noexcept" wis didandani, overloads tambahan wis ditambahake kanggo "kursor :: mbusak ()" cara, implementasine saka buffer wis diijini nggunakake "std :: string" kanggo mesthekake alignment. (relevan kanggo CLANG libstdc ++).
  • A regresi ing kaca reged spilling algoritma (selektif ejection saka kaca database diganti) sing dicethakakΓ© dening MDBX_PROBLEM kesalahan sing ora dikarepke langka nalika ngganti data ing transaksi ageng wis ngilangi.
  • Tes phasing ditindakake kanthi tambahan sawetara pemeriksaan kanggo njamin stabilitas yen ana karusakan sing disengaja ing database.
  • Ndandani bebaya cilik UndefinedBehaviorSanitizer lan Masalah Pindai Coverity.
  • Ndandani mriksa gendΓ©ra internal "P_DIRTY" sing wis lawas lan ora digunakake maneh ing kaca sing dipasang ing gambar database sing digawe dening versi perpustakaan sing luwih lawas.
  • Ing skrip CMake, panelusuran komponen compiler sing dibutuhake kanggo LTO (optimasi link-wektu) wis apik.
  • Jumlah maksimal maca simultan wis ditambah dadi 32767.
  • Kinerja sing luwih apik nalika nggunakake Valgrind lan AddressSanitizer.
  • Ing Windows, panggunaan rekursif SRW-lock nalika nggarap mode MDBX_NOTLS (tanpa nggunakake panyimpenan lokal thread) wis diilangi, generasi bootid wis didandani yen wektu sistem wis diganti, deteksi WSL1 lan WSL2 wis apik, lan kemampuan kanggo mbukak database ing Plan 9 dipasang liwat DrvFS wis ditambahake.
  • Total, luwih saka 160 owah-owahan digawe kanggo 57 file, ~5000 baris ditambahake, ~2500 dibusak.

Aku luwih seneng matur nuwun marang tim proyek Erigon (ekosistem Ethereum) kanggo pitulungan ing tes ing skenario panggunaan ekstrem. Penting yen ing limang sasi wiwit rilis libmdbx v0.10.0, kanthi volume database 1-2 TB ing saben instalasi Erigon (digunakake ing 7% simpul Ethereum), mung telung laporan korupsi database sing ditampa, kabeh sing kedadeyan amarga alasan eksternal, lan dudu kesalahan piranti lunak: ing rong kasus panyebabe yaiku kegagalan RAM, ing pihak katelu kesalahan ngreset data ing konfigurasi tartamtu saka subsistem panyimpenan nggunakake BTRFS.

Source: opennet.ru

Add a comment