Rilis DBMS tertanam berkinerja tinggi libmdbx 0.11.3

Pustaka libmdbx 0.11.3 (MDBX) dirilis dengan implementasi database nilai kunci tertanam kompak berkinerja tinggi. Kode libmdbx dilisensikan di bawah Lisensi Publik OpenLDAP. Semua sistem operasi dan arsitektur saat ini didukung, serta Elbrus Rusia 2000. Pada akhir tahun 2021, libmdbx digunakan sebagai backend penyimpanan di dua klien Ethereum tercepat - Erigon dan β€œShark” baru, yang menurut tersedia informasi, adalah klien Ethereum dengan kinerja tertinggi.

Secara historis, libmdbx adalah pengerjaan ulang mendalam dari DBMS LMDB dan lebih unggul dari pendahulunya dalam hal keandalan, rangkaian fitur, dan kinerja. Dibandingkan dengan LMDB, libmdbx lebih menekankan pada kualitas kode, stabilitas API, pengujian, dan pemeriksaan otomatis. Utilitas untuk memeriksa integritas struktur database dengan beberapa kemampuan pemulihan disediakan.

Dari segi teknologi, libmdbx menawarkan ACID, serialisasi perubahan yang kuat, dan pembacaan non-pemblokiran dengan penskalaan linier di seluruh inti CPU. Pemadatan otomatis, manajemen ukuran database otomatis, dan estimasi rentang kueri didukung. Sejak tahun 2016, proyek ini didanai oleh Positive Technologies dan telah digunakan dalam produk-produknya sejak tahun 2017.

libmdbx menawarkan C++ API, serta binding bahasa yang didukung antusias untuk Rust, Haskell, Python, NodeJS, Ruby, Go, dan Nim.

Inovasi, perbaikan, dan koreksi besar ditambahkan sejak berita sebelumnya pada 11 Oktober:

  • C++ API dianggap siap digunakan.
  • Pembaruan data GC ketika melakukan transaksi besar telah dipercepat secara signifikan, yang sangat penting ketika menggunakan libmdbx di ekosistem Ethereum.
  • Tanda tangan internal format database telah diubah untuk mendukung pembaruan otomatis, yang sepenuhnya transparan bagi pengguna. Hal ini memungkinkan Anda menghilangkan pesan positif palsu tentang kerusakan database ketika versi perpustakaan yang sudah ketinggalan zaman digunakan untuk membaca transaksi yang dicatat oleh versi saat ini.
  • Menambahkan fungsi mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() dan mdbx_env_get_syncbytes(). Menambahkan dukungan untuk operasi MDBX_SET_UPPERBOUND.
  • Semua peringatan saat membangun dengan semua kompiler yang didukung dalam mode C++ 11/14/17/20 telah dihilangkan. Kompatibilitas dengan kompiler lama dipastikan: dentang mulai dari 3.9, gcc mulai dari 4.8, termasuk perakitan menggunakan cdevtoolset-9 untuk CentOS/RHEL 7.
  • Memperbaiki kemungkinan konflik halaman meta setelah beralih secara manual ke halaman meta tertentu menggunakan utilitas mdbx_chk.
  • Memperbaiki kesalahan MDBX_PROBLEM tak terduga yang dikembalikan saat menimpa halaman meta lama.
  • Memperbaiki pengembalian MDBX_NOTFOUND jika ada kecocokan yang tidak tepat saat memproses permintaan MDBX_GET_BOTH.
  • Memperbaiki kesalahan kompilasi di Linux karena tidak adanya file header dengan deskripsi antarmuka dengan kernel.
  • Memperbaiki konflik antara flag internal MDBX_SHRINK_ALLOWED dan opsi MDBX_ACCEDE.
  • Beberapa pemeriksaan penegasan yang tidak perlu telah dihilangkan.
  • Memperbaiki pengembalian MDBX_RESULT_TRUE yang tidak terduga dari fungsi mdbx_env_set_option().
  • Secara total, lebih dari 90 perubahan dilakukan pada 25 file, ~1300 baris ditambahkan, ~600 dihapus.

Sumber: opennet.ru

Tambah komentar