Ngaleupaskeun kinerja tinggi embedded DBMS libmdbx 0.10.4 sareng libfpta 0.3.9

Perpustakaan libmdbx 0.10.4 (MDBX) dileupaskeun kalayan palaksanaan database nilai konci anu dipasang kompak kinerja tinggi, sareng perpustakaan libfpta 0.3.9 (FPTA) anu aya hubunganana, anu ngalaksanakeun representasi data tabular kalayan indéks sekundér sareng komposit. di luhur MDBX. Duanana perpustakaan disebarkeun dina lisensi disatujuan OSI. Sadaya sistem operasi sareng arsitéktur ayeuna dirojong, kitu ogé Elbrus Rusia 2000.

Dina sajarahna, libmdbx mangrupikeun reworking jero tina LMDB DBMS sareng langkung unggul tibatan karuhunna dina réliabilitas, set fitur sareng kinerja. Dibandingkeun jeung LMDB, libmdbx nempatkeun loba tekenan kana kualitas kode, stabilitas API, nguji, sarta cék otomatis. Utiliti pikeun mariksa integritas struktur database sareng sababaraha kamampuan pamulihan disayogikeun.

Téknologi-wijaksana, libmdbx nawarkeun ACID, serialization robah kuat, sarta non-blocking maca kalawan skala linier sakuliah cores CPU. Compactification otomatis, manajemén ukuran database otomatis, sarta estimasi query rentang dirojong. Kusabab 2016, proyék parantos dibiayaan ku Positive Technologies sareng ti saprak 2017 parantos dianggo dina produkna.

libmdbx nawiskeun API C ++, ogé beungkeutan basa anu dirojong ku peminat pikeun Rust, Haskell, Python, NodeJS, Ruby, Go, sareng Nim. Pikeun libfpta, ngan ukur pedaran API anu sayogi pikeun umum dina bentuk file lulugu C/C++.

Inovasi utama, perbaikan sareng koréksi parantos ditambihan ti wartos sateuacana dina 9 Mei:

  • Aktipkeun ngawangun reproducible.
  • Ngalereskeun bug kusabab anu, dina kaayaan anu jarang pisan, loop / freeze tiasa lumangsung nalika komitmen transaksi. Masalahna diidentipikasi ku spesialis Téknologi Positif nalika nguji internal produk sorangan.
  • Tés parantos ningkat sareng skénario tés parantos dilegakeun pikeun mariksa sadaya kaayaan non-isomorphic anu tiasa dihontal tina tangkal halaman sareng eusi GC di jero pangkalan data.
  • Dina C ++ API, hiji tambahan "noexcept" geus dibereskeun, overloads tambahan geus ditambahkeun pikeun metoda "kursor :: mupus ()", palaksanaan buffers geus luput pamakéan "std :: string" pikeun mastikeun alignment. (relevan pikeun CLANG libstdc ++).
  • A regression dina kaca kotor spilling algoritma (selektif ejection kaca database robah) nu ieu manifested ku kasalahan MDBX_PROBLEM kaduga langka lamun ngarobah data dina transaksi badag geus ngaleungitkeun.
  • Tes phasing dilaksanakeun kalayan tambihan sababaraha pamariksaan pikeun mastikeun stabilitas upami aya karusakan anu dihaja dina pangkalan data.
  • Ngalereskeun peringatan minor UndefinedBehaviorSanitizer sareng Masalah Coverity Scan.
  • Maneuh mariksa bandéra internal anu luntur sareng henteu dianggo deui "P_DIRTY" dina halaman nested di jero gambar database anu diciptakeun ku vérsi perpustakaan anu langkung lami.
  • Dina skrip CMake, milarian komponén kompiler anu diperyogikeun pikeun LTO (optimasi link-waktos) parantos ningkat.
  • Jumlah maksimum pamaca simultaneous geus ngaronjat nepi ka 32767.
  • Ningkatkeun kinerja nalika nganggo Valgrind sareng AddressSanitizer.
  • Dina Windows, pamakéan rekursif SRW-konci nalika digawé dina modeu MDBX_NOTLS (tanpa ngagunakeun thread lokal gudang) geus ngaleungitkeun, generasi bootid geus dibereskeun lamun sistem waktos geus robah, deteksi WSL1 na WSL2 geus ningkat, sarta kamampuhan pikeun muka database on Plan 9 dipasang via DrvFS geus ditambahkeun.
  • Dina total, leuwih ti 160 parobahan dijieun pikeun 57 file, ~ 5000 garis ditambahkeun, ~ 2500 dihapus.

Abdi utamana hoyong hatur tim proyék Erigon (Ethereum ékosistem) pikeun pitulung maranéhanana dina nguji dina skenario pamakéan ekstrim. Éta penting yén dina lima bulan saprak sékrési libmdbx v0.10.0, kalayan volume database 1-2 TB dina unggal instalasi Erigon (dipaké dina 7% tina titik Ethereum), ngan tilu laporan korupsi database anu narima, sakabéh nu lumangsung alatan alesan éksternal, sarta teu kasalahan software: dina dua kasus cukang lantaranana nyaéta gagalna RAM, dina katilu kasalahan dina ngareset data dina konfigurasi husus tina subsistem gudang ngagunakeun BTRFS.

sumber: opennet.ru

Tambahkeun komentar